- Allow parallelization of FULL and internal right OUTER hash joins
+ Allow parallelization of FULL and internal right OUTER hash joins
- Allow monitoring of I/O statistics using the new pg_stat_io view
+ Allow monitoring of
I/O statistics using the new pg_stat_io view
- Add SQL/JSON constructors and identity functions
+ Add
SQL/JSON constructors and identity functions
- Add support for regular expression matching of user and database names in pg_hba.conf, and user names in pg_ident.conf
+ Add support for regular expression matching of user and database names in pg_hba.conf , and user names in pg_ident.conf
-Change assignment rules for PL/pgSQL bound cursor variables (Tom Lane)
+Change assignment rules for
PL/pgSQL bound cursor variables (Tom Lane)
-Previously, the string value of such variables was set to match the variable name during cursor assignment; now it will be assigned during OPEN , and will not match the variable name.
-To restore the previous behavior, assign the desired portal name to the cursor variable before OPEN .
+Previously, the string value of such variables was set to match the variable name during cursor assignment; now it will be assigned during OPEN , and will not match the variable name.
+To restore the previous behavior, assign the desired portal name to the cursor variable before OPEN .
-Disallow NULLS NOT DISTINCT indexes for primary keys (Daniel Gustafsson)
+Disallow NULLS NOT DISTINCT indexes for primary keys (Daniel Gustafsson)
-Change REINDEX DATABASE and reindexdb to not process indexes on system catalogs (Simon Riggs)
+Change
REINDEX DATABASE and reindexdb to not process indexes on system catalogs (Simon Riggs)
-Processing such indexes is still possible using REINDEX SYSTEM and reindexdb --system .
+Processing such indexes is still possible using REINDEX SYSTEM and reindexdb --system .
-Tighten GENERATED expression restrictions on inherited and partitioned tables (Amit Langote, Tom Lane)
+Tighten GENERATED expression restrictions on inherited and partitioned tables (Amit Langote, Tom Lane)
-Remove pg_walinspect functions pg_get_wal_records_info_till_end_of_wal() and pg_get_wal_stats_till_end_of_wal() (Bharath Rupireddy)
+Remove
pg_walinspect functions pg_get_wal_records_info_till_end_of_wal() and pg_get_wal_stats_till_end_of_wal() (Bharath Rupireddy)
-Rename server variable force_parallel_mode to debug_parallel_query (David Rowley)
+Rename server variable force_parallel_mode to debug_parallel_query (David Rowley)
-Remove the ability to create views manually with ON SELECT rules (Tom Lane)
+Remove the ability to create views manually with ON SELECT rules (Tom Lane)
-Remove the server variable vacuum_defer_cleanup_age (Andres Freund)
+Remove the server variable vacuum_defer_cleanup_age (Andres Freund)
-This has been unnecessary since hot_standby_feedback and replication slots were added.
+This has been unnecessary since hot_standby_feedback and replication slots were added.
-Remove server variable promote_trigger_file (Simon Riggs)
+Remove server variable promote_trigger_file (Simon Riggs)
-This was used to promote a standby to primary, but is now easier accomplished with pg_ctl promote or pg_promote() .
+This was used to promote a standby to primary, but is now easier accomplished with pg_ctl promote or pg_promote() .
-Remove read-only server variables lc_collate and lc_ctype (Peter Eisentraut)
+Remove read-only server variables lc_collate and lc_ctype (Peter Eisentraut)
-Restrict the privileges of CREATEROLE and its ability to modify other roles (Robert Haas)
+Restrict the privileges of CREATEROLE and its ability to modify other roles (Robert Haas)
-Previously roles with CREATEROLE privileges could change many aspects of any non-superuser role. Such changes, including adding members, now require the role requesting the change to have ADMIN OPTION
-permission. For example, they can now change the CREATEDB, REPLICATION, and BYPASSRLS properties only if they also have those permissions.
+Previously roles with CREATEROLE privileges could change many aspects of any non-superuser role. Such changes, including adding members, now require the role requesting the change to have ADMIN OPTION
+permission. For example, they can now change the CREATEDB , REPLICATION , and BYPASSRLS properties only if they also have those permissions.
-Remove symbolic links for the postmaster binary (Peter Eisentraut)
+Remove symbolic links for the
postmaster binary (Peter Eisentraut)
-Allow incremental sorts in more cases, including DISTINCT (David Rowley)
+Allow incremental sorts in more cases, including DISTINCT (David Rowley)
-Add the ability for aggregates having ORDER BY or DISTINCT to use pre-sorted data (David Rowley)
+Add the ability for aggregates having ORDER BY or DISTINCT to use pre-sorted data (David Rowley)
-This ability is new in this release and the server variable to disable it is called enable_presorted_aggregate .
+The new server variable enable_presorted_aggregate can be used to disable this .
-Allow memoize atop a UNION ALL (Richard Guo)
+Allow memoize atop a UNION ALL (Richard Guo)
-Allow parallelization of FULL and internal right OUTER hash joins (Melanie Plageman, Thomas Munro)
+Allow parallelization of FULL and internal right OUTER hash joins (Melanie Plageman, Thomas Munro)
-Improve the accuracy of GIN index access optimizer costs (Ronan Dunklau)
+Improve the accuracy of GIN index access optimizer costs (Ronan Dunklau)
-Allow window functions to use ROWS mode internally when RANGE mode is specified but unnecessary (David Rowley)
+Allow window functions to use ROWS mode internally when RANGE mode is specified but unnecessary (David Rowley)
-Allow optimization of always-increasing window functions ntile(), cume_dist() and percent_rank() (David Rowley)
+Allow optimization of always-increasing window functions ntile() , cume_dist() and percent_rank() (David Rowley)
-Allow aggregate functions string_agg() and array_agg() to be parallelized (David Rowley)
+Allow aggregate functions string_agg() and array_agg() to be parallelized (David Rowley)
-Improve performance by caching RANGE and LIST partition lookups (Amit Langote, Hou Zhijie, David Rowley)
+Improve performance by caching RANGE and LIST partition lookups (Amit Langote, Hou Zhijie, David Rowley)
-The VACUUM/ANALYZE option is BUFFER_USAGE_LIMIT, and the vacuumdb option is --buffer-usage-limit. The default value is set by server variable vacuum_buffer_usage_limit , which also controls autovacuum.
+The
VACUUM /ANALYZE option is BUFFER_USAGE_LIMIT , and the vacuumdb option is --buffer-usage-limit . The default value is set by server variable vacuum_buffer_usage_limit , which also controls autovacuum.
-Support wal_sync_method=fdatasync on Windows (Thomas Munro)
+Support wal_sync_method=fdatasync on Windows (Thomas Munro)
-Allow HOT updates if only BRIN -indexed columns are updated (Matthias van de Meent, Josef Simanek, Tomas Vondra)
+Allow
HOT updates if only BRIN -indexed columns are updated (Matthias van de Meent, Josef Simanek, Tomas Vondra)
-Allow xid/subxid searches and ASCII string detection to use vector operations (Nathan Bossart, John Naylor)
+Allow
xid /subxid searches and ASCII string detection to use vector operations (Nathan Bossart, John Naylor)
-ASCII detection is particularly useful for COPY FROM . Vector operations are also used for some C array searches.
+
ASCII detection is particularly useful for COPY FROM . Vector operations are also used for some C array searches.
-Add system view pg_stat_io view to track IO statistics (Melanie Plageman)
+Add system view
pg_stat_io view to track I/O statistics (Melanie Plageman)
-This information appears in pg_stat_all_tables and pg_stat_all_indexes .
+This information appears in pg_stat_all_tables and pg_stat_all_indexes .
-The pg_stat_*_tables column is n_tup_newpage_upd .
+The pg_stat_*_tables column is n_tup_newpage_upd .
-Add speculative lock information to the pg_locks system view (Masahiko Sawada, Noriyoshi Shinoda)
+Add speculative lock information to the pg_locks system view (Masahiko Sawada, Noriyoshi Shinoda)
-The transaction id is displayed in the transactionid field and the speculative insertion token is displayed in the objid field .
+The transaction id is displayed in the transactionid column and the speculative insertion token is displayed in the objid column .
-Add the display of prepared statement result types to the pg_prepared_statements view (Dagfinn Ilmari Mannsåker)
+Add the display of prepared statement result types to the pg_prepared_statements view (Dagfinn Ilmari Mannsåker)
-Create subscription statistics entries at subscription creation time so stats_reset is accurate (Andres Freund)
+Create subscription statistics entries at subscription creation time so stats_reset is accurate (Andres Freund)
-Correct the IO accounting for temp relation writes shown in pg_stat_database (Melanie Plageman)
+Correct the
I/O accounting for temp relation writes shown in pg_stat_database (Melanie Plageman)
-Add function pg_stat_get_backend_subxact() to report on a session's subtransaction cache (Dilip Kumar)
+Add function pg_stat_get_backend_subxact() to report on a session's subtransaction cache (Dilip Kumar)
-Have pg_stat_get_backend_idset(), pg_stat_get_backend_activity() , and related functions use the unchanging backend id (Nathan Bossart)
+Have pg_stat_get_backend_idset() , pg_stat_get_backend_activity() , and related functions use the unchanging backend id (Nathan Bossart)
-Add wait event SpinDelay to report spinlock sleep delays (Andres Freund)
+Add wait event SpinDelay to report spinlock sleep delays (Andres Freund)
-Create new wait event "DSMAllocate" to indicate waiting for dynamic shared memory allocation (Thomas Munro)
+Create new wait event DSMAllocate to indicate waiting for dynamic shared memory allocation (Thomas Munro)
-Previously this type of wait was reported as "DSMFillZeroWrite", which was also used by mmap() allocations.
+Previously this type of wait was reported as DSMFillZeroWrite , which was also used by mmap() allocations.
-Add the database name to the process display of logical WAL senders (Tatsuhiro Nakamori)
+Add the database name to the process display of logical
WAL senders (Tatsuhiro Nakamori)
-Physical WAL senders do not display a database name.
+Physical
WAL senders do not display a database name.
-Add checkpoint and REDO LSN information to log_checkpoints messages (Bharath Rupireddy, Kyotaro Horiguchi)
+Add checkpoint and REDO LSN information to log_checkpoints messages (Bharath Rupireddy, Kyotaro Horiguchi)
-Add predefined role pg_create_subscription with permission to create subscriptions (Robert Haas)
+Add predefined role pg_create_subscription with permission to create subscriptions (Robert Haas)
-This is accomplished with the option password_required=false .
+This is accomplished with the option password_required=false .
-Simplify permissions for LOCK TABLE (Jeff Davis)
+Simplify permissions for LOCK TABLE (Jeff Davis)
-Previously the ability to perform LOCK TABLE at various lock levels was bound to specific query-type permissions. For example, UPDATE could perform all lock levels except ACCESS SHARE , which
-required SELECT permissions. Now UPDATE can issue all lock levels. MORE?
+Previously the ability to perform LOCK TABLE at various lock levels was bound to specific query-type permissions. For example, UPDATE could perform all lock levels except ACCESS SHARE , which
+required SELECT permissions. Now UPDATE can issue all lock levels. MORE?
-Allow "GRANT group_name TO user_name" to be performed with ADMIN OPTION (Robert Haas)
+Allow GRANT group_name TO user_name to be performed with ADMIN OPTION (Robert Haas)
-Previously CREATEROLE permission was required.
+Previously CREATEROLE permission was required.
-Allow GRANT to control role inheritance behavior (Robert Haas)
+Allow GRANT to control role inheritance behavior (Robert Haas)
-By default, role inheritance is controlled by the inheritance status of the member role. The new GRANT clauses WITH INHERIT and WITH ADMIN can now override this.
+By default, role inheritance is controlled by the inheritance status of the member role. The new GRANT clauses WITH INHERIT and WITH ADMIN can now override this.
-Allow roles that create other roles to automatically inherit the new role's rights or the ability to SET ROLE to the new role (Robert Haas, Shi Yu)
+Allow roles that create other roles to automatically inherit the new role's rights or the ability to SET ROLE to the new role (Robert Haas, Shi Yu)
-This is controlled by server variable createrole_self_grant .
+This is controlled by server variable createrole_self_grant .
-Add GRANT to control permission to use SET ROLE (Robert Haas)
+Add GRANT to control permission to use SET ROLE (Robert Haas)
-This is controlled by a new GRANT ... SET option.
+This is controlled by a new GRANT ... SET option.
-For example, removing ADMIN OPTION will fail if there are privileges using that option; CASCADE must be used to revoke dependent permissions.
+For example, removing ADMIN OPTION will fail if there are privileges using that option; CASCADE must be used to revoke dependent permissions.
-Add dependency tracking of grantors for GRANT records (Robert Haas)
+Add dependency tracking of grantors for GRANT records (Robert Haas)
-This guarantees that pg_auth_members.grantor values are always valid.
+This guarantees that pg_auth_members .grantor values are always valid.
-Allow makeaclitem() to accept multiple privilege names (Robins Tharakan)
+Allow makeaclitem() to accept multiple privilege names (Robins Tharakan)
-Previously only a single privilege name, like SELECT , was accepted.
+Previously only a single privilege name, like SELECT , was accepted.
-This is enabled with server variable gss_accept_delegation
-and libpq connection parameter gssdelegation.
+This is enabled with server variable
gss_accept_delegation and
libpq connection parameter
gssdelegation .
-Allow the SCRAM iteration count to be set with server variable scram_iterations (Daniel Gustafsson)
+Allow the
SCRAM iteration count to be set with server variable scram_iterations (Daniel Gustafsson)
-Previously, while certain variables, like transaction_isolation, were not affected by RESET ALL , they could be individually reset in inappropriate situations.
+Previously, while certain variables, like transaction_isolation , were not affected by RESET ALL , they could be individually reset in inappropriate situations.
-Move various postgresql.conf items into new categories (Shinya Kato)
+Move various postgresql.conf items into new categories (Shinya Kato)
-This also affects the categories displayed in the pg_settings view.
+This also affects the categories displayed in the pg_settings view.
-The archive command is now more likely to be called with already-archived files after a crash.
+The archive_command command is now more likely to be called with already-archived files after a crash.
-Prevent archive_library and archive_command from being set at the same time (Nathan Bossart)
+Prevent archive_library and archive_command from being set at the same time (Nathan Bossart)
-Previously archive_library would override archive_command .
+Previously archive_library would override archive_command .
This allows collection of a core dump for a stuck child process.
-This is controlled by send_abort_for_crash and send_abort_for_kill .
-The postmaster's -T switch is now the same as setting send_abort_for_crash .
+This is controlled by send_abort_for_crash and send_abort_for_kill .
+The postmaster's -T switch is now the same as setting send_abort_for_crash .
-Remove the non-functional postmaster -n option (Tom Lane)
+Remove the non-functional postmaster -n option (Tom Lane)
-Allow the server to reserve backend slots for roles with pg_use_reserved_connections membership (Nathan Bossart)
+Allow the server to reserve backend slots for roles with pg_use_reserved_connections membership (Nathan Bossart)
-The number of reserved slots is set by server variable reserved_connections .
+The number of reserved slots is set by server variable reserved_connections .
-Allow huge pages to work on newer versions of Windows 10 (Thomas Munro)
+Allow huge pages to work on newer versions of Windows 10 (Thomas Munro)
-This adds the special handling required to enable huge pages on newer versions of Windows 10 .
+This adds the special handling required to enable huge pages on newer versions of Windows 10 .
-Add debug_io_direct setting for developer usage (Thomas Munro, Andres Freund, Bharath Rupireddy)
+Add debug_io_direct setting for developer usage (Thomas Munro, Andres Freund, Bharath Rupireddy)
-While primarily for developers, wal_sync_method=open_sync/open_datasync has been modified to not use direct I/O with wal_level=minimal; this is now enabled with debug_io_direct=wal .
+While primarily for developers,
wal_sync_method=open_sync /open_datasync has been modified to not use direct I/O with wal_level=minimal ; this is now enabled with debug_io_direct=wal .
-Add function pg_split_walfile_name() to report the segment and timeline values of WAL file names (Bharath Rupireddy)
+Add function
pg_split_walfile_name() to report the segment and timeline values of WAL file names (Bharath Rupireddy)
-Add support for regular expression matching on database and role entries in pg_hba.conf (Bertrand Drouvot)
+Add support for regular expression matching on database and role entries in pg_hba.conf (Bertrand Drouvot)
-Regular expression patterns are prefixed with a slash. Database and role names that begin with slashes need to be double-quoted if referenced in pg_hba.conf .
+Regular expression patterns are prefixed with a slash. Database and role names that begin with slashes need to be double-quoted if referenced in pg_hba.conf .
-Improve user-column handling of pg_ident.conf to match pg_hba.conf (Jelte Fennema)
+Improve user-column handling of pg_ident.conf to match pg_hba.conf (Jelte Fennema)
-Specifically, add support for "all", role membership with "+" , and regular expressions with a leading slash. Any user name that matches these patterns must be double-quoted.
+Specifically, add support for all , role membership with + , and regular expressions with a leading slash. Any user name that matches these patterns must be double-quoted.
-Allow include files in pg_hba.conf and pg_ident.conf (Julien Rouhaud)
+Allow include files in pg_hba.conf and pg_ident.conf (Julien Rouhaud)
-These are controlled by "include", "include_if_exists", and "include_dir". System views pg_hba_file_rules and pg_ident_file_mappings now display the file name.
+These are controlled by include , include_if_exists , and include_dir . System views pg_hba_file_rules and pg_ident_file_mappings now display the file name.
-Allow pg_hba.conf tokens to be of unlimited length (Tom Lane)
+Allow pg_hba.conf tokens to be of unlimited length (Tom Lane)
-Add rule and map numbers to the system view pg_hba_file_rules (Julien Rouhaud)
+Add rule and map numbers to the system view pg_hba_file_rules (Julien Rouhaud)
-Determine the ICU default locale from the environment (Jeff Davis)
+Determine the
ICU default locale from the environment (Jeff Davis)
-However, ICU doesn't support the C locale so UTF-8 is used in such cases. Previously the default was always UTF-8 .
+However,
ICU doesn't support the C locale so UTF-8 is used in such cases. Previously the default was always UTF-8 .
-Have CREATE DATABASE and CREATE COLLATION's LOCALE options, and initdb and createdb --locale options, control non-libc collation providers (Jeff Davis)
+Have
CREATE DATABASE and CREATE COLLATION 's LOCALE options, and initdb and createdb --locale options, control non-libc collation providers (Jeff Davis)
-Previously they only controlled libc providers.
+Previously they only controlled
libc providers.
-Add predefined collations "unicode" and "ucs_basic" (Peter Eisentraut)
+Add predefined collations unicode and ucs_basic (Peter Eisentraut)
-This only works if ICU support is enabled.
+This only works if
ICU support is enabled.
-Allow custom ICU collation rules to be created (Peter Eisentraut)
+Allow custom
ICU collation rules to be created (Peter Eisentraut)
-This is done using CREATE COLLATION's new RULES clause, as well as new options for CREATE DATABASE, createdb, and initdb .
+This is done using
CREATE COLLATION 's new RULES clause, as well as new options for CREATE DATABASE , createdb , and initdb .
-Allow Windows to import system locales automatically (Juan José Santamaría Flecha)
+Allow Windows to import system locales automatically (Juan José Santamaría Flecha)
-Previously, only ICU locales could be imported on Windows .
+Previously, only
ICU locales could be imported on Windows .
-Snapshot WAL records are required for logical slot creation but cannot be created on standbys.
-To avoid delays, the new function pg_log_standby_snapshot() allows creation of such records.
+Snapshot
WAL records are required for logical slot creation but cannot be created on standbys.
+To avoid delays, the new function pg_log_standby_snapshot() allows creation of such records.
-The variable is logical_replication_mode .
+The variable is logical_replication_mode .
-The CREATE SUBSCRIPTION "streaming" option now supports "parallel" to enable application of large transactions by parallel workers. The number of parallel workers is controlled by
-the new server variable max_parallel_apply_workers_per_subscription. Wait events LogicalParallelApplyMain, LogicalParallelApplyStateChange, and LogicalApplySendData were also added. Column leader_pid was
-added to system view pg_stat_subscription to track parallel activity.
+The CREATE SUBSCRIPTION STREAMING option now supports parallel to enable application of large transactions by parallel workers. The number of parallel workers is controlled by
+the new server variable max_parallel_apply_workers_per_subscription . Wait events LogicalParallelApplyMain , LogicalParallelApplyStateChange , and LogicalApplySendData were also added. Column leader_pid was
+added to system view pg_stat_subscription to track parallel activity.
-Specifically, REPLICA IDENTITY FULL can now use btree indexes rather than sequentially scanning the table to find matches.
+Specifically, REPLICA IDENTITY FULL can now use btree indexes rather than sequentially scanning the table to find matches.
-This can be used to avoid replication loops. This is controlled by the new CREATE SUBSCRIPTION "origin" option.
+This can be used to avoid replication loops. This is controlled by the new CREATE SUBSCRIPTION ... ORIGIN option.
-Perform logical replication SELECT and DML actions as the table owner (Robert Haas)
+Perform logical replication
SELECT and DML actions as the table owner (Robert Haas)
-This improves security and now requires subscription owners to be either superusers or to have SET ROLE permissions on all tables in the replication set. The previous behavior of performing all operations
-as the subscription owner can be enabled with the subscription run_as_owner option.
+This improves security and now requires subscription owners to be either superusers or to have SET ROLE permissions on all tables in the replication set. The previous behavior of performing all operations
+as the subscription owner can be enabled with the subscription run_as_owner option.
-Have wal_retrieve_retry_interval operate on a per-subscription basis (Nathan Bossart)
+Have wal_retrieve_retry_interval operate on a per-subscription basis (Nathan Bossart)
-Previously the retry time was applied globally. This also adds wait events LogicalRepLauncherDSA and LogicalRepLauncherHash .
+Previously the retry time was applied globally. This also adds wait events LogicalRepLauncherDSA and LogicalRepLauncherHash .
-Add EXPLAIN option GENERIC_PLAN to display the generic plan for a parameterized query (Laurenz Albe)
+Add EXPLAIN option GENERIC_PLAN to display the generic plan for a parameterized query (Laurenz Albe)
-Allow a COPY FROM value to map to a column's DEFAULT (Israel Barth Rubio)
+Allow a COPY FROM value to map to a column's DEFAULT (Israel Barth Rubio)
-Allow COPY into foreign tables to add rows in batches (Andrey Lepikhov, Etsuro Fujita)
+Allow COPY into foreign tables to add rows in batches (Andrey Lepikhov, Etsuro Fujita)
-This is controlled by the postgres_fdw "batch_size" option .
+This is controlled by the
postgres_fdw option batch_size .
-Allow the STORAGE type to be specified by CREATE TABLE (Teodor Sigaev, Aleksander Alekseev)
+Allow the STORAGE type to be specified by CREATE TABLE (Teodor Sigaev, Aleksander Alekseev)
-Previously only ALTER TABLE could control this
+Previously only ALTER TABLE could control this.
-Allow VACUUM and vacuumdb to only process TOAST tables (Nathan Bossart)
+Allow
VACUUM and vacuumdb to only process TOAST tables (Nathan Bossart)
-This is accomplished by having VACUUM turn off PROCESS_MAIN or by vacuumdb using the --no-process-main option.
+This is accomplished by having
VACUUM turn off PROCESS_MAIN or by vacuumdb using the --no-process-main option.
-Add VACUUM options to skip or update all frozen statistics (Tom Lane, Nathan Bossart)
+Add VACUUM options to skip or update all frozen statistics (Tom Lane, Nathan Bossart)
-The options are SKIP_DATABASE_STATS and ONLY_DATABASE_STATS .
+The options are SKIP_DATABASE_STATS and ONLY_DATABASE_STATS .
-Change REINDEX DATABASE and REINDEX SYSTEM to no longer require an argument (Simon Riggs)
+Change REINDEX DATABASE and REINDEX SYSTEM to no longer require an argument (Simon Riggs)
-Allow CREATE STATISTICS to generate a statistics name if none is specified (Simon Riggs)
+Allow CREATE STATISTICS to generate a statistics name if none is specified (Simon Riggs)
-For example, 0x42F, 0o273, and 0b100101 .
+For example, 0x42F , 0o273 , and 0b100101 .
-Allow NUMERIC to process hexadecimal, octal, and binary integers of any size (Dean Rasheed)
+Allow NUMERIC to process hexadecimal, octal, and binary integers of any size (Dean Rasheed)
-Accept the spelling "+infinity" in datetime input (Vik Fearing)
+Accept the spelling +infinity in datetime input (Vik Fearing)
-Prevent the specification of "epoch" and "infinity" together with other fields in datetime strings (Joseph Koshakow)
+Prevent the specification of epoch and infinity together with other fields in datetime strings (Joseph Koshakow)
Remove undocumented support for date input in the form
-"Yyear Mmonth Dday "
+Yyear Mmonth Dday
(Joseph Koshakow)
-Add functions pg_input_is_valid() and pg_input_error_info() to check for type conversion errors (Tom Lane)
+Add functions pg_input_is_valid() and pg_input_error_info() to check for type conversion errors (Tom Lane)
-Allow subqueries in the FROM clause to omit aliases (Dean Rasheed)
+Allow subqueries in the FROM clause to omit aliases (Dean Rasheed)
-Add support for enhanced numeric literals in SQL/JSON paths (Peter Eisentraut)
+Add support for enhanced numeric literals in
SQL/JSON paths (Peter Eisentraut)
-Add SQL/JSON constructors (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote)
+Add
SQL/JSON constructors (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote)
-The new functions JSON_ARRAY(), JSON_ARRAYAGG(), JSON_OBJECT(), and JSON_OBJECTAGG() are part of the SQL standard.
+The new functions
JSON_ARRAY() , JSON_ARRAYAGG() , JSON_OBJECT() , and JSON_OBJECTAGG() are part of the SQL standard.
-Add SQL/JSON object checks (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote, Andrew Dunstan)
+Add
SQL/JSON object checks (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote, Andrew Dunstan)
-The IS JSON checks include checks for values, arrays, objects, scalars, and unique keys.
+The IS JSON checks include checks for values, arrays, objects, scalars, and unique keys.
-Allow JSON string parsing to use vector operations (John Naylor)
+Allow
JSON string parsing to use vector operations (John Naylor)
-Improve the handling of full text highlighting function ts_headline() for OR and NOT expressions (Tom Lane)
+Improve the handling of full text highlighting function ts_headline() for OR and NOT expressions (Tom Lane)
-Add functions to add, subtract, and generate timestamptz values in a specified time zone (Przemyslaw Sztoch, Gurjeet Singh)
+Add functions to add, subtract, and generate timestamptz values in a specified time zone (Przemyslaw Sztoch, Gurjeet Singh)
-The functions are date_add(), date_subtract(), and generate_series() .
+The functions are date_add() , date_subtract() , and generate_series() .
-Change date_trunc(unit, timestamptz, time_zone) to be an immutable function (Przemyslaw Sztoch)
+Change date_trunc(unit, timestamptz, time_zone) to be an immutable function (Przemyslaw Sztoch)
-Add server variable SYSTEM_USER (Bertrand Drouvot)
+Add server variable SYSTEM_USER (Bertrand Drouvot)
-Add functions array_sample() and array_shuffle() (Martin Kalcher)
+Add functions array_sample() and array_shuffle() (Martin Kalcher)
-Add aggregate function ANY_VALUE() which returns any value from a set (Vik Fearing)
+Add aggregate function ANY_VALUE() which returns any value from a set (Vik Fearing)
-Add function random_normal() to supply normally-distributed random numbers (Paul Ramsey)
+Add function random_normal() to supply normally-distributed random numbers (Paul Ramsey)
-Add error function erf() and its complement erfc() (Dean Rasheed)
+Add error function erf() and its complement erfc() (Dean Rasheed)
-Improve the accuracy of numeric power() for integer exponents (Dean Rasheed)
+Improve the accuracy of numeric power() for integer exponents (Dean Rasheed)
-Add XMLSERIALIZE() option INDENT to pretty-print its output (Jim Jones)
+Add XMLSERIALIZE() option INDENT to pretty-print its output (Jim Jones)
-Change pg_collation_actual_version() to return a reasonable value for the default collation (Jeff Davis)
+Change pg_collation_actual_version() to return a reasonable value for the default collation (Jeff Davis)
-Previously it returned NULL .
+Previously it returned NULL .
-Allow pg_read_file() and pg_read_binary_file() to ignore missing files (Kyotaro Horiguchi)
+Allow pg_read_file() and pg_read_binary_file() to ignore missing files (Kyotaro Horiguchi)
-Add the byte specification ('B') to pg_size_bytes() (Peter Eisentraut)
+Add byte specification (B ) to pg_size_bytes() (Peter Eisentraut)
-Allow to_reg* functions to accept numeric OID s as input (Tom Lane)
+Allow
to_reg * functions to accept numeric OID s as input (Tom Lane)
-Add the ability to get the current function's OID in PL/pgSQL (Pavel Stehule)
+Add the ability to get the current function's
OID in PL/pgSQL (Pavel Stehule)
-This is accomplished with GET DIAGNOSTICS variable = PG_ROUTINE_OID .
+This is accomplished with GET DIAGNOSTICS variable = PG_ROUTINE_OID .
-Add libpq connection option require_auth to specify a list of acceptable authentication methods (Jacob Champion)
+Add
libpq connection option require_auth to specify a list of acceptable authentication methods (Jacob Champion)
-Allow multiple libpq -specified hosts to be randomly selected (Jelte Fennema)
+Allow multiple
libpq -specified hosts to be randomly selected (Jelte Fennema)
-This is enabled with "load_balance_hosts=random". This can be used for load balancing.
+This is enabled with load_balance_hosts=random and can be used for load balancing.
-Add libpq option sslcertmode to control transmission of the client certificate (Jacob Champion)
+Add
libpq option sslcertmode to control transmission of the client certificate (Jacob Champion)
-The option values are "disable", "allow", and "require" .
+The option values are disable , allow , and require .
-Allow libpq to use the system certificate pool for certificate verification (Jacob Champion, Thomas Habets)
+Allow
libpq to use the system certificate pool for certificate verification (Jacob Champion, Thomas Habets)
-This is enabled with sslrootcert=system, which also enables sslmode=verify-full .
+This is enabled with sslrootcert=system , which also enables sslmode=verify-full .
-Allow ECPG variable declarations to use typedef names that match unreserved SQL keywords (Tom Lane)
+Allow
ECPG variable declarations to use typedef names that match unreserved SQL keywords (Tom Lane)
-This change does prevent keywords which match C typedef names from being processed as keywords in later EXEC SQL blocks.
+This change does prevent keywords which match C typedef names from being processed as keywords in later EXEC SQL blocks.
-Allow psql to control the maximum width of header lines in expanded format (Platon Pronko)
+Allow
psql to control the maximum width of header lines in expanded format (Platon Pronko)
-This is controlled by xheader_width .
+This is controlled by xheader_width .
-Allow psql 's access privilege commands to show system objects (Nathan Bossart, Pavel Luzanov)
+Allow
psql 's access privilege commands to show system objects (Nathan Bossart, Pavel Luzanov)
-The options are \dpS, \zS, and \drg .
+The options are \dpS , \zS , and \drg .
-Add "FOREIGN" designation to psql \d+ for foreign table children and partitions (Ian Lawrence Barwick)
+Add
FOREIGN designation to psql \d+ for foreign table children and partitions (Ian Lawrence Barwick)
-Prevent \df+ from showing function source code (Isaac Morland)
+Prevent \df+ from showing function source code (Isaac Morland)
-Function bodies are more easily viewed with \sf .
+Function bodies are more easily viewed with \sf .
-Allow psql to submit queries using the extended query protocol (Peter Eisentraut)
+Allow
psql to submit queries using the extended query protocol (Peter Eisentraut)
-Passing arguments to such queries is done using the new psql \bind command.
+Passing arguments to such queries is done using the new
psql \bind command.
-Allow psql \watch to limit the number of executions (Andrey Borodin)
+Allow
psql \watch to limit the number of executions (Andrey Borodin)
-The \watch options can now be nam ed.
+The \watch options can now be named when specifi ed.
-Detect invalid values for psql \watch , and allow zero to specify no delay (Andrey Borodin)
+Detect invalid values for
psql \watch , and allow zero to specify no delay (Andrey Borodin)
-Allow psql scripts to obtain the exit status of shell commands and queries
+Allow
psql scripts to obtain the exit status of shell commands and queries
(Corey Huinker, Tom Lane)
-The new psql control variables are SHELL_ERROR and SHELL_EXIT_CODE .
+The new
psql control variables are SHELL_ERROR and SHELL_EXIT_CODE .
-Various psql tab completion improvements (Vignesh C, Aleksander Alekseev, Dagfinn Ilmari Mannsåker, Shi Yu, Michael Paquier, Ken Kato, Peter Smith)
+Various
psql tab completion improvements (Vignesh C, Aleksander Alekseev, Dagfinn Ilmari Mannsåker, Shi Yu, Michael Paquier, Ken Kato, Peter Smith)
-Add pg_dump control of dumping child tables and partitions (Gilles Darold)
+Add
pg_dump control of dumping child tables and partitions (Gilles Darold)
-The new options are --table-and-children, --exclude-table-and-children, and --exclude-table-data-and-children .
+The new options are --table-and-children , --exclude-table-and-children , and --exclude-table-data-and-children .
-Add LZ4 and Zstandard compression to pg_dump (Georgios Kokolatos, Justin Pryzby)
+Add
LZ4 and Zstandard compression to pg_dump (Georgios Kokolatos, Justin Pryzby)
-Allow pg_dump and pg_basebackup to use "long" mode for compression (Justin Pryzby)
+Allow
pg_dump and pg_basebackup to use long mode for compression (Justin Pryzby)
-Improve pg_dump to accept a more consistent compression syntax (Georgios Kokolatos)
+Improve
pg_dump to accept a more consistent compression syntax (Georgios Kokolatos)
-Options like "--compress=gzip:5" .
+Options like --compress=gzip:5 .
-Add initdb option to set server variables for the duration of initdb and all future server starts (Tom Lane)
+Add
initdb option to set server variables for the duration of initdb and all future server starts (Tom Lane)
-The option is "-c name=value" .
+The option is -c name=value .
-Add options to createuser to control more user options (Shinya Kato)
+Add options to
createuser to control more user options (Shinya Kato)
-Deprecate createuser option --role (Nathan Bossart)
+Deprecate
createuser option --role (Nathan Bossart)
-This option could be easily confused with new createuser role membership options, so option --member-of has been added with the same functionality.
-The --role option can still be used.
+This option could be easily confused with new
createuser role membership options, so option --member-of has been added with the same functionality.
+The --role option can still be used.
-Allow control of vacuumdb schema processing (Gilles Darold)
+Allow control of
vacuumdb schema processing (Gilles Darold)
-These are controlled by options --schema and --exclude-schema .
+These are controlled by options --schema and --exclude-schema .
-Use new VACUUM options to improve the performance of vacuumdb (Tom Lane, Nathan Bossart)
+Use new
VACUUM options to improve the performance of vacuumdb (Tom Lane, Nathan Bossart)
-Have pg_upgrade set the new cluster's locale and encoding (Jeff Davis)
+Have
pg_upgrade set the new cluster's locale and encoding (Jeff Davis)
-Add pg_upgrade option to specify the default transfer mode (Peter Eisentraut)
+Add
pg_upgrade option to specify the default transfer mode (Peter Eisentraut)
-The option is --copy .
+The option is --copy .
-Improve pg_basebackup to accept numeric compression options (Georgios Kokolatos, Michael Paquier)
+Improve
pg_basebackup to accept numeric compression options (Georgios Kokolatos, Michael Paquier)
-Options like "--compress=server-5" are now supported.
+Options like --compress=server-5 are now supported.
-Fix pg_basebackup to handle tablespaces stored in the PGDATA directory (Robert Haas)
+Fix
pg_basebackup to handle tablespaces stored in the PGDATA directory (Robert Haas)
-Add pg_waldump option --save-fullpage to dump full page images (David Christensen)
+Add
pg_waldump option --save-fullpage to dump full page images (David Christensen)
-Allow pg_waldump options -t/--timeline to accept hexadecimal values (Peter Eisentraut)
+Allow
pg_waldump options -t /--timeline to accept hexadecimal values (Peter Eisentraut)
-Add support for progress reporting to pg_verifybackup (Masahiko Sawada)
+Add support for progress reporting to
pg_verifybackup (Masahiko Sawada)
-Allow pg_rewind to properly track timeline changes (Heikki Linnakangas)
+Allow
pg_rewind to properly track timeline changes (Heikki Linnakangas)
-Previously if pg_rewind was run after a timeline switch but before a checkpoint was issued, it might incorrectly determine that a rewind was unnecessary.
+Previously if
pg_rewind was run after a timeline switch but before a checkpoint was issued, it might incorrectly determine that a rewind was unnecessary.
-Have pg_receivewal and pg_recvlogical cleanly exit on SIGTERM (Christoph Berg)
+Have
pg_receivewal and pg_recvlogical cleanly exit on SIGTERM (Christoph Berg)
-This signal is often used by systemd .
+This signal is often used by
systemd .
-Build ICU support by default (Jeff Davis)
+Build
ICU support by default (Jeff Davis)
-This removes build flag --with-icu and adds flag --without-icu .
+This removes build flag --with-icu and adds flag --without-icu .
-Add support for SSE2 (Streaming SIMD Extensions 2) vector operations on x86-64 architectures (John Naylor)
+Add support for SSE2 (Streaming
SIMD Extensions 2) vector operations on x86-64 architectures (John Naylor)
-Add support for Advanced SIMD (Single Instruction Multiple Data) (NEON) instructions on ARM architectures (Nathan Bossart)
+Add support for Advanced
SIMD (Single Instruction Multiple Data) (NEON ) instructions on ARM architectures (Nathan Bossart)
-Have Windows binaries built with MSVC use RandomizedBaseAddress (ASLR ) (Michael Paquier)
+Have
Windows binaries built with MSVC use RandomizedBaseAddress (ASLR ) (Michael Paquier)
-This was already enabled on MinGW builds.
+This was already enabled on
MinGW builds.
-Functions that need to be called from the core backend or other extensions must now be explicitly marked PGDLLEXPORT .
+Functions that need to be called from the core backend or other extensions must now be explicitly marked PGDLLEXPORT .
-Require Windows 10 or newer versions (Michael Paquier, Juan José Santamaría Flecha)
+Require Windows 10 or newer versions (Michael Paquier, Juan José Santamaría Flecha)
-Previously Windows Vista and Windows XP were supported.
+Previously Windows Vista and Windows XP were supported.
-Require Perl version 5.14 or later (John Naylor)
+Require
Perl version 5.14 or later (John Naylor)
-Require Bison version 2.3 or later (John Naylor)
+Require
Bison version 2.3 or later (John Naylor)
-Require Flex version 2.5.35 or later (John Naylor)
+Require
Flex version 2.5.35 or later (John Naylor)
-Require MIT Kerberos for GSSAPI support (Stephen Frost)
+Require
MIT Kerberos for GSSAPI support (Stephen Frost)
-Remove support for Visual Studio 2013 (Michael Paquier)
+Remove support for
Visual Studio 2013 (Michael Paquier)
-Remove support for HP-UX (Thomas Munro)
+Remove support for HP-UX (Thomas Munro)
-Remove support for HP/Intel Itanium (Thomas Munro)
+Remove support for
HP/Intel Itanium (Thomas Munro)
-Remove support for M68K, M88K, M32R, and SuperH CPU architectures (Thomas Munro)
+Remove support for
M68K , M88K , M32R , and SuperH CPU architectures (Thomas Munro)
-Remove libpq support for SCM credential authentication (Michael Paquier)
+Remove
libpq support for SCM credential authentication (Michael Paquier)
-Backend support for this authentication method was removed in PostgreSQL 9.1.
+Backend support for this authentication method was removed in
PostgresSQL 9.1.
-Add meson build system (Andres Freund, Nazir Bilal Yavuz, Peter Eisentraut)
+Add
meson build system (Andres Freund, Nazir Bilal Yavuz, Peter Eisentraut)
-This eventually will replace the Autoconf and Windows-based MSVC build systems.
+This eventually will replace the
Autoconf and Windows -based MSVC build systems.
-Allow control of the location of the openssl binary used by the build system (Peter Eisentraut)
+Allow control of the location of the
openssl binary used by the build system (Peter Eisentraut)
-Make finding openssl program a configure or meson option
+Make finding
openssl program a configure or meson option
-Add build option to allow testing of small segment sizes (Andres Freund)
+Add build option to allow testing of small
WAL segment sizes (Andres Freund)
-The build options are --with-segsize-blocks and -Dsegsize_blocks .
+The build options are --with-segsize-blocks and -Dsegsize_blocks .
-Add pgindent options (Andrew Dunstan)
+Add
pgindent options (Andrew Dunstan)
-The new options are --show-diff, --silent-diff, --commit, and --help, and allow multiple --exclude options. Also require the typedef file to be explicitly specified. Options --code-base and --build were
+The new options are --show-diff , --silent-diff , --commit , and --help , and allow multiple --exclude options. Also require the typedef file to be explicitly specified. Options --code-base and --build were
also removed.
-Add pg_bsd_indent source code to the main tree (Tom Lane)
+Add
pg_bsd_indent source code to the main tree (Tom Lane)
-Improve make_ctags and make_etags (Yugo Nagata)
+Improve
make_ctags and make_etags (Yugo Nagata)
-Adjust pg_attribute columns for efficiency (Peter Eisentraut)
+Adjust pg_attribute columns for efficiency (Peter Eisentraut)
-Add support for Daitch-Mokotoff Soundex to fuzzystrmatch (Dag Lem)
+Add support for Daitch-Mokotoff Soundex to
fuzzystrmatch (Dag Lem)
-Allow auto_explain to log values passed to parameterized statements (Dagfinn Ilmari Mannsåker)
+Allow
auto_explain to log values passed to parameterized statements (Dagfinn Ilmari Mannsåker)
-This affects queries using server-side PREPARE/EXECUTE and client-side parse/bind. Logging is controlled by auto_explain.log_parameter_max_length ; by default query parameters will
+This affects queries using server-side PREPARE /EXECUTE and client-side parse/bind. Logging is controlled by auto_explain.log_parameter_max_length ; by default query parameters will
be logged with no length restriction.
-Have auto_explain's log_verbose mode honor the value of compute_query_id (Atsushi Torikoshi)
+Have
auto_explain 's log_verbose mode honor the value of compute_query_id (Atsushi Torikoshi)
-Previously even if compute_query_id was enabled, log_verbose was not showing the query identifier.
+Previously even if compute_query_id was enabled, log_verbose was not showing the query identifier.
-Change the maximum length of ltree labels from 256 to 1000 and allow hyphens (Garen Torikian)
+Change the maximum length of
ltree labels from 256 to 1000 and allow hyphens (Garen Torikian)
-Have pg_stat_statements normalize constants used in utility commands (Michael Paquier)
+Have pg_stat_statements normalize constants used in utility commands (Michael Paquier)
-Previously constants appeared instead of placeholders, e.g., $1 .
+Previously constants appeared instead of placeholders, e.g., $1 .
-Add pg_walinspect function pg_get_wal_block_info() to report WAL block information (Michael Paquier, Melanie Plageman, Bharath Rupireddy)
+Add
pg_walinspect function pg_get_wal_block_info() to report WAL block information (Michael Paquier, Melanie Plageman, Bharath Rupireddy)
-Change how pg_walinspect functions pg_get_wal_records_info() and pg_get_wal_stats() interpret ending LSN s (Bharath Rupireddy)
+Change how
pg_walinspect functions pg_get_wal_records_info() and pg_get_wal_stats() interpret ending LSN s (Bharath Rupireddy)
-Previously ending LSNs which represent nonexistent WAL locations would generate an error, while they will now be interpreted as the end of the WAL .
+Previously ending
LSN s which represent nonexistent WAL locations would generate an error, while they will now be interpreted as the end of the WAL .
-Add detailed descriptions of WAL records in pg_walinspect and pg_waldump (Melanie Plageman, Peter Geoghegan)
+Add detailed descriptions of
WAL records in pg_walinspect and pg_waldump (Melanie Plageman, Peter Geoghegan)
-Add pageinspect function bt_multi_page_stats() to report statistics on multiple pages (Hamid Akhtar)
+Add
pageinspect function bt_multi_page_stats() to report statistics on multiple pages (Hamid Akhtar)
-This is similar to bt_page_stats() except it can report on a range of pages.
+This is similar to bt_page_stats() except it can report on a range of pages.
-Add empty range output column to pageinspect function brin_page_items() (Tomas Vondra)
+Add empty range output column to
pageinspect function brin_page_items() (Tomas Vondra)
-Correct inaccurate pg_stat_statements row tracking extended query protocol statements (Sami Imseih)
+Correct inaccurate
pg_stat_statements row tracking extended query protocol statements (Sami Imseih)
-Add pg_buffercache function pg_buffercache_usage_counts() to report usage totals (Nathan Bossart)
+Add
pg_buffercache function pg_buffercache_usage_counts() to report usage totals (Nathan Bossart)
-Add pg_buffercache function pg_buffercache_summary() to report summarized buffer statistics (Melih Mutlu)
+Add
pg_buffercache function pg_buffercache_summary() to report summarized buffer statistics (Melih Mutlu)
-Allow the schemas of required extensions to be referenced in extension scripts using the new syntax @extschema:referenced_extension_name@ (Regina Obe)
+Allow the schemas of required extensions to be referenced in extension scripts using the new syntax @extschema:referenced_extension_name@ (Regina Obe)
-Allow required extensions to be marked as non-relocatable using "no_relocate" (Regina Obe)
+Allow required extensions to be marked as non-relocatable using no_relocate (Regina Obe)
-This allows @extschema:referenced_extension_name@ to be treated as a constant for the lifetime of the extension.
+This allows @extschema:referenced_extension_name@ to be treated as a constant for the lifetime of the extension.
-Allow postgres_fdw to do aborts in parallel (Etsuro Fujita)
+Allow
postgres_fdw to do aborts in parallel (Etsuro Fujita)
-This is enabled with postgres_fdw option "parallel_abort" .
+This is enabled with
postgres_fdw option parallel_abort .
-Make ANALYZE on foreign postgres_fdw tables more efficient (Tomas Vondra)
+Make
ANALYZE on foreign postgres_fdw tables more efficient (Tomas Vondra)
-The postgres_fdw option analyze_sampling controls the sampling method.
+The
postgres_fdw option analyze_sampling controls the sampling method.
-Restrict shipment of reg* type constants in postgres_fdw to those referencing built-in objects or extensions marked as shippable (Tom Lane)
+Restrict shipment of
reg * type constants in postgres_fdw to those referencing built-in objects or extensions marked as shippable (Tom Lane)
-Have postgres_fdw and dblink handle interrupts during connection establishment (Andres Freund)
+Have
postgres_fdw and dblink handle interrupts during connection establishment (Andres Freund)