diff --git a/doc/src/sgml/release-17.sgml b/doc/src/sgml/release-17.sgml index 3d671cc375..11d5710b6b 100644 --- a/doc/src/sgml/release-17.sgml +++ b/doc/src/sgml/release-17.sgml @@ -1,16 +1,2819 @@ - + - - Release 17 + + Release 17 - - Release date: - 2024-??-?? - + + Release date: + 2024-??-??, AS OF 2024-05-07 + - - This is just a placeholder for now. - + + Overview - + + PostgreSQL 17 contains many new features + and enhancements, including: + + + + + + + + The above items and other new features of + PostgreSQL 17 are explained in more detail + in the sections below. + + + + + + + Migration to Version 17 + + + A dump/restore using or use of + or logical replication is required for + those wishing to migrate data from any previous release. See for general information on migrating to new + major releases. + + + + Version 17 contains a number of changes that may affect compatibility + with previous releases. Observe the following incompatibilities: + + + + + + + + +Change functions to use a safe search_path during maintenance operations (Jeff Davis) + + + +This prevents maintenance operations (ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX, or VACUUM) from performing unsafe access. Functions used by expression indexes and +materialized views that need to reference non-default schemas must specify a search path during function creation. + + + + + + + +Restrict "ago" to only appear at the end of in interval values (Joseph Koshakow) + + + +Also, prevent empty interval units and interval units from appearing multiple times. + + + + + + + +Remove server variable old_snapshot_threshold (Thomas Munro) + + + +This variable allowed vacuum to remove rows that potentially could be still visible to running transactions, causing "snapshot too old" error later if accessed. This feature +might be re-added to Postgres later if an improved implementation is found. + + + + + + + +Rename server variable session_auth_is_superuser to the more accurate current_role_is_superuser (Nathan Bossart) + + + + + + + +Change SET SESSION AUTHORIZATION handling of the initial session user's superuser status (Joseph Koshakow) + + + +The new behavior is based on the session user's superuser status at the time the SET SESSION AUTHORIZATION command is issued, rather than their superuser status at connection time. + + + + + + + +Remove feature which simulated per-database users (Nathan Bossart) + + + +The feature, db_user_namespace, was rarely used. + + + + + + + +Remove wal_sync_method value fsync_writethrough on Windows (Thomas Munro) + + + +This value was the same as "fsync" on Windows. + + + + + + + +Change file boundary handling of two WAL file name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) + + + +The functions pg_walfile_name() and pg_walfile_name_offset() used to report the previous LSN segment number when the LSN was on a file segment boundary; it now returns the LSN segment. + + + + + + + +Remove server variable trace_recovery_messages since it is no longer needed (Bharath Rupireddy) + + + + + + + +Remove information schema column element_types.domain_default (Peter Eisentraut) + + + + + + + +Change pgrowlocks lock mode output labels (Bruce Momjian) + + + + + + + +Rename I/O block read/write timing statistics columns of pg_stat_statement (Nazir Bilal Yavuz) + + + +This renames "blk_read_time" to "shared_blk_read_time", and "blk_write_time" to "shared_blk_write_time". + + + + + + + +Remove buffers_backend and buffers_backend_fsync from pg_stat_checkpointer (Bharath Rupireddy) + + + +These fields are considered redundant to similar columns in pg_stat_io. + + + + + + + +Change pg_attribute.attstattarget and pg_attribute.stxstattarget to represent the default statistics target as NULL (Peter Eisentraut) + + + + + + + +Change pg_stat_progress_vacuum columns max_dead_tuples to max_dead_tuple_bytes and num_dead_tuples to dead_tuple_bytes (Masahiko Sawada) + + + +These columns now report bytes instead of tuples. + + + + + + + +Rename SLRU columns in system view pg_stat_slru (Alvaro Herrera) + + + +The column names accepted by pg_stat_slru_rest() are also changed. + + + + + + + + + Changes + + + Below you will find a detailed account of the changes between + PostgreSQL 17 and the previous major + release. + + + + Server + + + Optimizer + + + + + + + +Allow the optimizer to improve CTE plans by using the statistics of columns referenced in earlier CTE clauses (Jian Guo, Tom Lane) + + + + + + + +Allow the optimizer to improve CTE plans by using the sort order of columns referenced in earlier CTE clauses (Jian Guo) + + + + + + + +Improve optimization of IS NOT NULL and IS NULL query restrictions (David Rowley, Richard Guo, Andy Fan) + + + +Remove IS NOT NULL query restrictions on NOT NULL columns and eliminate scans on NOT NULL columns if IS NULL is specified. + + + + + + + +Allow partition pruning on boolean columns on IS [NOT] UNKNOWN conditionals (David Rowley) + + + + + + + +Improve optimization of range values when using containment operators <@ and @> (Kim Johan Andersson, Jian He) + + + + + + + +Allow query nodes to be run in parallel in more case (Tom Lane) + + + + + + + +Allow GROUP BY columns to be internally ordered to match ORDER BY (Andrei Lepikhov, Teodor Sigaev) + + + +This can be disabled using server variable enable_group_by_reordering. + + + + + + + +Allow UNION (without ALL) to use MergeAppend (David Rowley) + + + + + + + +Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted (Alexander Kuzmenkov) + + + + + + + +Allow GiST and SP-GiST indexes to be part of incremental sorts (Miroslav Bendik) + + + +This is particularly useful for ORDER BY clauses where the first column has a GiST and SP-GiST index, and other columns do not. + + + + + + + +Add columns to pg_stats to report range histogram information (Egor Rogov, Soumyadeep Chakraborty) + + + + + + + + + Indexes + + + + + + +Allow btree indexes to more efficiently find array matches (Peter Geoghegan, Matthias van de Meent) + + + + + + + +Allow a BRIN indexes to be created using parallel workers (Tomas Vondra, Matthias van de Meent) + + + + + + + +Add stratnum GiST support function (Paul A. Jungwirth) + + + + + + + + + General Performance + + + + + + + +Allow vacuum to more efficiently freeze tuples (Melanie Plageman) + + + + + + + +Optimize vacuuming of relations with no indexes (Melanie Plageman) + + + + + + + +Increase default vacuum_buffer_usage_limit to 2MB (Thomas Munro) + + + + + + + +Improve performance when checking roles with many memberships (Nathan Bossart) + + + + + + + +Improve performance of heavily-contended WAL writes (Bharath Rupireddy) + + + + + + + +Allow the grouping of file system reads with the new system variable io_combine_limit (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) + + + + + + + + + Monitoring + + + + + + + +Create system view pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) + + + +Relevant columns have been removed from pg_stat_bgwriter and added to this new system view. + + + + + + + +Allow pg_stat_reset_shared() to reset all shared statistics (Atsushi Torikoshi) + + + +This is done by passing NULL. + + + + + + + +Allow pg_stat_reset_shared("slru") to clear SLRU statistics (Atsushi Torikoshi) + + + +Now pg_stat_reset_shared(NULL) also resets SLRU statistics. + + + + + + + +Allow pg_stat_reset_slru() to reset all SLRU statistics (Bharath Rupireddy) + + + +The command pg_stat_reset_slru(NULL) already did this. + + + + + + + +Add log messages related to WAL recovery from backup (Andres Freund) + + + + + + + +Add log_connections log line for "trust" connections (Jacob Champion) + + + + + + + +Add log message to report walsender acquisition and release of replication slots (Bharath Rupireddy) + + + +This is enabled by the server variable log_replication_commands. + + + + + + + +Fix emit_log_hook to use the same time value as other log records for the same query (Kambam Vinay, Michael Paquier) + + + + + + + +Add system view pg_wait_events that reports wait event types (Michael Paquier) + + + +This is useful for adding descriptions to wait events reported in pg_stat_activity. + + + + + + + +Add wait events for checkpoint delays (Thomas Munro) + + + + + + + +Allow vacuum to report the progress of index processing (Sami Imseih) + + + +This appears in system view columns pg_stat_progress_vacuum.indexes_total and pg_stat_progress_vacuum.indexes_processed. + + + + + + + +Add server variable trace_connection_negotiation to allow debugging of connection encryption (Heikki Linnakangas, Kyotaro Horiguchi) + + + + + + + + + Privileges + + + + + + + +Add per-table GRANT permission MAINTAIN to control maintenance operations (Nathan Bossart) + + + +The operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZE VIEW, CLUSTER, and LOCK TABLE. + + + + + + + +Add user-grantable role pg_maintain to control maintenance operations (Nathan Bossart) + + + +The operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZE VIEW, CLUSTER, and LOCK TABLE. + + + + + + + +Allow roles with pg_monitor privileges to execute pg_current_logfile() (Pavlo Golub, Nathan Bossart) + + + + + + + + + Server Configuration + + + + + + + +Add system variable allow_alter_system to disallow ALTER SYSTEM (Jelte Fennema-Nio, Gabriele Bartolini) + + + + + + + +Allow ALTER SYSTEM to set unrecognized custom server variables (Tom Lane) + + + +This is also possible with GRANT ON PARAMETER. + + + + + + + +Add server variable transaction_timeout to restrict the duration of transactions (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov) + + + + + + + +Create a "builtin" collation provider similar to libc's C locale (Jeff Davis) + + + +It uses a "C" locale which is identical but independent of libc, but it allows the use of non-"C" collations like "en_US" and "C.UTF-8" with the "C" locale, which libc does not. MORE? + + + + + + + +Add server variable huge_pages_status to report the use of huge pages by Postgres (Justin Pryzby) + + + +This is useful when huge_pages is set to "try". + + + + + + + +Add server variable to disable event triggers (Daniel Gustafsson) + + + +The setting, event_triggers, allows for the temporary disabling of event triggers for debugging. + + + + + + + +Allow the SLRU cache sizes to be configured (Andrey Borodin, Dilip Kumar) + + + +The new server variables are commit_timestamp_buffers, multixact_member_buffers, multixact_offset_buffers, notify_buffers, serializable_buffers, subtransaction_buffers, and +transaction_buffers. + + + + + + + + + Streaming Replication and Recovery + + + + + + + +Add support for incremental file system backup (Robert Haas, Jakub Wartak, Tomas Vondra) + + + +Incremental backups can be created using pg_basebackup's new --incremental option. The new application pg_combinebackup allows manipulation of base and incremental file system backups. + + + + + + + +Allow the creation of WAL summarization files (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) + + + +These files record the block numbers that have changed within an LSN range, and is useful for incremental file system backups. This is controlled by the server variables +summarize_wal and wal_summarize_keep_time, and introspected with pg_available_wal_summaries(), pg_wal_summary_contents(), and pg_get_wal_summarizer_state(). + + + + + + + +Add the system identifier to file system backup manifest files (Amul Sul) + + + +This helps detect invalid WAL usage. + + + + + + + +Allow connection string value dbname to be written when pg_basebackup writes connection information to postgresql.auto.conf (Vignesh C, Hayato Kuroda) + + + + + + + +Add column pg_replication_slots.invalidation_reason to report the reason for invalid slots (Shveta Malik, Bharath Rupireddy) + + + + + + + +Add pg_replication_slots.inactive_since to report slot inactivity duration (Bharath Rupireddy) + + + + + + + +Add function pg_sync_replication_slots() to synchronize logical replication slots (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) + + + + + + + +Add the failover property to the replication protocol (Hou Zhijie, Shveta Malik) + + + + + + + + + <link linkend="logical-replication">Logical Replication</link> + + + + + + + +Add application pg_createsubscriber to create a logical replica from a physical standby server (Euler Taveira) + + + + + + + +Have pg_upgrade migrate valid logical slots and subscriptions (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) + + + +This allows logical replication to continue quickly after the upgrade. This only works for old clusters of PostgreSQL version 17.0 or later. + + + + + + + +Enable the failover of logical slots (Hou Zhijie, Shveta Malik, Ajin Cherian) + + + +This is controlled by an optional fifth argument to pg_create_logical_replication_slot(). + + + + + + + +Add server variable sync_replication_slots to enable failover logical slot synchronization (Shveta Malik, Hou Zhijie, Peter Smith) + + + + + + + +Add logical replication failover control to CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian) + + + + + + + +Allow the application of logical replication changes to use hash indexes on the subscriber (Hayato Kuroda) + + + +Previously only btree indexes could be use for this purpose. + + + + + + + +Restart apply workers if subscription owner's superuser privileges are revoked (Vignesh C) + + + +This forces reauthentication. + + + + + + + +Add "flush" option to pg_logical_emit_message() (Michael Paquier) + + + +This makes the message durable. + + + + + + + +Allow specification of physical standbys that must be synchronized before they are visible to subscribers (Hou Zhijie, Shveta Malik) + + + +The server variable is standby_slot_names. + + + + + + + +Add worker type column to pg_stat_subscription (Peter Smith) + + + + + + + + + + + Utility Commands + + + + + + + +Add new COPY option "ON_ERROR ignore" to discard error rows (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Jian He, Yugo Nagata) + + + +The default behavior is "ON_ERROR stop". + + + + + + + +Add new COPY option LOG_VERBOSITY which reports COPY FROM ignored error rows (Bharath Rupireddy) + + + + + + + +Allow COPY FROM to report the number of skipped rows during processing (Atsushi Torikoshi) + + + +This appears in system view column pg_stat_progress_copy.tuples_skipped. + + + + + + + +In COPY FROM, allow easy specification that all columns should be forced null or not null (Zhang Mingli) + + + + + + + +Allow EXPLAIN to report optimizer memory usage (Ashutosh Bapat) + + + +The option is called "MEMORY". + + + + + + + +Add EXPLAIN option SERIALIZE to report the cost of converting data for network transmission (Stepan Rutz, Matthias van de Meent) + + + + + + + +Add local I/O block read/write timing statistics to EXPLAIN (Nazir Bilal Yavuz) + + + + + + + +Improve EXPLAIN's display of SubPlan nodes and output parameters (Tom Lane, Dean Rasheed) + + + + + + + +Add JIT deform_counter details to EXPLAIN (Dmitry Dolgov) + + + + + + + +Allow partitions to be merged using ALTER TABLE ... MERGE PARTITIONS (Dmitry Koval) + + + + + + + +Allow partitions to be split using ALTER TABLE ... SPLIT PARTITION (Dmitry Koval) + + + + + + + +Allow partitioned tables to have identity columns (Ashutosh Bapat) + + + + + + + +Allow exclusion constraints on partitioned tables (Paul A. Jungwirth) + + + +As long as exclusion constraints compare partition key columns for equality, other columns can use exclusion constraint-specific comparisons. + + + + + + + +All specification of partitioned table access methods (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) + + + + + + + +Add clearer ALTER TABLE method to set a column to the default statistics target (Peter Eisentraut) + + + +The command is ALTER TABLE ... SET STATISTICS DEFAULT; using "SET STATISTICS -1" is still supported. + + + + + + + +Allow ALTER TABLE to change a columns generation expression (Amul Sul) + + + +The syntax is "ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION". + + + + + + + +Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD (Michael Paquier) + + + + + + + +Allow foreign keys to reference WITHOUT OVERLAPS primary keys (Paul A. Jungwirth) + + + +The keyword PERIOD is used for this purpose. + + + + + + + +Allow PRIMARY KEY and UNIQUE constraints to use WITHOUT OVERLAPS for non-overlapping exclusion constraints (Paul A. Jungwirth) + + + + + + + +Add support for event triggers that fire at connection time (Konstantin Knizhnik, Mikhail Gribkov) + + + + + + + +Add event trigger support for REINDEX (Garrett Thornburg, Jian He) + + + + + + + +Allow NOT NULL columns to be specified as column constraints and domains (Alvaro Herrera, Bernd Helmle, Kyotaro Horiguchi, Peter Eisentraut) + + + +Previously NOT NULL could only be specified as a column attribute. + + + + + + + +Allow parenthesized syntax for CLUSTER options if a table name is not specified (Nathan Bossart) + + + + + + + + + Data Types + + + + + + + +Allow the interval data type to support +/-infinity values (Joseph Koshakow, Jian He, Ashutosh Bapat) + + + + + + + +Allow the use of an ENUM added via ALTER TYPE if the type was created in the same transaction (Tom Lane) + + + +This was previously disallowed. + + + + + + + + + <link linkend="sql-merge">MERGE</link> + + + + + + + + +Allow MERGE to modify updatable views (Dean Rasheed) + + + + + + + +Add WHEN NOT MATCHED BY SOURCE to MERGE (Dean Rasheed) + + + +"WHEN NOT MATCHED" on target rows was already supported. + + + + + + + +Allow MERGE to use the RETURNING clause (Dean Rasheed) + + + +The new RETURNING function merge_action() reports on the DML that generated the row. + + + + + + + + + Functions + + + + + + + +Add function JSON_TABLE() to convert JSON data to a table representation (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) + + + +This function can be used in the FROM clause of SELECT queries as a tuple source. + + + + + + + +Add SQL/JSON constructor functions JSON(), JSON_SCALAR(), and JSON_SERIALIZE() (Amit Langote) + + + + + + + +Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, +Peter Eisentraut, Jian He) + + + + + + + +Add jsonpath methods to convert JSON values to different data types (Jeevan Chalke) + + + +The jsonpath methods are .bigint(), .boolean(), .date(), .decimal([precision [, scale]]), .integer(), .number(), .string(), .time(), .time_tz(), .timestamp(), and .timestamp_tz(). + + + + + + + +Add to_timestamp() time zone format specifiers (Tom Lane) + + + +"TZ" accepts time zone abbreviations or numeric offsets, while "OF" accepts only numeric offsets. + + + + + + + +Allow the session time zone to be specified by AS LOCAL (Vik Fearing) + + + +This is useful when converting adding and removing time zones from time stamps values, rather than specifying the literal session time zone. + + + + + + + +Add functions uuid_extract_timestamp() and uuid_extract_version() to return UUID information (Andrey Borodin) + + + + + + + +Add functions to generate random numbers in a specified range (Dean Rasheed) + + + +The functions are random(min, max) and they take values of type integer, bigint, and numeric. + + + + + + + +Add functions to convert integers to hex and binary strings (Eric Radman, Nathan Bossart) + + + +The functions are to_bin() and to_oct(). + + + + + + + +Add Unicode informational functions (Jeff Davis) + + + +Function unicode_version() returns the Unicode version, icu_unicode_version() returns the ICU version, and unicode_assigned() returns if the characters are assigned Unicode codepoints. + + + + + + + +Add function XMLText() to convert text to a single XML text node (Jim Jones) + + + + + + + +Add function to_regtypemod() to return the typemod of a string (David Wheeler, Erik Wienhold) + + + + + + + +Add pg_basetype() function to return a domain's base type (Steve Chavez) + + + + + + + +Add function pg_column_toast_chunk_id() to return a value's TOAST identifier (Yugo Nagata) + + + +This returns NULL if the value is not stored in TOAST. + + + + + + + + + <link linkend="plpgsql">PL/pgSQL</link> + + + + + + + +Allow plpgsql %TYPE and %ROWTYPE specifications to represent arrays of non-array types (Quan Zongliang, Pavel Stehule) + + + + + + + +Allow plpgsql %TYPE specification to reference composite column (Tom Lane) + + + + + + + + + <link linkend="libpq">libpq</link> + + + + + + + +Add libpq function to change role passwords (Joe Conway) + + + +The new function, PQchangePassword(), hashes the new password before sending it to the server. + + + + + + + +Add libpq functions to close portals and prepared statements (Jelte Fennema-Nio) + + + +The functions are PQclosePrepared(), PQclosePortal(), PQsendClosePrepared(), and PQsendClosePortal(). + + + + + + + +Add libpq API which allows for blocking and non-blocking cancel requests, with encryption if already in use (Jelte Fennema-Nio) + + + +Previously only blocking, unencrypted cancel requests were supported. + + + + + + + +Add libpq function PQsocketPoll to allow polling of network sockets (Tristan Partin) + + + + + + + +Add libpq function PQsendPipelineSync() to send a pipeline synchronization point (Anton Kirilov) + + + +This is similar to PQpipelineSync() but it does not flush to the server unless the size threshold of the output buffer is reached. + + + + + + + +Add libpq function PQsetChunkedRowsMode to allow retrieval of results in chunks (Daniel Vérité) + + + + + + + +Allow TLS connections without requiring a network round-trip negotiation (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) + + + +This is enabled with the client-side option sslnegotation=direct, requires ALPN, and only works on PostgreSQL 17 and later servers. + + + + + + + + + <xref linkend="app-psql"/> + + + + + + + +Improve psql display of default and empty privileges (Erik Wienhold, Laurenz Albe) + + + +Command \dp now displays "(none)" for empty privileges; default still display as empty. + + + + + + + +Have backslash commands honor "\pset null" (Erik Wienhold, Laurenz Albe) + + + +Previously "\pset null" was ignored. + + + + + + + +Allow psql's \watch to stop after a minimum number of rows returned (Greg Sabino Mullane) + + + +The parameter is "min_rows". + + + + + + + +Improve psql tab completion (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Dagfinn Ilmari Mannsåker, Pavel Borisov) + + + + + + + + + Server Applications + + + + + + + +Add application pg_walsummary to dump WAL summary files (Robert Haas) + + + + + + + +Allow pg_dump's large objects to be restorable in batches (Tom Lane) + + + +This allows the restoration of many large objects to avoid transaction limits and to be restored in parallel. + + + + + + + +Add pg_dump option --exclude-extension (Ayush Vatsa) + + + + + + + +Allow pg_dump, pg_dumpall, and pg_restore to specify include/exclude objects in a file (Pavel Stehule, Daniel Gustafsson) + + + +The option is called "--filter". + + + + + + + +Add the --sync-method parameter to several client applications (Justin Pryzby, Nathan Bossart) + + + +The applications are initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, and pg_upgrade. + + + + + + + +Add pg_restore option --transaction-size to allow object restore in transaction batches (Tom Lane) + + + +This allows the performance benefits of transaction batches without the problems of excessively large transaction blocks. + + + + + + + +Change pgbench debug mode option from -d to --debug (Greg Sabino Mullane) + + + +Option -d is now used for the database name, and the new --dbname option can be used as well. + + + + + + + +Add pgbench option "--exit-on-abort" to exit after any client aborts (Yugo Nagata) + + + + + + + +Add pgbench command \syncpipeline to allow sending of sync messages (Anthonin Bonnefoy) + + + + + + + +Allow pg_archivecleanup to remove backup history files (Atsushi Torikoshi) + + + +The option is --clean-backup-history. + + + + + + + +Add some long options to pg_archivecleanup (Atsushi Torikoshi) + + + +The long options are --debug, --dry-run, and /--strip-extension. + + + + + + + +Allow pg_basebackup and pg_receivewal to use dbname in their connection specification (Jelte Fennema-Nio) + + + +This is useful for connection poolers who are sensitive to the database name. + + + + + + + +Add pg_upgrade option --copy-file-range (Thomas Munro) + + + +This is supported on Linux and FreeBSD. + + + + + + + +Allow reindexdb --index to process indexes from different tables in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) + + + + + + + +Allow reindexdb to process objects in all databases matching a pattern (Nathan Bossart) + + + +Specifically, --all can now be used with --table, --schema, --index, and --system. + + + + + + + +Allow vacuumdb to process objects in all databases matching a pattern (Nathan Bossart) + + + +Specifically, --all can now be used with --table, --schema, and --exclude-schema. + + + + + + + +Allow clusterdb to process objects in all databases matching a pattern (Nathan Bossart) + + + +Specifically, --all can now be used with --table. + + + + + + + + + Source Code + + + + + + + +Remove support for OpenSSL 1.0.1 (Michael Paquier) + + + + + + + +Allow tests to pass in OpenSSL FIPS mode (Peter Eisentraut) + + + + + + + +Use CPU AVX-512 instructions for bit counting (Paul Amonson, Nathan Bossart, Ants Aasma) + + + + + + + +Require LLVM version 10 or later (Peter Eisentraut) + + + + + + + +Use native CRC instructions on 64-bit LoongArch CPUs (YANG Xudong) + + + + + + + +Remove AIX support (Heikki Linnakangas) + + + + + + + +Remove the ability to build Postgres with Visual Studio (Michael Paquier) + + + +Meson is now the only available Windows build method. + + + + + + + +Remove configure option --disable-thread-safety (Thomas Munro, Heikki Linnakangas) + + + +We now assume all supported platforms have sufficient thread support. + + + + + + + +Remove configure option --with-CC (Heikki Linnakangas) + + + +Setting the CC environment variable is now the only supported method for specifying the compiler. + + + + + + + +User-defined data type receive functions will no longer receive their data null-terminated (David Rowley) + + + + + + + +Convert source code README to Markdown (Nathan Bossart) + + + + + + + +Remove no longer needed top-level INSTALL file (Tom Lane) + + + + + + + +Remove make's distprep option (Peter Eisentraut) + + + + + + + +Add 'make' support for Android shared libraries (Peter Eisentraut) + + + + + + + +Add backend support for injection points (Michael Paquier) + + + +This is used for server debugging and they must be enabled at server compile time. + + + + + + + +Improve documentation for using jsonpath for predicate checks (David Wheeler) + + + + + + + +Add function pg_buffercache_evict() to allow shared buffer eviction (Palak Chaturvedi, Thomas Munro) + + + +This is useful for testing. + + + + + + + + + Additional Modules + + + + + + + +Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans (Richard Guo, Etsuro Fujita) + + + +Foreign data wrappers and custom scans will need to be modified to handle these cases. + + + + + + + +Allow pushdown of EXISTS and IN subqueries to the postgres_fdw foreign server (Alexander Pyhalov) + + + + + + + +Double the default foreign data wrapper tuple cost (David Rowley, Umair Shahid) + + + +This value is used by the optimizer. + + + + + + + +Create custom wait events for postgres_fdw (Masahiro Ikeda) + + + + + + + +Create custom wait events for dblink (Masahiro Ikeda) + + + + + + + +Allow dblink database operations to be interrupted (Noah Misch) + + + + + + + +Allow the creation of hash indexes on ltree columns (Tommy Pavlicek) + + + +This also enables hash join and hash aggregation on ltree columns. + + + + + + + +Allow unaccent character translation rules to contain whitespace and quotes (Michael Paquier) + + + +The syntax for unaccent.rules has changed. + + + + + + + +Allow amcheck to check for unique constraint violations (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) + + + +The pg_amcheck option --checkunique will check all the unique indexes. + + + + + + + +Allow citext tests to pass in OpenSSL FIPS mode (Peter Eisentraut) + + + + + + + +Allow pgcrypto tests to pass in OpenSSL FIPS mode (Peter Eisentraut) + + + + + + + +Remove some unused SPI macros (Bharath Rupireddy) + + + + + + + +Remove adminpack contrib extension (Daniel Gustafsson) + + + +This was used by non-end-of-life pgAdmin III. + + + + + + + +Allow ALTER OPERATOR to set more optimization attributes (Tommy Pavlicek) + + + +This is useful for extensions. + + + + + + + +Allow extensions to define custom wait events (Masahiro Ikeda) + + + + + + + <link linkend="pgstatstatements"><application>pg_statstatements</application></link> + + + + + + + +Replace CALL parameters in pg_stat_statements with placeholders (Sami Imseih) + + + + + + + +Replace savepoint names stored in pg_stat_statements with placeholders (Greg Sabino Mullane) + + + +This greatly reduces the number of entries needed to record SAVEPOINT, RELEASE SAVEPOINT, and ROLLBACK TO SAVEPOINT commands. + + + + + + + +Replace two-phase commit GIDs stored in pg_stat_statements with placeholders (Michael Paquier) + + + +This greatly reduces the number of entries needed to record PREPARE TRANSACTION, COMMIT PREPARED, and ROLLBACK PREPARED. + + + + + + + +Track DEALLOCATE in pg_stat_statements (Michael Paquier) + + + +DEALLOCATE names are stored in pg_stat_statements as placeholders. + + + + + + + +Add local I/O block read/write timing statistics columns of pg_stat_statement (Nazir Bilal Yavuz) + + + +The new columns are "local_blk_read_time" and "local_blk_write_time". + + + + + + + +Add JIT deform_counter details to pg_stat_statements (Dmitry Dolgov) + + + + + + + +Add optional fourth parameter to pg_stat_statements_reset() to allow for the resetting of only min/max statistics (Andrei Zubkov) + + + +This parameter defaults to "false". + + + + + + + +Add pg_stat_statements columns "stats_since" and "minmax_stats_since" to track entry creation time and last min/max reset time (Andrei Zubkov) + + + + + + + + + + + + + Acknowledgments + + + The following individuals (in alphabetical order) have contributed + to this release as patch authors, committers, reviewers, testers, + or reporters of issues. + + + + + + + +