E.9. Release 15
Release date: 2022-10-13
PostgreSQL 15 contains many new features and enhancements, including:
Support for the SQL
Selective publication of tables' contents within logical replication publications, through the ability to specify column lists and row filter conditions.
More options for compression, including support for Zstandard (zstd) compression. This includes support for performing compression on the server side during pg_basebackup.
Support for structured server log output using the JSON format.
Performance improvements, particularly for in-memory and on-disk sorting.
The above items and other new features of PostgreSQL 15 are explained in more detail in the sections below.
E.9.2. Migration to Version 15
A dump/restore using pg_dumpall or use of pg_upgrade or logical replication is required for those wishing to migrate data from any previous release. See Section 17.6 for general information on migrating to new major releases.
Version 15 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:
PUBLICcreation permission on the
publicschema (Noah Misch)
The new default is one of the secure schema usage patterns that Section 5.9.6 has recommended since the security release for CVE-2018-1058. The change applies to new database clusters and to newly-created databases in existing clusters. Upgrading a cluster or restoring a database dump will preserve
public's existing permissions.
For existing databases, especially those having multiple users, consider revoking
CREATEpermission on the
publicschema to adopt this new default. For new databases having no need to defend against insider threats, granting
CREATEpermission will yield the behavior of prior releases.
Change the owner of the
publicschema to be the new
pg_database_ownerrole (Noah Misch)
This allows each database's owner to have ownership privileges on the
publicschema within their database. Previously it was owned by the bootstrap superuser, so that non-superuser database owners could not do anything with it.
This change applies to new database clusters and to newly-created databases in existing clusters. Upgrading a cluster or restoring a database dump will preserve
public's existing ownership specification.
Remove long-deprecated exclusive backup mode (David Steele, Nathan Bossart)
If the database server stops abruptly while in this mode, the server could fail to start. The non-exclusive backup mode is considered superior for all purposes. Functions
pg_stop_backup()have been renamed to
pg_backup_stop(), and the functions
pg_is_in_backup()have been removed.
hash_mem_multiplierdefault to 2.0 (Peter Geoghegan)
This allows query hash operations to use more
work_memmemory than other operations.
Remove server-side language
plpython2uand generic Python language
Python 2.x is no longer supported. While the original intent of
plpythonuwas that it could eventually refer to
plpython3u, changing it now seems more likely to cause problems than solve them, so it's just been removed.
Generate an error if
array_to_tsvector()is passed an empty-string array element (Jean-Christophe Arnu)
This is prohibited because lexemes should never be empty. Users of previous Postgres releases should verify that no empty lexemes are stored because they can lead to dump/restore failures and inconsistent results.
Generate an error when
chr()is supplied with a negative argument (Peter Eisentraut)
CREATE OR REPLACE VIEWfrom changing the collation of an output column (Tom Lane)
Disallow zero-length Unicode identifiers, e.g.,
Non-Unicode zero-length identifiers were already disallowed.
Prevent numeric literals from having non-numeric trailing characters (Peter Eisentraut)
Previously, query text like
123abcwould be interpreted as
123followed by a separate token
Adjust JSON numeric literal processing to match the SQL/JSON-standard (Peter Eisentraut)
This accepts numeric formats like
1., and disallows trailing junk after numeric literals, like
intervalinput provides a fractional value for a unit greater than months, round to the nearest month (Bruce Momjian)
For example, convert
2 years, not
1 year 11 monthsas before.
Improve consistency of
intervalparsing with trailing periods (Tom Lane)
Numbers with trailing periods were rejected on some platforms.
intervaloutput function as stable, not immutable, since it depends on
This will, for example, cause creation of indexes relying on the text output of
intervalvalues to fail.
Detect integer overflow in interval justification functions (Joe Koshakow)
The affected functions are
Change the I/O format of type
"char"for non-ASCII characters (Tom Lane)
Bytes with the high bit set are now output as a backslash and three octal digits, to avoid encoding issues.
Remove the default
ADMIN OPTIONprivilege a login role has on its own role membership (Robert Haas)
Previously, a login role could add/remove members of its own role, even without
Allow logical replication to run as the owner of the subscription (Mark Dilger)
Because row-level security policies are not checked, only superusers, roles with
bypassrls, and table owners can replicate into tables with row-level security policies.
DELETElogical replication operations on tables where the subscription owner does not have
SELECTpermission on the table (Jeff Davis)
DELETEcommands typically involve reading the table as well, so require the subscription owner to have table
EXPLAINreferences the session's temporary object schema, refer to it as
Previously the actual schema name was reported, leading to inconsistencies across sessions.
pg_statio_all_tablesto sum values for the rare case of TOAST tables with multiple indexes (Andrei Zubkov)
Previously such cases would show one row for each index.
Disallow setting custom options that match the name of an installed extension, but are not one of the extension's declared variables (Florin Irion, Tom Lane)
This change causes any such pre-existing variables to be deleted during extension load, and then prevents new ones from being created later in the session. The intent is to prevent confusion about whether a variable is associated with an extension or not.
Remove obsolete server variable
stats_temp_directory(Andres Freund, Kyotaro Horiguchi)
Improve the algorithm used to compute
This will cause
random()'s results to differ from what was emitted by prior versions, even for the same seed value.
PQsendQuery()function is no longer supported in pipeline mode (Álvaro Herrera)
Applications that are using that combination will need to be modified to use
On non-Windows platforms, consult the
HOMEenvironment variable to find the user's home directory (Anders Kaseorg)
HOMEis empty or unset, fall back to the previous method of checking the
<pwd.h>database. This change affects libpq (for example, while looking up
~/.pgpass) as well as various client application programs.
--no-synchronized-snapshotsoption (Tom Lane)
All still-supported server versions support synchronized snapshots, so there's no longer a need for this option.
After an error is detected in psql's
--single-transactionmode, change the final
ON_ERROR_STOPis set (Michael Paquier)
Avoid unnecessary casting of constants in queries sent by postgres_fdw (Dian Fay)
When column types are intentionally different between local and remote databases, such casts could cause errors.
xml_is_well_formed()function (Tom Lane)
This function has been implemented in the core backend since Postgres 9.1.
Allow custom scan providers to indicate if they support projections (Sven Klemm)
The default is now that custom scan providers are assumed to not support projections; those that do will need to be updated for this release.
Below you will find a detailed account of the changes between PostgreSQL 15 and the previous major release.
Record and check the collation version of each database (Peter Eisentraut)
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 ... REFRESHsets the recorded database collation version to match the operating system collation version.
Allow ICU collations to be set as the default for clusters and databases (Peter Eisentraut)
Previously, only libc-based collations could be selected at the cluster and database levels. ICU collations could only be used via explicit
Add system view
pg_ident.confinformation (Julien Rouhaud)
Improve planning time for queries referencing partitioned tables (David Rowley)
This change helps when only a few of many partitions are relevant.
Allow ordered scans of partitions to avoid sorting in more cases (David Rowley)
Previously, a partitioned table with a
DEFAULTpartition or a
LISTpartition containing multiple values could not be used for ordered partition scans. Now they can be used if such partitions are pruned during planning.
Improve foreign key behavior of updates on partitioned tables that move rows between partitions (Amit Langote)
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.
CLUSTERon partitioned tables (Justin Pryzby)
ALTER TRIGGER RENAMEon partitioned tables to properly rename triggers on all partitions (Arne Roland, Álvaro Herrera)
Also prohibit cloned triggers from being renamed.
Allow btree indexes on system and TOAST tables to efficiently store duplicates (Peter Geoghegan)
Previously de-duplication was disabled for these types of indexes.
Improve lookup performance of GiST indexes that were built using sorting (Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin)
Allow unique constraints and indexes to treat
NULLvalues as not distinct (Peter Eisentraut)
NULLentries were always treated as distinct values, but this can now be changed by creating constraints and indexes using
UNIQUE NULLS NOT DISTINCT.
^@starts-with operator and the
starts_with()function to use btree indexes if using the C collation (Tom Lane)
Previously these could only use SP-GiST indexes.
Allow extended statistics to record statistics for a parent with all its children (Tomas Vondra, Justin Pryzby)
Regular statistics already tracked parent and parent-plus-all-children statistics separately.
Add server variable
recursive_worktable_factorto allow the user to specify the expected size of the working table of a recursive query (Simon Riggs)
E.22.214.171.124. General Performance
Allow hash lookup for
NOT INclauses with many constants (David Rowley, James Coleman)
Previously the code always sequentially scanned the list of values.
SELECT DISTINCTto be parallelized (David Rowley)
Speed up encoding validation of UTF-8 text by processing 16 bytes at a time (John Naylor, Heikki Linnakangas)
This will improve text-heavy operations like
Improve performance for sorts that exceed
When the sort data no longer fits in
work_mem, switch to a batch sorting algorithm that uses more output streams than before.
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 (Andrey Borodin, Justin Pryzby)
This is controlled by the
Add support for writing WAL using direct I/O on macOS (Thomas Munro)
This only works if
max_wal_senders = 0and
wal_level = minimal.
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
Improve the performance of spinlocks on high-core-count ARM64 systems (Geoffrey Blake)
Enable default logging of checkpoints and slow autovacuum operations (Bharath Rupireddy)
This changes the default of
onand that of
log_autovacuum_min_durationto 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.
Generate progress messages in the server log during slow server starts (Nitin Jadhav, Robert Haas)
The messages report the cause of the delay. The time interval for notification is controlled by the new server variable
Store cumulative statistics system data in shared memory (Kyotaro Horiguchi, Andres Freund, Melanie Plageman)
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.
Add additional information to
VACUUM VERBOSEand autovacuum logging messages (Peter Geoghegan)
EXPLAIN (BUFFERS)output for temporary file block I/O (Masahiko Sawada)
Allow log output in JSON format (Sehrope Sarkuni, Michael Paquier)
The new setting is
log_destination = jsonlog.
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 (Fujii Masao)
The new wait events are used when calling
Allow table accesses done by a view to optionally be controlled by privileges of the view's caller (Christoph Heiss)
Previously, view accesses were always treated as being done by the view's owner. That's still the default.
Allow members of the
pg_write_server_filespredefined role to perform server-side base backups (Dagfinn Ilmari Mannsåker)
Previously only superusers could perform such backups.
GRANTto grant permissions to change individual server variables via
ALTER SYSTEM(Mark Dilger)
The new function
has_parameter_privilege()reports on this privilege.
Add predefined role
pg_checkpointthat allows members to run
Previously checkpoints could only be run by superusers.
Allow members of the
pg_read_all_statspredefined role to access the views
Previously these views could only be accessed by superusers.
GRANTto grant permissions on
Previously this function could only be run by superusers.
E.126.96.36.199. Server Configuration
Add server variable
shared_memory_sizeto report the size of allocated shared memory (Nathan Bossart)
Add server variable
shared_memory_size_in_huge_pagesto report the number of huge memory pages required (Nathan Bossart)
This is only supported on Linux.
Honor server variable
shared_preload_librariesin single-user mode (Jeff Davis)
This change supports use of
shared_preload_librariesto load custom access methods and WAL resource managers, which would be essential for database access even in single-user mode.
On Solaris, make the default setting of
The previous default choice,
posix, can result in spurious failures on this platform.
postgres -Cto properly report runtime-computed values (Nathan Bossart)
Previously runtime-computed values
data_directory_modewould report values that would not be accurate on the running server. However, this does not work on a running server.
E.9.3.2. Streaming Replication and Recovery
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 (Thomas Munro)
This helps to speed up long crash recoveries.
Allow WAL processing to pre-fetch needed file contents (Thomas Munro)
This is controlled by the server variable
Allow archiving via loadable modules (Nathan Bossart)
Previously, archiving was only done by calling shell commands. The new server variable
archive_librarycan be set to specify a library to be called for archiving.
No longer require
IDENTIFY_SYSTEMto be run before
Allow publication of all tables in a schema (Vignesh C, Hou Zhijie, Amit Kapila)
For example, this syntax is now supported:
CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2.
ALTER PUBLICATIONsupports a similar syntax. Tables added later to the listed schemas will also be replicated.
Allow publication content to be filtered using a
WHEREclause (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
Rows not satisfying the
WHEREclause are not published.
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 (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
CREATE_REPLICATION_SLOToption is called
TWO_PHASE. pg_recvlogical now supports a new
--two-phaseoption during slot creation.
Prevent logical replication of empty transactions (Ajin Cherian, Hou Zhijie, Euler Taveira)
Previously, publishers would send empty transactions to subscribers if subscribed tables were not modified.
Add SQL functions to monitor the directory contents of logical replication slots (Bharath Rupireddy)
The new functions are
pg_ls_replslotdir(). They can be run by members of the predefined
Allow subscribers to stop the application of logical replication changes on error (Osumi Takamichi, Mark Dilger)
This is enabled with the subscriber option
disable_on_errorand avoids possible infinite error loops during stream application.
Adjust subscriber server variables to match the publisher so datetime and float8 values are interpreted consistently (Japin Li)
Some publishers might be relying on inconsistent behavior.
Add system view
pg_stat_subscription_statsto report on subscriber activity (Masahiko Sawada)
The new function
pg_stat_reset_subscription_stats()allows resetting these statistics counters.
Suppress duplicate entries in the
pg_publication_tablessystem view (Hou Zhijie)
In some cases a partition could appear more than once.
E.9.3.3. Utility Commands
MERGEcommand to adjust one table to match another (Simon Riggs, Pavan Deolasee, Álvaro Herrera, Amit Langote)
This is similar to
INSERT ... ON CONFLICTbut more batch-oriented.
Add support for
COPYtext format (Rémi Lapeyre)
The new option causes the column names to be output, and optionally verified on input.
Add new WAL-logged method for database creation (Dilip Kumar)
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.
CREATE DATABASEto set the database OID (Shruthi Gowda, Antonin Houska)
DROP TABLESPACE, and
ALTER DATABASE SET TABLESPACEfrom occasionally failing during concurrent use on Windows (Thomas Munro)
Allow foreign key
ON DELETE SETactions to affect only specified columns (Paul Martinez)
Previously, all of the columns in the foreign key were always affected.
ALTER TABLEto modify a table's
ACCESS METHOD(Justin Pryzby, Jeff Davis)
Properly call object access hooks when
ALTER TABLEcauses table rewrites (Michael Paquier)
Allow creation of unlogged sequences (Peter Eisentraut)
Track dependencies on individual columns in the results of functions returning composite types (Tom Lane)
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.
E.9.3.4. Data Types
Allow the scale of a
numericvalue to be negative, or greater than its precision (Dean Rasheed, Tom Lane)
This allows rounding of values to the left of the decimal point, e.g.,
'1234'::numeric(4, -2)returns 1200.
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 (Jacob Champion)
Also update from Unicode 5.0 to 14.0.0. There is now an automated way to keep Postgres updated with Unicode releases.
Add multirange input to
MAX()aggregates for the
xid8data type (Ken Kato)
Add regular expression functions for compatibility with other relational systems (Gilles Darold, Tom Lane)
The new functions are
regexp_substr(). Some new optional arguments were also added to
Add the ability to compute the distance between
The upper-case equivalents of these were already supported.
AT TIME ZONEto a
time with time zonevalue, use the transaction start time rather than wall clock time to determine whether DST applies (Aleksander Alekseev, Tom Lane)
This allows the conversion to be considered stable rather than volatile, and it saves a kernel call per invocation.
Ignore NULL array elements in
setweight()functions with array arguments (Jean-Christophe Arnu)
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.
Add support for petabyte units to
pg_event_trigger_ddl_commands()to output references to other sessions' temporary schemas using the actual schema name (Tom Lane)
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.
Fix enforcement of PL/pgSQL variable
CONSTANTmarkings (Tom Lane)
Previously, a variable could be used as a
CALLoutput parameter or refcursor
OPENvariable despite being marked
Allow IP address matching against a server certificate's Subject Alternative Name (Jacob Champion)
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 (Jelte Fennema)
This allows configured TCP timeouts to apply to query cancel connections.
Prevent libpq event callback failures from forcing an error result (Tom Lane)
E.9.3.8. Client Applications
Allow pgbench to retry after serialization and deadlock failures (Yugo Nagata, Marina Polyakova)
Improve performance of psql's
\copycommand, by sending data in larger chunks (Heikki Linnakangas)
\dconfigcommand to report server variables (Mark Dilger, Tom Lane)
This is similar to the server-side
SHOWcommand, but it can process patterns to show multiple variables conveniently.
\getenvcommand to assign the value of an environment variable to a psql variable (Tom Lane)
+option to the
\dlcommands to show large-object privileges (Pavel Luzanov)
Add a pager option for the
\watchcommand (Pavel Stehule, Thomas Munro)
This is only supported on Unix and is controlled by the
Make psql include intra-query double-hyphen comments in queries sent to the server (Tom Lane, Greg Nancarrow)
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.
Adjust psql so that Readline's meta-
#command will insert a double-hyphen comment marker (Tom Lane)
Previously a pound marker was inserted, unless the user had taken the trouble to configure a non-default comment marker.
Make psql output all results when multiple queries are passed to the server at once (Fabien Coelho)
Previously, only the last query result was displayed. The old behavior can be restored by setting the
SHOW_ALL_RESULTSpsql variable to
After an error is detected in
--single-transactionmode, change the final
ON_ERROR_STOPis set (Michael Paquier)
Previously, detection of an error in a
-fscript file would lead to issuing
ROLLBACKat the end, regardless of the value of
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 (Tom Lane)
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.
Make pg_dump dump
publicschema ownership changes and security labels (Noah Misch)
Improve performance of dumping databases with many objects (Tom Lane)
This will also improve the performance of pg_upgrade.
Improve parallel pg_dump's performance for tables with large TOAST tables (Tom Lane)
Add dump/restore option
--no-table-access-methodto 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)
E.9.3.9. Server Applications
Add new pg_basebackup option
--targetto control the base backup location (Robert Haas)
The new options are
serverto write the backup locally and
blackholeto discard the backup (for testing).
Allow pg_basebackup to do server-side gzip, LZ4, and Zstandard compression and client-side LZ4 and Zstandard compression of base backup files (Dipesh Pandit, Jeevan Ladhe)
gzipcompression was already supported.
Allow pg_basebackup to compress on the server side and decompress on the client side before storage (Dipesh Pandit)
This is accomplished by specifying compression on the server side and plain output format.
--compressoption 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 (Georgios Kokolatos)
This is enabled via
--compress=lz4and requires binaries to be built using
Add additional capabilities to pg_receivewal's
--compressoption (Georgios Kokolatos)
Improve pg_receivewal's ability to restart at the proper WAL location (Ronan Dunklau)
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.
Add pg_rewind option
--config-fileto simplify use when server configuration files are stored outside the data directory (Gunnar Bluth)
Store pg_upgrade's log and temporary files in a subdirectory of the new cluster called
Previously such files were left in the current directory, requiring manual cleanup. Now they are automatically removed on successful completion of pg_upgrade.
Disable default status reporting during pg_upgrade operation if the output is not a terminal (Andres Freund)
The status reporting output can be enabled for non-tty usage by using
Make pg_upgrade report all databases with invalid connection settings (Jeevan Ladhe)
Previously only the first database with an invalid connection setting was reported.
Make pg_upgrade preserve tablespace and database OIDs, as well as relation relfilenode numbers (Shruthi Gowda, Antonin Houska)
--no-syncoption to pg_upgrade (Michael Paquier)
This is recommended only for testing.
Limit support of pg_upgrade to old servers running PostgreSQL 9.2 or later (Tom Lane)
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 (Bharath Rupireddy)
For example, issuing a control-C in a terminal running
pg_waldump --stats --followwill report the current statistics before exiting. This does not work on Windows.
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 (Heikki Linnakangas)
This is enabled by specifying the
--rmgroption multiple times.
Add documentation for
pg_char_to_encoding()(Ian Lawrence Barwick)
^@starts-with operator (Tom Lane)
E.9.3.11. Source Code
Add support for continuous integration testing using cirrus-ci (Andres Freund, Thomas Munro, Melanie Plageman)
Add configure option
--with-zstdto 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 (Peter Eisentraut)
An ABI field mismatch will generate an error at load time.
Create a new
Some other internal-use-only types have also been assigned to this category.
Add new protocol message
TARGETto specify a new
COPYmethod to be used for base backups (Robert Haas)
pg_basebackup now uses this method.
Add new protocol message
COMPRESSION_DETAILto specify the compression method and options (Robert Haas)
Remove server support for old
BASE_BACKUPcommand 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)
pg_settings_get_flags()to get the flags of server variables (Justin Pryzby)
On Windows, export all the server's global variables using
PGDLLIMPORTmarkers (Robert Haas)
Previously, only specific variables were accessible to extensions on Windows.
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)
E.9.3.12. Additional Modules
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 (Emre Hasegeli)
These can be used for exclusion constraints.
page_header()to handle 32-kilobyte page sizes (Quan Zongliang)
Previously, improper negative values could be returned in certain cases.
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 (Bharath Rupireddy)
This gives SQL-level output similar to pg_waldump.
Indicate the permissive/enforcing state in sepgsql log messages (Dave Page)
Allow postgres_fdw to push down
CASEexpressions (Alexander Pyhalov)
Add server variable
postgres_fdw.application_nameto control the application name of postgres_fdw connections (Hayato Kuroda)
Previously the remote session's
application_namecould only be set on the remote server or via a postgres_fdw connection specification.
postgres_fdw.application_namesupports some escape sequences for customization, making it easier to tell such connections apart on the remote server.
Allow parallel commit on postgres_fdw servers (Etsuro Fujita)
This is enabled with the
The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.
|Arjan van de Ven|
|Bruno da Silva|
|Dagfinn Ilmari Mannsåker|
|David G. Johnston|
|Fabrízio de Royes Mello|
|Floris Van Nee|
|Greg Sabino Mullane|
|Jehan-Guillaume de Rorthais|
|Juan José Santamaría Flecha|
|Mahendra Singh Thalor|
|Martijn van Oosterhout|
|Matthias van de Meent|
|Matthijs van der Vleuten|
|Michael J. Sullivan|
|Nazir Bilal Yavuz|
|Renan Soares Lopes|
|RKN Sai Krishna|
|Sait Talha Nisanci|