+ linkend="pgupgrade"/> or logical replication is required for those
+ wishing to migrate data from any previous release. See
+ linkend="upgrading"/> for general information on migrating to new major
+ releases.
+
+
+
+ Version 14 contains a number of changes that may affect compatibility
+ with previous releases. Observe the following incompatibilities:
+
+
+
+
+
+
+
+
+Prevent the containment operators (<@ and @>) for contrib/intarray from using GiST indexes (Tom Lane)
+
+
+
+Previously a full GiST index scan was required, so just avoid that and scan the heap, which is faster.
+EXISTING INDEXES? REMOVE?
+
+
+
+
+
+
+
+Disallow single-quoting of the language name in the CREATE/DROP LANGUAGE command (Peter Eisentraut)
+
+
+
+
+
+
+
+Make websearch_to_tsquery() parse text in quotes as a single token (Alexander Korotkov)
+
+
+
+DETAILS? ALREADY CHANGED ABOVE.
+
+
+
+
+
+
+
+Change EXTRACT to return the NUMERIC data type (Peter Eisentraut)
+
+
+
+EXTRACT(date) now throws an error for units that are not part of the date data type.
+
+
+
+
+
+
+
+Pass doubled quote marks in ecpg SQL command strings literally (Tom Lane)
+
+
+
+Previously 'abc''def' was passed to the server as 'abc'def'; "abc""def" was passed as "abc"def".
+
+
+
+
+
+
+
+Prevent tablefunc's function normal_rand() from accepting negative values (Ashutosh Bapat)
+
+
+
+Negative values produced undesirable results.
+
+
+
+
+
+
+
+Fix handling of infinite window function ranges (Tom Lane)
+
+
+
+Previously window frame clauses like 'inf' PRECEDING AND 'inf' FOLLOWING returned incorrect results.
+
+
+
+
+
+
+
+Change var_samp() and stddev_samp() with numeric parameters to return NULL for a single NaN value (Tom Lane)
+
+
+
+Previously NaN was returned.
+
+
+
+
+
+
+
+Remove support for SSL compression (Daniel Gustafsson, Michael Paquier)
+
+
+
+This was already disabled by default in previous Postgres releases, and most modern OpenSSL and TLS versions no longer support it.
+
+
+
+
+
+
+
+Remove containment operators @ and ~ from contrib modules cube, hstore, intarray, and seg (Justin Pryzby)
+
+
+
+The more consistent containment operators <@ and @> have been supported since PostgreSQL 8.2 (year 2006).
+
+
+
+
+
+
+
+Remove server and libpq support for the version 2 wire protocol (Heikki Linnakangas)
+
+
+
+This was last used as the default in Postgres 7.2 (year 2002).
+
+
+
+
+
+
+
+Improve handling of regular expression back-references (Tom Lane)
+
+
+
+For example, disregard ^ in its expansion in \1 in "(^\d+).*\1".
+
+
+
+
+
+
+
+Allow \D and \W shorthands to match newlines in newline-sensitive mode (Tom Lane)
+
+
+
+Previously they did not match; [^[:digit:]] or [^[:word:]] can be used to get the old behavior.
+
+
+
+
+
+
+
+Disallow \w as range start/end in character classes (Tom Lane)
+
+
+
+This previously was allowed but produced incorrect results.
+
+
+
+
+
+
+
+Remove contrib program pg_standby (Justin Pryzby)
+
+
+
+
+
+
+
+Remove deprecated containment operators for built-in geometry data types (Justin Pryzby)
+
+
+
+The more consistent <@ and @> have been recommended for many years.
+
+
+
+
+
+
+
+Overhaul the specification of clientcert in pg_hba.conf (Kyotaro Horiguchi)
+
+
+
+Values 1/0/no-verify are no longer supported; only the strings verify-ca and verify-full can be used. Also, disallow verify-ca if cert authentication is enabled since cert requires verify-full
+checking.
+
+
+
+
+
+
+
+Remove factorial operators ! and !! (Mark Dilger)
+
+
+
+The factorial() function is still supported. Also remove function numeric_fac().
+
+
+
+
+
+
+
+Disallow factorial() of negative numbers (Peter Eisentraut)
+
+
+
+Previously such cases returned 1.
+
+
+
+
+
+
+
+Remove support for postfix (right-unary) operators (Mark Dilger)
+
+
+
+pg_dump and pg_upgrade will warn if post-fix operators are being dumped.
+
+
+
+
+
+
+
+Avoid retrieval of CHECK constraints and DEFAULT exprs in data-only dump (Julien Rouhaud)
+
+
+
+IS THIS BACKWARD INCOMPATIBLE?
+
+
+
+
+
+
+
+Remove composite types for sequences or toast tables (Tom Lane)
+This was needed for warning applications about PostgreSQL 9.5 changes.
+
+
+
+
+
+
+
+Initialize work_mem and maintenance_work_mem using current guc.c default (Peter Geoghegan)
+
+
+
+Oversight in commit 848ae330a49, which increased the previous defaults
+for work_mem and maintenance_work_mem by 4X. IS THIS A BEHAVIORAL CHANGE?
+
+
+
+
+
+
+
+Remove password_encryption's support for boolean values, e.g. true (Peter Eisentraut)
+
+
+
+Previous boolean values enabled md5. Now, only the md5 string does this.
+
+
+
+
+
+
+
+
+ Changes
+
+
+ Below you will find a detailed account of the changes between
+ PostgreSQL 14 and the previous major
+ release.
+
+
+
+ Server
+
+
+
+
+
+
+
+Add function pg_wait_for_backend_termination() that waits for session exit (Bharath Rupireddy)
+
+
+
+Also add a similar optional wait parameter to pg_terminate_backend().
+
+
+
+
+
+
+
+Improve autovacuum's analyze of partitioned tables (Yuzuko Hosoya)
+
+
+
+DETAILS?
+
+
+
+
+
+
+
+Allow vacuum to skip index vacuuming when the number of removable index entries is insignificant (Masahiko Sawada, Peter Geoghegan)
+
+
+
+
+
+
+
+Cause vacuum operations to be aggressive if the table is near xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)
+
+
+
+This is controlled by vacuum_failsafe_age and vacuum_multixact_failsafe_age.
+
+
+
+
+
+
+
+Add a predefined role to match the database owner (Noah Misch)
+
+
+
+It is called pg_database_owner; this is useful in template databases.
+
+
+
+
+
+
+
+Add predefined roles pg_read_all_data and pg_write_all_data (Stephen Frost)
+
+
+
+These non-login roles give read-only/write-only access to all objects.
+
+
+
+
+
+
+
+Add long-running queries to be canceled if the client disconnects (Sergey Cherkashin, Thomas Munro)
+
+
+
+The server variable check_client_connection_interval allows supporting operating systems, e.g., Linux, to automatically cancel queries by disconnected clients.
+
+
+
+
+
+
+
+Remove temporary files after backend crashes (Euler Taveira)
+
+
+
+These files were previously retained for debugging purposes; deletion can be disabled with remove_temp_files_after_crash.
+
+
+
+
+
+
+ Partitioning
+
+
+
+
+
+
+
+Allow partitions to be detached in a non-blocking manner (Álvaro Herrera)
+
+
+
+The syntax is ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY, and FINALIZE.
+
+
+
+
+
+
+
+Allow the arbitrary collations of partition boundary values (Tom Lane)
+
+
+
+Previously it had to match the collation of the partition key.
+
+
+
+
+
+
+
+
+ Indexes
+
+
+
+
+
+
+
+Remove expired btree index entries to prevent page splits (Peter Geoghegan)
+
+
+
+This is particularly helpful for reducing index bloat on tables that frequently update indexed columns.
+
+
+
+
+
+
+
+Allow BRIN indexes to record multiple min/max values per range (Tomas Vondra)
+
+
+
+This is useful if there are groups of values in each page range.
+
+
+
+
+
+
+
+Allow BRIN indexes to use bloom filters (Tomas Vondra)
+
+
+
+This allows bloom indexes to be used effectively with data that is not physically localized in the heap.
+
+
+
+
+
+
+
+Allow SP-GiST to use INCLUDE'd columns (Pavel Borisov)
+
+
+
+
+
+
+
+Allow some GiST index to be built by presorting the data (Andrey Borodin)
+
+
+
+Presorting happens automatically and allows for faster index creation and smaller indexes.
+
+
+
+
+
+
+
+
+ Optimizer
+
+
+
+
+
+
+
+Allow extended statistics on expressions (Tomas Vondra)
+
+
+
+This allows statistics on a group of expressions and columns, rather than only columns like previously. System view pg_stats_ext_exprs reports such statistics.
+ALTER TABLE ... ALTER COLUMN ... TYPE RESETS STASTISTICS?
+
+
+
+
+
+
+
+Increase the number of places extended statistics can be used for OR clause estimation (Tomas Vondra, Dean Rasheed)
+
+
+
+
+
+
+
+
+ General Performance
+
+
+
+
+
+
+
+Improve speed of computing MVCC visibility snapshots on systems with many CPUs and high session count (Andres Freund)
+
+
+
+This also improves performance when there are many idle sessions.
+
+
+
+
+
+
+
+Add executor method to cache results from the inner-side of joins (David Rowley)
+
+
+
+This is useful if only a small percentage of rows is checked on the inner side.
+
+
+
+
+
+
+
+Allow multiple foreign table scans to be run in parallel (Robert Haas, Kyotaro Horiguchi, Thomas Munro, Etsuro Fujita)
+
+
+
+The postgres_fdw supports these type of scans if "async_capable" is set.
+
+
+
+
+
+
+
+Add ability to use LZ4 compression on TOAST data (Dilip Kumar)
+
+
+
+This can be set at the column level, or set as a default via server setting default_toast_compression. The server must be compiled with --with-lz4 support to enable this feature; the default is still pglz.
+
+
+
+
+
+
+
+Allow analyze to do page prefetching (Stephen Frost)
+
+
+
+This is controlled by maintenance_io_concurrency.
+
+
+
+
+
+
+
+Improve the performance of parallel sequential scans (Thomas Munro, David Rowley)
+
+
+
+This was done by allocating blocks in groups to parallel workers.
+
+
+
+
+
+
+
+Improve the performance of regular expression comparisons (Tom Lane)
+
+
+
+
+
+
+
+Speed truncation of small tables on large shared buffer servers (Kirk Jamison)
+
+
+
+
+
+
+
+Speed up vacuuming of databases with many relations (Tatsuhito Kasahara)
+
+
+
+
+
+
+
+Allow windowing functions to perform incremental sorts (David Rowley)
+
+
+
+
+
+
+
+
+ Monitoring
+
+
+
+
+
+
+
+If server variable compute_query_id is enabled, display the hash in pg_stat_activity, EXPLAIN VERBOSE, csvlog, and optionally in log_line_prefix (Julien Rouhaud)
+
+
+
+
+
+
+
+Add information about the original user name supplied by the client to the output of log_connections (Jacob Champion)
+
+
+
+
+
+
+
+Add function pg_backend_memory_contexts() to output the memory contexts of arbitrary backends (Atsushi Torikoshi)
+
+
+
+
+
+
+
+Add per-index information to autovacuum logging output (Masahiko Sawada)
+
+
+
+
+
+
+
+Improve logging of auto-vacuum and auto-analyze (Stephen Frost, Jakub Wartak)
+
+
+
+This reports I/O timings for auto-vacuum and auto-analyze if track_io_timing is enabled. Also, report buffer read and dirty rates for auto-analyze.
+
+
+
+
+
+
+
+
+ System Views
+
+
+
+
+
+
+
+Make the archiver process visible in pg_stat_activity (Kyotaro Horiguchi)
+
+
+
+
+
+
+
+Improve pg_stat_activity reporting for walsenders processes (Tom Lane)
+
+
+
+Previously only SQL commands were reported.
+
+
+
+
+
+
+
+Add view pg_stat_progress_copy to report COPY progress (Josef Šimánek, Matthias van de Meent)
+
+
+
+
+
+
+
+Add system view pg_stat_wal which reports WAL activity (Masahiro Ikeda)
+
+
+
+
+
+
+
+Add lock wait time to pg_locks (Atsushi Torikoshi)
+
+
+
+
+
+
+
+Add session statistics to the pg_stat_database system view (Laurenz Albe)
+
+
+
+
+
+
+
+Add system view pg_stat_replication_slots to report replication slot activity (Sawada Masahiko, Amit Kapila)
+THIS IS LOGICAL ONLY, BUT NO "LOGICAL" IN THE NAME? IS "ACTIVITY" THE RIGHT WORD?
+
+
+
+
+
+
+
+Add system view pg_backend_memory_contexts to report session memory usage (Atsushi Torikoshi, Fujii Masao)
+
+
+
+
+
+
+
+Add columns to pg_prepared_statements to report generic and custom plan counts (Atsushi Torikoshi, Kyotaro Horiguchi)
+
+
+
+
+
+
+
+Add wait event WalReceiverExit to report WAL receiver exit wait time (Fujii Masao)
+
+
+
+
+
+
+
+
+ Authentication
+
+
+
+
+
+
+
+Change password_encryption's default to scram-sha-256 (Peter Eisentraut)
+
+
+
+Previously it was md5.
+
+
+
+
+
+
+
+Allow more than the common name (CN) to be matched for client certificate authentication (Andrew Dunstan)
+
+
+
+The new pg_hba.conf keyword "clientname=DN" allows comparison with non-CN certificate attributes and can be combined with ident maps.
+
+
+
+
+
+
+
+Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
+
+
+
+
+
+
+
+Allow pg_hba.conf and pg_ident.conf records to span multiple lines (Fabien Coelho)
+
+
+
+A backslash at the end of a line allows record contents to be continued on the next line.
+
+
+
+
+
+
+
+
+ Server Configuration
+
+
+
+
+
+
+
+Add server setting idle_session_timeout to close idle sessions (Li Japin)
+
+
+
+This is similar to idle_in_transaction_session_timeout.
+
+
+
+
+
+
+
+Force custom server variable names to match the pattern used for unquoted SQL identifiers (Tom Lane)
+
+
+
+
+
+
+
+Change checkpoint_completion_target default to 0.9 (Stephen Frost)
+
+
+
+The previous default was 0.5.
+
+
+
+
+
+
+
+Reduce the default value of vacuum_cost_page_miss (Peter Geoghegan)
+
+
+
+This new default better reflects current hardware capabilities.
+
+
+
+
+
+
+
+Add Set Server Name Indication (SNI) for SSL connection packets (Peter Eisentraut)
+
+
+
+This can be disabled by turning client options "sslsni" off.
+
+
+
+
+
+
+
+Allow the specification of a certificate revocation list (CRL) directory (Kyotaro Horiguchi)
+
+
+
+This is controlled by server variable ssl_crl_dir and libpq connection option sslcrldir. Previously only CRL files could be specified.
+
+
+
+
+
+
+
+Add server variable log_recovery_conflict_waits to report long recovery conflict wait times (Bertrand Drouvot, Masahiko Sawada)
+
+
+
+
+
+
+
+Add new server-side variable in_hot_standby (Haribabu Kommi, Greg Nancarrow, Tom Lane)
+
+
+
+
+
+
+
+Allow restore_command setting to be changed during a server reload (Sergei Kornilov)
+
+
+
+You can also set restore_command to an empty string and reload to force recovery to only read from the pg_wal directory.
+
+
+
+
+
+
+
+Allow unix_socket_directories to specify paths as individual, comma-separated quoted strings (Ian Lawrence Barwick)
+
+
+
+Previously all the paths had to be in a single quoted string.
+
+
+
+
+
+
+
+Add %P to log_line_prefix to report the parallel group leader (Justin Pryzby)
+
+
+
+
+
+
+
+Increase warning time and hard limit before transaction id and multi-transaction wraparound (Noah Misch)
+
+
+
+This should reduce the number of failures without warning.
+
+
+
+
+
+
+
+Allow startup allocation of dynamic shared memory (Thomas Munro)
+
+
+
+This is controlled by min_dynamic_shared_memory. This allows more use of huge pages.
+
+
+
+
+
+
+
+Add setting huge_page_size to control the size of huge pages used on Linux (Odin Ugedal)
+
+
+
+
+
+
+
+
+
+
+ Streaming Replication and Recovery
+
+
+
+
+
+
+
+Allow control over whether logical decoding messages are sent to the replication stream (David Pirotte, Euler Taveira)
+
+
+
+
+
+
+
+Allow logical decoding to be filtered by xid (Markus Wanner)
+
+
+
+
+
+
+
+Allow file system sync at the start of crash recovery on Linux (Thomas Munro)
+
+
+
+This allows for faster recovery on systems with many database files and is enabled via recovery_init_sync_method,
+
+
+
+
+
+
+
+Allow multiple xacts during table sync in logical replication (Peter Smith, Amit Kapila, and Takamichi Osumi)
+
+
+
+IMPORTANT?
+
+
+
+
+
+
+
+Improve signal handling reliability (Fujii Masao)
+
+
+
+GENERAL ENOUGH?
+
+
+
+
+
+
+
+Allow standby servers to be rewound via pg_rewind (Heikki Linnakangas)
+
+
+
+
+
+
+
+Add support for streaming to built-in logical replication (Vondra, Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
+
+
+
+
+
+
+
+Allow logical replication to stream long transactions to standbys (Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke)
+
+
+
+Previously transactions that exceeded logical_decoding_work_mem were written to disk until the transaction completed.
+
+
+
+
+
+
+
+Immediately WAL-log subtransaction and top-level XID association (Tomas Vondra, Dilip Kumar, Amit Kapila)
+
+
+
+This is useful for logical decoding.
+
+
+
+
+
+
+
+Allow logical replication subscriptions to use binary transfer mode (Dave Cramer)
+
+
+
+This is faster than text mode, but slightly less robust.
+
+
+
+
+
+
+
+Add the replication origin to the record returned by pg_last_committed_xact() (Movead Li)
+
+
+
+
+
+
+
+Add function pg_xact_commit_timestamp_origin() to return the commit timestamp and replication origin of the specified transaction (Movead Li)
+
+
+
+
+
+
+
+Allow replication origin functions to be controlled using standard function permission controls (Martín Marqués)
+
+
+
+Previously these functions could only be executed by super-users, and still defaults do that.
+
+
+
+
+
+
+
+Generate WAL invalidations message during command completion when using logical replication (Dilip Kumar, Tomas Vondra, Amit Kapila)
+
+
+
+When logical replication is disabled, WAL invalidation messages are generated at transaction completion. This allows logical streaming of in-progress transactions.
+
+
+
+
+
+
+
+Improve the logical replication API to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar, Amit Kapila)
+
+
+
+The output functions begin with "stream". test_decoding also supports these.
+
+
+
+
+
+
+
+Pause recovery if the primary changes its parameters in a way that prevents replay on the hot standby (Peter Eisentraut)
+
+
+
+Previously the standby would shut down immediately.
+
+
+
+
+
+
+
+Enable logical replication to handle two phase commits (Ajin Cherian)
+
+
+
+This is controlled via pg_create_logical_replication_slot().
+
+
+
+
+
+
+
+Add function pg_get_wal_replay_pause_state() to report the recovery state (Dilip Kumar)
+
+
+
+It gives more detailed information than pg_is_wal_replay_paused(), which still exists.
+
+
+
+
+
+
+
+
+ SELECT, INSERT
+
+
+
+
+
+
+
+Allow the WHERE clause of ON CONFLICT to be table-qualified (Tom Lane)
+
+
+
+Only the target table can be referenced.
+
+
+
+
+
+
+
+Allow hash lookup of IN clause with many constants (James Coleman, David Rowley)
+
+
+
+Previously the only option was to sequentially scan the list of constants.
+
+
+
+
+
+
+
+Allow an alias to be specified for JOIN's USING clause (Peter Eisentraut)
+
+
+
+The alias is created by using AS after the USING clause and represents an alias for the USING columns.
+
+
+
+
+
+
+
+Allow DISTINCT to be added to GROUP BY to remove duplicate GROUPING SET combinations (Vik Fearing)
+
+
+
+For example, GROUP BY CUBE (a,b), CUBE (b,c) will generated duplicate grouping combinations without DISTINCT.
+
+
+
+
+
+
+
+Add SQL-standard SEARCH and CYCLE clauses for common table expressions (Peter Eisentraut)
+
+
+
+This could be accomplished previously using existing syntax.
+
+
+
+
+
+
+
+Properly handle DEFAULT values for columns in multi-column inserts (Dean Rasheed)
+
+
+
+This used to throw an error.
+
+
+
+
+
+
+
+Reduce the number of keywords that can't be used as column labels without "AS" (Mark Dilger)
+
+
+
+There are now 90% fewer restricted keywords.
+
+
+
+
+
+
+
+
+ Utility Commands
+
+
+
+
+
+
+
+Allow TRUNCATE to operate on foreign tables (Kazutaka Onishi, Kohei KaiGai)
+
+
+
+The postgres_fdw module also now supports this.
+
+
+
+
+
+
+
+Allow publications to be more easily added and removed (Japin Li)
+
+
+
+The new syntax is ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION. This avoids having to specify all publications to add/remove entries.
+
+
+
+
+
+
+
+Allow control over whether foreign servers keep connections open after transaction completion (Bharath Rupireddy)
+
+
+
+This is controlled by keep_connections and defaults to on.
+
+
+
+
+
+
+
+Allow REFRESH MATERIALIZED VIEW to use parallelism (Bharath Rupireddy)
+
+
+
+
+
+
+
+Allow VACUUM VERBOSE to report page deletion counts for each scan of an index (Peter Geoghegan)
+
+
+
+Previously only total page count deletion was reported.
+
+
+
+
+
+
+
+Add ability to skip vacuuming of TOAST tables (Nathan Bossart)
+
+
+
+VACUUM now has a PROCESS_TOAST which can be set to false to disable TOAST processing, and vacuumdb has a --no-process-toast option.
+
+
+
+
+
+
+
+Allow REINDEX to change the tablespace of the new index (Alexey Kondratov, Michael Paquier, Justin Pryzby)
+
+
+
+This is done by specifying a TABLESPACE clause.
+
+
+
+
+
+
+
+Add primary keys, unique constraints, and foreign keys to system catalogs (Peter Eisentraut)
+
+
+
+This helps GUI tools analyze the system tables.
+
+
+
+
+
+
+
+Add the SQL-standard clause GRANTED BY to GRANT and REVOKE (Peter Eisentraut)
+
+
+
+
+
+
+
+Fix EXPLAIN CREATE TABLE AS and EXPLAIN CREATE MATERIALIZED VIEW to honor IF NOT EXISTS (Bharath Rupireddy)
+
+
+
+Previously, if the object already exists, EXPLAIN would fail.
+
+
+
+
+
+
+
+Add OR REPLACE for CREATE TRIGGER (Takamichi Osumi)
+
+
+
+This allows pre-existing triggers to be conditionally replaced.
+
+
+
+
+
+
+
+Preserve SQL standard syntax in view definitions, if possible (Tom Lane)
+
+
+
+Previously non-function call SQL standard syntax, e.g. EXTRACT, were converted to non-SQL standard function calls.
+
+
+
+
+
+
+
+Allow CURRENT_ROLE every place CURRENT_USER is accepted (Peter Eisentraut)
+
+
+
+
+
+
+
+Allow REINDEX to process all child tables and indexes of a partitioned table (Justin Pryzby, Michael Paquier)
+
+
+
+
+
+
+
+Improve the performance of COPY FROM in binary mode (Bharath Rupireddy, Amit Langote)
+
+
+
+
+
+
+
+
+ Data Types
+
+
+
+
+
+
+
+Create composite array types for most system relations (Wenjing Zeng)
+
+
+
+
+
+
+
+Add support for multirange data types (Paul Jungwirth, Alexander Korotkov)
+
+
+
+These are like range data types, but they allow the specification of multiple, ordered, non-overlapping ranges.
+All existing range types now also support multirange versions.
+
+
+
+
+
+
+
+Add point operators <<| and |>> to be strictly above/below geometry (Emre Hasegeli)
+
+
+
+Previously >^ and <^ were marked as performing this test, but non-point geometric operators used these operators for non-strict comparisons, leading to confusion. The old operators still exist but will be
+eventually removed. ACCURATE?
+
+
+
+
+
+
+
+Improve the accuracy of floating point computations involving infinity (Tom Lane)
+
+
+
+
+
+
+
+Allow tsearch data files to have unlimited line lengths (Tom Lane)
+
+
+
+The previous limit was 4k bytes. Also remove function t_readline().
+
+
+
+
+
+
+
+Add support for infinity and -infinity values to the numeric data type (Tom Lane)
+
+
+
+Floating point data types already supported these.
+
+
+
+
+
+
+
+Allow binary data transfer to be more forgiving of array and record OID mismatches (Tom Lane)
+
+
+
+
+
+
+
+Add operators to add and subtract LSN and numeric (byte) values (Fujii Masao)
+
+
+
+
+
+
+
+Add support for the stemming of languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish (Peter Eisentraut)
+
+
+
+
+
+
+
+Have non-zero float values divided by infinity return zero (Kyotaro Horiguchi)
+
+
+
+Previously such operations produced underflow errors.
+
+
+
+
+
+
+
+Cause floating-point division of NaN by zero to return NaN (Tom Lane)
+
+
+
+Previously this returned an error. Division with Numerics always returned NaN.
+
+
+
+
+
+
+
+
+ Functions
+
+
+
+
+
+
+
+Change pg_describe_object(), pg_identify_object(), and pg_identify_object_as_address() to always report helpful error messages for non-existent objects (Michael Paquier)
+
+
+
+
+
+
+
+Cause exp() and power() for negative-infinity exponents to return zero (Tom Lane)
+
+
+
+Previously they often returned underflow errors.
+
+
+
+
+
+
+
+Allow SQL-language functions and procedures to use SQL-standard function bodies (Peter Eisentraut)
+
+
+
+Previously only single-quoted or $$-quoted function bodies were supported.
+
+
+
+
+
+
+
+Add unistr() function to allow Unicode characters to be specified as backslash-hex escapes in strings (Pavel Stehule)
+
+
+
+This is similar to how Unicode can be specified in literal string.
+
+
+
+
+
+
+
+Add date_bin function (John Naylor)
+
+
+
+WHAT DOES THIS DO?
+
+
+
+
+
+
+
+Add function bit_count() to return the number of bits set in a bit or byte string (David Fetter)
+
+
+
+
+
+
+
+Mark pg_stat_get_subscription() as returning a set (Tom Lane)
+
+
+
+While it worked in previous releases, it didn't report proper optimizer statistics and couldn't be used in the target list.
+
+
+
+
+
+
+
+Add bit_xor XOR aggregate function (Alexey Bashtanov)
+
+
+
+
+
+
+
+Add SQL-standard trim_array() function (Vik Fearing)
+
+
+
+This can already be done with array slices.
+
+
+
+
+
+
+
+Allow efficient retrieval of heap rows via tid (Edmund Horner, David Rowley)
+
+
+
+Previously a sequential scan was required for non-equality tid specifications.
+
+
+
+
+
+
+
+Add [[:word:]] as a character class to match \w (Tom Lane)
+
+
+
+
+
+
+
+Allow complemented character class escapes \D, \S, and \W within regex brackets (Tom Lane)
+
+
+
+
+
+
+
+Allow subscripting of jsonb (Dmitry Dolgov)
+
+
+
+Subscripting can be used to extract from and assign to jsonb documents.
+
+
+
+
+
+
+
+Improve to_tsquery() and websearch_to_tsquery() handling (Alexander Korotkov)
+
+
+
+NEED TEXT HERE
+
+
+
+
+
+
+
+Add bytea equivalents of ltrim() and rtrim() (Joel Jacobson)
+
+
+
+
+
+
+
+Prevent inet_server_addr() and inet_server_port() from being run by parallel workers (Masahiko Sawada)
+
+
+
+
+
+
+
+Support negative indexes in split_part() (Nikhil Benesch)
+
+
+
+Negative values count from the last field going forward.
+
+
+
+
+
+
+
+Allow some array functions to operate on a mix of compatible data types (Tom Lane)
+
+
+
+The functions are array_append() array_prepend(), array_cat(), array_position(), array_positions(), array_remove(), array_replace(), and width_bucket(). Previously only identical data types could be used.
+
+
+
+
+
+
+
+Allow more flexible data types for default values of lead() and lag() window functions (Vik Fearing)
+The new syntax is SUBSTRING(text SIMILAR pattern ESCAPE escapechar). The previous standard syntax was SUBSTRING(text FROM pattern FOR escapechar), and is still supported by Postgres.
+
+
+
+
+
+
+
+
+ PL/pgSQL
+
+
+
+
+
+
+
+Improve performance of repeated CALLs within plpgsql procedures (Pavel Stehule, Tom Lane)
+
+
+
+
+
+
+
+Improve PL/pgSQL's expression and assignment parsing (Tom Lane)
+
+
+
+This adds nested record and array slicing support.
+
+
+
+
+
+
+
+Allow plpgsql's RETURN QUERY to execute its query using parallelism (Tom Lane)
+
+
+
+
+
+
+
+
+ Client Interfaces
+
+
+
+
+
+
+
+Improve the output format of libpq's PQtrace() (Aya Iwata)
+
+
+
+
+
+
+
+Allow an ECPG SQL identifier to be linked to a specific connection (Hayato Kuroda)