Dobra wiadomość dla fanów Postgresa. Najnowsza wersja bazy danych PostgreSQL jest już dostępna. Oferuje najnowocześniejsze standardy bezpieczeństwa i stabilności. W tym artykule pochylimy się nad zmianami w PostgreSQL 15.2.
Dobra wiadomość dla fanów Postgresa. Najnowsza wersja bazy danych PostgreSQL jest już dostępna. Oferuje najnowocześniejsze standardy bezpieczeństwa i stabilności. W tym artykule pochylimy się nad zmianami w PostgreSQL 15.2.
Na początku należy wspomnieć, iż naprawiona została luka bezpieczeństwa CVE-2022-41862 występująca w od 12 do 15 wersji PostgreSQL. Umożliwiała ona naruszenie danych podczas łączenia się ze zmodyfikowanym serwerem przy pomocy protokołu Kerberos. Wszystkiemu miał być winny odpowiednio spreparowany ciąg znaków wysyłany przez nieuwierzytelniony serwer. Przez to podczas ustanawiania szyfrowania transportowego Kerberos libpq czytał zbyt dużo danych z pamięci podręcznej. Zespół PostgreSQL oświadcza, że luka ta nie była zagrożeniem w przypadku wyłączenia opcji gssencmode
lub po prostu braku pamięci podręcznej poświadczeń Kerberosa.
Zmiany w pigułce
W ostatnich miesiącach zespół Postgresa naprawił ponad 60 błędów. Zmiany dotyczą przede wszystkim poprawek do MERGE
, komend w psql
czy poprawnego generowania statystyk. W wersji 15.2 zostały również zoptymalizowane kluczowe komponenty pomocne przy replikacji bazy. Teraz replikowanie z włączoną opcją hot_standby
jest szybsze. Oprócz tego dodane zostały nowe funkcjonalności, takie jak przerwanie zapytań typu full text search
czy dodanie zapytaniu WITH RECURSIVE ... CYCLE
możliwości dostępu do kolumny wynikowej SET
. Pełna lista zmian, wraz z ich oryginalnymi opisami i autorami, znajduje się w nagłówku „Szczegółowe zmiany”.
Wsparcie dla poprzednich wersji
Zanim przedstawimy szczegółowe zmiany dotyczące PostgreSQL 15.2, warto wspomnieć, iż zespół deweloperów Postgresa pamięta o starszych wersjach swojej bazy danych. Zatem większość zmian, o których dziś mówimy, ma swoje odpowiedniki w wersjach od 11 do 14. Przypominamy również, że wsparcie dla baz danych PostgreSQL 10 zostało zakończone w listopadzie 2022 roku. W związku z tym warto rozważyć kwestię upgrade’u. W tym celu polecamy zapoznać się z naszym artykułem poświęconym temu zagadnieniu.
Szczegółowe zmiany
Autorzy poprawek, tworząc prośbę o ich wcielenie do PostgreSQL, mają za zadanie wypełnić formularz zgłoszeniowy, w którym zawarta jest informacja na temat wprowadzonych przez nich zmian. Formularz zawiera takie pola jak: „What the patch does in a short paragraph”, czyli w kilku słowach, jaka zmiana została wprowadzona, a także „how to use the new feature” oraz „effect your patch has on performance”. Te ostatnie można wspólnie określić mianem dodatkowych informacji na temat zmian. W poniższej tabeli znajdują się oryginalne wpisy autorów.
Serwer
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Record and check the collation version of each database |
This feature is designed to detect collation version changes to avoid index corruption. Function pg_database_collation_actual_version() reports the underlying operating system collation version, and ALTER DATABASE … REFRESH sets the recorded database collation version to match the operating system collation version. |
Peter Eisentraut |
Allow ICU collations to be set as the default for clusters and databases |
Previously, only libc-based collations could be selected at the cluster and database levels. ICU collations could only be used via explicit COLLATE clauses. |
Peter Eisentraut |
Add system view pg_ident_file_mappings to report pg_ident.conf information |
– |
Julien Rouhaud |
Serwer – partycjonowanie
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Improve planning time for queries referencing partitioned tables |
This change helps when only a few of many partitions are relevant. |
David Rowley |
Allow ordered scans of partitions to avoid sorting in more cases |
Previously, a partitioned table with a DEFAULT partition or a LIST partition containing multiple values could not be used for ordered partition scans. Now they can be used if such partitions are pruned during planning. |
David Rowley |
Improve foreign key behavior of updates on partitioned tables that move rows between partitions |
Previously, such updates ran a delete action on the source partition and an insert action on the target partition. PostgreSQL will now run an update action on the partition root, providing cleaner semantics. |
Amit Langote |
Allow CLUSTER on partitioned tables |
– |
Justin Pryzby |
Fix ALTER TRIGGER RENAME on partitioned tables to properly rename triggers on all partitions |
Also prohibit cloned triggers from being renamed. |
Arne Roland, Álvaro Herrera |
Serwer – indeksy
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow btree indexes on system and TOAST tables to efficiently store duplicates |
Previously de-duplication was disabled for these types of indexes. |
Peter Geoghegan |
Improve lookup performance of GiST indexes that were built using sorting |
– |
Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin |
Allow unique constraints and indexes to treat NULL values as not distinct |
Previously NULL entries were always treated as distinct values, but this can now be changed by creating constraints and indexes using UNIQUE NULLS NOT DISTINCT. |
Peter Eisentraut |
Allow the ^@ starts-with operator and the starts_with() function to use btree indexes if using the C collation |
Previously these could only use SP-GiST indexes. |
Tom Lane |
Serwer – optymalizacja
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow extended statistics to record statistics for a parent with all its children |
Regular statistics already tracked parent and parent-plus-all-children statistics separately. |
Tomas Vondra, Justin Pryzby |
Add server variable recursive_worktable_factor to allow the user to specify the expected size of the working table of a recursive query |
– |
Simon Riggs |
Serwer – ogólna wydajność
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow hash lookup for NOT IN clauses with many constants |
Previously the code always sequentially scanned the list of values. |
David Rowley, James Coleman |
Allow SELECT DISTINCT to be parallelized |
– |
David Rowley |
Speed up encoding validation of UTF-8 text by processing 16 bytes at a time |
This will improve text-heavy operations like COPY FROM. |
John Naylor, Heikki Linnakangas |
Improve performance for sorts that exceed work_mem |
When the sort data no longer fits in work_mem, switch to a batch sorting algorithm that uses more output streams than before. |
Heikki Linnakangas |
Improve performance and reduce memory consumption of in-memory sorts |
– |
Ronan Dunklau, David Rowley, Thomas Munro, John Naylor |
Allow WAL full page writes to use LZ4 and Zstandard compression |
This is controlled by the wal_compression server setting. |
Andrey Borodin, Justin Pryzby |
Add support for writing WAL using direct I/O on macOS |
This only works if max_wal_senders = 0 and wal_level = minimal. |
Thomas Munro |
Allow vacuum to be more aggressive in setting the oldest frozen and multi transaction id |
– |
Peter Geoghegan |
Allow a query referencing multiple foreign tables to perform parallel foreign table scans in more cases |
– |
Andrey Lepikhov, Etsuro Fujita |
Improve the performance of window functions that use row_number(), rank(), dense_rank() and count() |
– |
David Rowley |
Improve the performance of spinlocks on high-core-count ARM64 systems |
– |
Geoffrey Blake |
Serwer – monitorowanie
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Enable default logging of checkpoints and slow autovacuum operations |
This changes the default of log_checkpoints to on and that of log_autovacuum_min_duration to 10 minutes. This will cause even an idle server to generate some log output, which might cause problems on resource-constrained servers without log file rotation. These defaults should be changed in such cases. |
Bharath Rupireddy |
Generate progress messages in the server log during slow server starts |
The messages report the cause of the delay. The time interval for notification is controlled by the new server variable log_startup_progress_interval. |
Nitin Jadhav, Robert Haas |
Store cumulative statistics system data in shared memory |
Previously this data was sent to a statistics collector process via UDP packets, and could only be read by sessions after transferring it via the file system. There is no longer a separate statistics collector process. |
Kyotaro Horiguchi, Andres Freund, Melanie Plageman |
Add additional information to VACUUM VERBOSE and autovacuum logging messages |
– |
Peter Geoghegan |
Add EXPLAIN (BUFFERS) output for temporary file block I/O |
– |
Masahiko Sawada |
Allow log output in JSON format |
The new setting is log_destination = jsonlog. |
Sehrope Sarkuni, Michael Paquier |
Allow pg_stat_reset_single_table_counters() to reset the counters of relations shared across all databases |
– |
Sadhuprasad Patro |
Add wait events for local shell commands |
The new wait events are used when calling archive_command, archive_cleanup_command, restore_command and recovery_end_command. |
Fujii Masao |
Serwer – dostępy
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow table accesses done by a view to optionally be controlled by privileges of the view’s caller |
Previously, view accesses were always treated as being done by the view’s owner. That’s still the default. |
Christoph Heiss |
Allow members of the pg_write_server_files predefined role to perform server-side base backups |
Previously only superusers could perform such backups. |
Dagfinn Ilmari Mannsåker |
Allow GRANT to grant permissions to change individual server variables via SET and ALTER SYSTEM |
The new function has_parameter_privilege() reports on this privilege. |
Mark Dilger |
Add predefined role pg_checkpoint that allows members to run CHECKPOINT |
Previously checkpoints could only be run by superusers. |
Jeff Davis |
Allow members of the pg_read_all_stats predefined role to access the views pg_backend_memory_contexts and pg_shmem_allocations |
Previously these views could only be accessed by superusers. |
Bharath Rupireddy |
Allow GRANT to grant permissions on pg_log_backend_memory_contexts() |
Previously this function could only be run by superusers. |
Jeff Davis |
Serwer – konfiguracja
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add server variable shared_memory_size to report the size of allocated shared memory |
– |
Nathan Bossart |
Add server variable shared_memory_size_in_huge_pages to report the number of huge memory pages required |
This is only supported on Linux. |
Nathan Bossart |
Honor server variable shared_preload_libraries in single-user mode |
This change supports use of shared_preload_libraries to load custom access methods and WAL resource managers, which would be essential for database access even in single-user mode. |
Jeff Davis |
On Solaris, make the default setting of dynamic_shared_memory_type be sysv |
The previous default choice, posix, can result in spurious failures on this platform. |
Thomas Munro |
Allow postgres -C to properly report runtime-computed values |
Previously runtime-computed values data_checksums, wal_segment_size, and data_directory_mode would report values that would not be accurate on the running server. However, this does not work on a running server. |
Nathan Bossart |
Replikacja i przywracanie
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add support for LZ4 and Zstandard compression of server-side base backups |
– |
Jeevan Ladhe, Robert Haas |
Run the checkpointer and bgwriter processes during crash recovery |
This helps to speed up long crash recoveries. |
Thomas Munro |
Allow WAL processing to pre-fetch needed file contents |
This is controlled by the server variable recovery_prefetch. |
Thomas Munro |
Allow archiving via loadable modules |
Previously, archiving was only done by calling shell commands. The new server variable archive_library can be set to specify a library to be called for archiving. |
Nathan Bossart |
No longer require IDENTIFY_SYSTEM to be run before START_REPLICATION |
– |
Jeff Davis |
Replikacja i przywracanie – replikacja logiczna
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow publication of all tables in a schema |
For example, this syntax is now supported: CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2. ALTER PUBLICATION supports a similar syntax. Tables added later to the listed schemas will also be replicated. |
Vignesh C, Hou Zhijie, Amit Kapila |
Allow publication content to be filtered using a WHERE clause |
Rows not satisfying the WHERE clause are not published. |
Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila |
Allow publication content to be restricted to specific columns |
– |
Tomas Vondra, Álvaro Herrera, Rahila Syed |
Allow skipping of transactions on a subscriber using ALTER SUBSCRIPTION … SKIP |
– |
Masahiko Sawada |
Add support for prepared (two-phase) transactions to logical replication |
The new CREATE_REPLICATION_SLOT option is called TWO_PHASE. pg_recvlogical now supports a new –two-phase option during slot creation. |
Peter Smith, Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich |
Prevent logical replication of empty transactions |
Previously, publishers would send empty transactions to subscribers if subscribed tables were not modified. |
Ajin Cherian, Hou Zhijie, Euler Taveira |
Add SQL functions to monitor the directory contents of logical replication slots |
The new functions are pg_ls_logicalsnapdir(), pg_ls_logicalmapdir(), and pg_ls_replslotdir(). They can be run by members of the predefined pg_monitor role. |
Bharath Rupireddy |
Allow subscribers to stop the application of logical replication changes on error |
This is enabled with the subscriber option disable_on_error and avoids possible infinite error loops during stream application. |
Osumi Takamichi, Mark Dilger |
Adjust subscriber server variables to match the publisher so datetime and float8 values are interpreted consistently |
Some publishers might be relying on inconsistent behavior. |
Japin Li |
Add system view pg_stat_subscription_stats to report on subscriber activity |
The new function pg_stat_reset_subscription_stats() allows resetting these statistics counters. |
Masahiko Sawada |
Suppress duplicate entries in the pg_publication_tables system view |
In some cases a partition could appear more than once. |
Hou Zhijie |
Komendy użytkowe
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add SQL MERGE command to adjust one table to match another |
This is similar to INSERT … ON CONFLICT but more batch-oriented. |
Simon Riggs, Pavan Deolasee, Álvaro Herrera, Amit Langote |
Add support for HEADER option in COPY text format |
The new option causes the column names to be output, and optionally verified on input. |
Rémi Lapeyre |
Add new WAL-logged method for database creation |
This is the new default method for copying the template database, as it avoids the need for checkpoints during database creation. However, it might be slow if the template database is large, so the old method is still available. |
Dilip Kumar |
Allow CREATE DATABASE to set the database OID |
– |
Shruthi Gowda, Antonin Houska |
Prevent DROP DATABASE, DROP TABLESPACE, and ALTER DATABASE SET TABLESPACE from occasionally failing during concurrent use on Windows |
– |
Thomas Munro |
Allow foreign key ON DELETE SET actions to affect only specified columns |
Previously, all of the columns in the foreign key were always affected. |
Paul Martinez |
Allow ALTER TABLE to modify a table’s ACCESS METHOD |
– |
Justin Pryzby, Jeff Davis |
Properly call object access hooks when ALTER TABLE causes table rewrites |
– |
Michael Paquier |
Allow creation of unlogged sequences |
– |
Peter Eisentraut |
Track dependencies on individual columns in the results of functions returning composite types |
Previously, if a view or rule contained a reference to a specific column within the result of a composite-returning function, that was not noted as a dependency; the view or rule was only considered to depend on the composite type as a whole. This meant that dropping the individual column would be allowed, causing problems in later use of the view or rule. The column-level dependency is now also noted, so that dropping such a column will be rejected unless the view is changed or dropped. |
Tom Lane |
Typy danych
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow the scale of a numeric value to be negative, or greater than its precision |
This allows rounding of values to the left of the decimal point, e.g., ‘1234’::numeric(4, -2) returns 1200. |
Dean Rasheed, Tom Lane |
Improve overflow detection when casting values to interval |
– |
Joe Koshakow |
Change the I/O format of type “char” for non-ASCII characters |
– |
Tom Lane |
Update the display width information of modern Unicode characters, like emojis |
Also update from Unicode 5.0 to 14.0.0. There is now an automated way to keep Postgres updated with Unicode releases. |
Jacob Champion |
Funkcje
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add multirange input to range_agg() |
– |
Paul Jungwirth |
Add MIN() and MAX() aggregates for the xid8 data type |
– |
Ken Kato |
Add regular expression functions for compatibility with other relational systems |
The new functions are regexp_count(), regexp_instr(), regexp_like(), and regexp_substr(). Some new optional arguments were also added to regexp_replace(). |
Gilles Darold, Tom Lane |
Add the ability to compute the distance between polygons |
– |
Tom Lane |
Add to_char() format codes of, tzh, and tzm |
The upper-case equivalents of these were already supported. |
Nitin Jadhav |
When applying AT TIME ZONE to a time with time zone value, use the transaction start time rather than wall clock time to determine whether DST applies |
This allows the conversion to be considered stable rather than volatile, and it saves a kernel call per invocation. |
Aleksander Alekseev, Tom Lane |
Ignore NULL array elements in ts_delete() and setweight() functions with array arguments |
These functions effectively ignore empty-string array elements (since those could never match a valid lexeme). It seems consistent to let them ignore NULL elements too, instead of failing. |
Jean-Christophe Arnu |
Add support for petabyte units to pg_size_pretty() and pg_size_bytes() |
– |
David Christensen |
Change pg_event_trigger_ddl_commands() to output references to other sessions’ temporary schemas using the actual schema name |
Previously this function reported all temporary schemas as pg_temp, but it’s misleading to use that for any but the current session’s temporary schema. |
Tom Lane |
PL/pgSQL
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Fix enforcement of PL/pgSQL variable CONSTANT markings |
Previously, a variable could be used as a CALL output parameter or refcursor OPEN variable despite being marked CONSTANT. |
Tom Lane |
libpq
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow IP address matching against a server certificate’s Subject Alternative Name |
– |
Jacob Champion |
Allow PQsslAttribute() to report the SSL library type without requiring a libpq connection |
– |
Jacob Champion |
Change query cancellations sent by the client to use the same TCP settings as normal client connections |
This allows configured TCP timeouts to apply to query cancel connections. |
Jelte Fennema |
Prevent libpq event callback failures from forcing an error result |
– |
Tom Lane |
Aplikacje klienta
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow pgbench to retry after serialization and deadlock failures |
– |
Yugo Nagata, Marina Polyakova |
Aplikacje klienta – psql
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Improve performance of psql’s \copy command, by sending data in larger chunks |
– |
Heikki Linnakangas |
Add \dconfig command to report server variables |
This is similar to the server-side SHOW command, but it can process patterns to show multiple variables conveniently. |
Mark Dilger, Tom Lane |
Add \getenv command to assign the value of an environment variable to a psql variable |
– |
Tom Lane |
Add + option to the \lo_list and \dl commands to show large-object privileges |
– |
Pavel Luzanov |
Add a pager option for the \watch command |
This is only supported on Unix and is controlled by the PSQL_WATCH_PAGER environment variable. |
Pavel Stehule, Thomas Munro |
Make psql include intra-query double-hyphen comments in queries sent to the server |
Previously such comments were removed from the query before being sent. Double-hyphen comments that are before any query text are not sent, and are not recorded as separate psql history entries. |
Tom Lane, Greg Nancarrow |
Adjust psql so that Readline’s meta-# command will insert a double-hyphen comment marker |
Previously a pound marker was inserted, unless the user had taken the trouble to configure a non-default comment marker. |
Tom Lane |
Make psql output all results when multiple queries are passed to the server at once |
Previously, only the last query result was displayed. The old behavior can be restored by setting the SHOW_ALL_RESULTS psql variable to off. |
Fabien Coelho |
After an error is detected in –single-transaction mode, change the final COMMIT command to ROLLBACK only if ON_ERROR_STOP is set |
Previously, detection of an error in a -c command or -f script file would lead to issuing ROLLBACK at the end, regardless of the value of ON_ERROR_STOP. |
Michael Paquier |
Improve psql’s tab completion |
– |
Shinya Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa, Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro Herrera, Tom Lane, Masahiko Sawada |
Limit support of psql’s backslash commands to servers running PostgreSQL 9.2 or later |
Remove code that was only used when running with an older server. Commands that do not require any version-specific adjustments compared to 9.2 will still work. |
Tom Lane |
Aplikacje klienta – pg_dump
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Make pg_dump dump public schema ownership changes and security labels |
– |
Noah Misch |
Improve performance of dumping databases with many objects |
This will also improve the performance of pg_upgrade. |
Tom Lane |
Improve parallel pg_dump’s performance for tables with large TOAST tables |
– |
Tom Lane |
Add dump/restore option –no-table-access-method to force restore to only use the default table access method |
– |
Justin Pryzby |
Limit support of pg_dump and pg_dumpall to servers running PostgreSQL 9.2 or later |
– |
Tom Lane |
Aplikacje serwera
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add new pg_basebackup option –target to control the base backup location |
The new options are server to write the backup locally and blackhole to discard the backup (for testing). |
Robert Haas |
Allow pg_basebackup to do server-side gzip, LZ4, and Zstandard compression and client-side LZ4 and Zstandard compression of base backup files |
Client-side gzip compression was already supported. |
Dipesh Pandit, Jeevan Ladhe |
Allow pg_basebackup to compress on the server side and decompress on the client side before storage |
This is accomplished by specifying compression on the server side and plain output format. |
Dipesh Pandit |
Allow pg_basebackup’s –compress option to control the compression location (server or client), compression method, and compression options |
– |
Michael Paquier, Robert Haas |
Add the LZ4 compression method to pg_receivewal |
This is enabled via –compress=lz4 and requires binaries to be built using –with-lz4. |
Georgios Kokolatos |
Add additional capabilities to pg_receivewal’s –compress option |
– |
Georgios Kokolatos |
Improve pg_receivewal’s ability to restart at the proper WAL location |
Previously, pg_receivewal would start based on the WAL file stored in the local archive directory, or at the sending server’s current WAL flush location. With this change, if the sending server is running Postgres 15 or later, the local archive directory is empty, and a replication slot is specified, the replication slot’s restart point will be used. |
Ronan Dunklau |
Add pg_rewind option –config-file to simplify use when server configuration files are stored outside the data directory |
– |
Gunnar Bluth |
Aplikacje serwera – pg_upgrade
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Store pg_upgrade’s log and temporary files in a subdirectory of the new cluster called pg_upgrade_output.d |
Previously such files were left in the current directory, requiring manual cleanup. Now they are automatically removed on successful completion of pg_upgrade. |
Justin Pryzby |
Disable default status reporting during pg_upgrade operation if the output is not a terminal |
The status reporting output can be enabled for non-tty usage by using –verbose. |
Andres Freund |
Make pg_upgrade report all databases with invalid connection settings |
Previously only the first database with an invalid connection setting was reported. |
Jeevan Ladhe |
Make pg_upgrade preserve tablespace and database OIDs, as well as relation relfilenode numbers |
– |
Shruthi Gowda, Antonin Houska |
Add a –no-sync option to pg_upgrade |
This is recommended only for testing. |
Michael Paquier |
Limit support of pg_upgrade to old servers running PostgreSQL 9.2 or later |
– |
Tom Lane |
Aplikacje serwera – pg_waldump
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow pg_waldump output to be filtered by relation file node, block number, fork number, and full page images |
– |
David Christensen, Thomas Munro |
Make pg_waldump report statistics before an interrupted exit |
For example, issuing a control-C in a terminal running pg_waldump –stats –follow will report the current statistics before exiting. This does not work on Windows. |
Bharath Rupireddy |
Improve descriptions of some transaction WAL records reported by pg_waldump |
– |
Masahiko Sawada, Michael Paquier |
Allow pg_waldump to dump information about multiple resource managers |
This is enabled by specifying the –rmgr option multiple times. |
Heikki Linnakangas |
Dokumentacja
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add documentation for pg_encoding_to_char() and pg_char_to_encoding() |
– |
Ian Lawrence Barwick |
Document the ^@ starts-with operator |
– |
Tom Lane |
Kod źródłowy
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Add support for continuous integration testing using cirrus-ci |
– |
Andres Freund, Thomas Munro, Melanie Plageman |
Add configure option –with-zstd to enable Zstandard builds |
– |
Jeevan Ladhe, Robert Haas, Michael Paquier |
Add an ABI identifier field to the magic block in loadable libraries, allowing non-community PostgreSQL distributions to identify libraries that are not compatible with other builds |
An ABI field mismatch will generate an error at load time. |
Peter Eisentraut |
Create a new pg_type.typcategory value for “char” |
Some other internal-use-only types have also been assigned to this category. |
Tom Lane |
Add new protocol message TARGET to specify a new COPY method to be used for base backups |
pg_basebackup now uses this method. |
Robert Haas |
Add new protocol message COMPRESSION and COMPRESSION_DETAIL to specify the compression method and options |
– |
Robert Haas |
Remove server support for old BASE_BACKUP command syntax and base backup protocol |
– |
Robert Haas |
Add support for extensions to set custom backup targets |
– |
Robert Haas |
Allow extensions to define custom WAL resource managers |
– |
Jeff Davis |
Add function pg_settings_get_flags() to get the flags of server variables |
– |
Justin Pryzby |
On Windows, export all the server’s global variables using PGDLLIMPORT markers |
Previously, only specific variables were accessible to extensions on Windows. |
Robert Haas |
Require GNU make version 3.81 or later to build PostgreSQL |
– |
Tom Lane |
Require OpenSSL to build the pgcrypto extension |
– |
Peter Eisentraut |
Require Perl version 5.8.3 or later |
– |
Dagfinn Ilmari Mannsåker |
Require Python version 3.2 or later |
– |
Andres Freund |
Dodatkowe moduły
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow amcheck to check sequences |
– |
Mark Dilger |
Improve amcheck sanity checks for TOAST tables |
– |
Mark Dilger |
Add new module basebackup_to_shell as an example of a custom backup target |
– |
Robert Haas |
Add new module basic_archive as an example of performing archiving via a library |
– |
Nathan Bossart |
Allow btree_gist indexes on boolean columns |
These can be used for exclusion constraints. |
Emre Hasegeli |
Fix pageinspect’s page_header() to handle 32-kilobyte page sizes |
Previously, improper negative values could be returned in certain cases. |
Quan Zongliang |
Add counters for temporary file block I/O to pg_stat_statements |
– |
Masahiko Sawada |
Add JIT counters to pg_stat_statements |
– |
Magnus Hagander |
Add new module pg_walinspect |
This gives SQL-level output similar to pg_waldump. |
Bharath Rupireddy |
Indicate the permissive/enforcing state in sepgsql log messages |
– |
Dave Page |
Dodatkowe moduły – postgres_fdw
Zmiana |
Dodatkowe informacje |
Autor/Autorzy |
Allow postgres_fdw to push down CASE expressions |
– |
Alexander Pyhalov |
Add server variable postgres_fdw.application_name to control the application name of postgres_fdw connections |
Previously the remote session’s application_name could only be set on the remote server or via a postgres_fdw connection specification. postgres_fdw.application_name supports some escape sequences for customization, making it easier to tell such connections apart on the remote server. |
Hayato Kuroda |
Allow parallel commit on postgres_fdw servers |
This is enabled with the CREATE SERVER option parallel_commit. |
Etsuro Fujita |
Podsumowanie
Patrząc na ciągły rozwój i dbałość o kwestie bezpieczeństwa na najwyższym poziomie, możemy być spokojni o przyszłość PostgreSQL. Natomiast osoby, którym nie wystarczają możliwości samego Postgresa, zachęcamy do zapoznania się z platformą bazodanową EuroDB, której funkcje znacząco rozszerzają standardowe możliwości PostgreSQL. EuroDB jest w pełni kompatybilne z PostgreSQL i oferuje profesjonalne wsparcie techniczne dla użytkowników tego silnika bazodanowego. To idealne narzędzie dla każdego administratora baz danych.