E.1. Release 13
Prev | Up | Appendix E. Release Notes | Home | Next

## E.1. Release 13

Release date: 2020-XX-XX, CURRENT AS OF 2020-08-09

### E.1.1. Overview

Major enhancements in PostgreSQL 13 include:

- TBD

The above items are explained in more detail in the sections below.

### E.1.2. Migration to Version 13

A dump/restore using pg_dumpall or use of pg_upgrade or logical replication is required for those wishing to migrate data from any previous release. See Section 18.6 for general information on migrating to new major releases.

Version 13 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:

- Change `SIMILAR TO ... ESCAPE NULL` to return `NULL` (Tom Lane)

  This new behavior matches the SQL specification. Previously this caused the escape to be set to the default backslash character. The previous behavior has been retained in old views by keeping the original function unchanged. This also applies to `substring(text FROM pattern ESCAPE text)`.

- Have `jsonb_to_tsvector()` properly check "string" parameter (Dominik Czarnota)

- In ltree, when using adjacent asterisks with braces, e.g. ".*{2}.*{3}", properly interpret that as ".*{5}" (Nikita Glukhov)

- Change the way non-default effective_io_concurrency values affect concurrency (Thomas Munro)

  Previously, this value was adjusted before effecting the number of concurrent requests. This value is now used directly. Conversion of old values to new ones can be done using:

      SELECT round(sum(OLD / n::float)) FROM generate_series(1, OLD) s(n);

- Prevent display of auxiliary processes in pg_stat_ssl and pg_stat_gssapi system views (Euler Taveira)

  Queries that join these views to pg_stat_activity and wish to see auxiliary processes will need to use left joins.

- Rename various wait events to improve consistency (Fujii Masao, Tom Lane)

- Fix `ALTER FOREIGN TABLE ... RENAME COLUMN` to return a more appropriate command tag (Fujii Masao)

  Previously it returned `ALTER TABLE`, but now returns `ALTER FOREIGN TABLE`.

- Fix `ALTER MATERIALIZED VIEW ... RENAME COLUMN` to return a more appropriate command tag (Fujii Masao)

  Previously it returned `ALTER TABLE`, but now returns `ALTER MATERIALIZED VIEW`.

- Rename configuration parameter `wal_keep_segments` to wal_keep_size (Fujii Masao)

  This determines how much WAL to retain for the standby server, specified in megabytes rather than number of files. If you previously used `wal_keep_segments`, the following formula will give you an approximately equivalent setting:

      wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)

- Remove support for defining operator classes using pre-PostgreSQL 8.0 syntax (Daniel Gustafsson)

- Remove support for defining foreign key constraints using pre-PostgreSQL 7.3 syntax (Daniel Gustafsson)

- Remove support for "opaque" pseudo-types used by pre-PostgreSQL 7.3 servers (Daniel Gustafsson)

- Remove support for `posixrules` files in the timezone database (Tom Lane)

  IANA's timezone group has deprecated this feature, meaning that it will gradually disappear from systems' timezone databases over the next few years. Rather than have a behavioral change appear unexpectedly with a timezone data update, we have removed PostgreSQL's support for this feature as of version 13. This affects only the behavior of POSIX-style time zone specifications that lack an explicit daylight savings transition rule; formerly the transition rule could be determined by installing a custom `posixrules` file, but now it is hard-wired. The recommended fix for any affected installations is to start using a geographical time zone name.

- Fix pageinspect's `bt_metap()` to return more appropriate data types that are less likely to overflow (Peter Geoghegan)

### E.1.3. Changes

Below you will find a detailed account of the changes between PostgreSQL 13 and the previous major release.

#### E.1.3.1. Server

##### E.1.3.1.1. Partitioning

- Improve cases where pruning of partitions can happen (Yuzuko Hosoya, Amit Langote, Álvaro Herrera)

- Allow partitionwise joins to happen in more cases (Ashutosh Bapat, Etsuro Fujita, Amit Langote, Tom Lane)

  For example, partitionwise joins can now happen between partitioned tables even when their partition bounds do not match exactly.

- Allow `BEFORE` row-level triggers on partitioned tables (Álvaro Herrera)

  These triggers cannot change which partition is the destination.

- Allow partitioned tables to be logically replicated via publications (Amit Langote)

  Previously, partitions had to be replicated individually. Now partitioned tables can be published explicitly causing all partitions to be automatically published. Addition/removal of partitions from partitioned tables are automatically added/removed from publications. The `CREATE PUBLICATION` option `publish_via_partition_root` controls whether changes to partitions are published as their own or their ancestor's.

- Allow logical replication into partitioned tables on subscribers (Amit Langote)

  Previously, subscribers could only receive rows into non-partitioned tables.

- Allow `ROW` values to be used as partitioning expressions (Amit Langote)

##### E.1.3.1.2. Indexes

- More efficiently store duplicates in btree indexes (Anastasia Lubennikova, Peter Geoghegan)

  This allows efficient btree indexing of low cardinality columns by storing duplicate keys only once. Users upgrading with pg_upgrade will need to use `REINDEX` to make use of this feature.

- Allow GiST and SP-GiST indexes for box/point distance lookups (Nikita Glukhov)

- Allow GIN indexes to more efficiently handle `NOT` restrictions (Nikita Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)

- Allow index operator classes to take parameters (Nikita Glukhov)

- Allow `CREATE INDEX` to specify the GiST signature length and maximum number of integer ranges (Nikita Glukhov)

  Indexes created on four and eight-byte integer array, tsvector, pg_trgm, ltree, and hstore columns can now control these GiST index parameters, rather than using the defaults.

- Prevent indexes that use non-default collations from being added as a table's unique or primary key constraint (Tom Lane)

  The index and column collations must now match so the index's uniqueness matches the column's uniqueness.

##### E.1.3.1.3. Optimizer

- Improve the optimizer's selectivity estimation for containment/match operators (Tom Lane)

- Allow setting statistics target for extended statistics (Tomas Vondra)

  This is controlled with the new command option `ALTER STATISTICS ... SET STATISTICS`. Previously this was computed based on more general statistics target settings.

- Allow use of multiple extended statistics objects in a single query (Tomas Vondra)

- Allow use of extended statistics objects for OR clauses and IN/`ANY` constant lists (Pierre Ducroquet, Tomas Vondra)

- Allow functions in `FROM` clauses to be moved to their reference sites if they evaluate to constants (Alexander Kuzmenkov, Aleksandr Parfenov)

##### E.1.3.1.4. General Performance

- Implement incremental sorting (James Coleman, Alexander Korotkov, Tomas Vondra)

  If a result is already sorted by several leading keys, this allows for batch sorting of additional trailing keys because the previous keys are already equal. This is controlled by enable_incremental_sort.

- Improve the performance of sorting inet values (Brandur Leach)

- Allow hash aggregation and grouping sets to use disk storage for large aggregation result sets (Jeff Davis)

  Previously, hash aggregation was avoided if it was expected to use more than work_mem memory. Now, a hash aggregation plan can be chosen despite that. The hash table will be spilled to disk if it exceeds `work_mem` times hash_mem_multiplier.

  This behavior is normally preferable to the old behavior. But if it is inferior for a particular query, behavior similar to previous Postgres releases can be obtained by increasing `hash_mem_multiplier`.

- Allow inserts to trigger autovacuum activity (Laurenz Albe, Darafei Praliaskouski)

  This new behavior reduces the work necessary when the table needs to be frozen and allows pages to be set as all-visible. All-visible pages allow index-only scans to access fewer heap rows.

- Add maintenance_io_concurrency to control I/O concurrency for maintenance operations (Thomas Munro)

- Allow skipping of WAL for full table writes if wal_level is `minimal` (Kyotaro Horiguchi)

  Relations larger than wal_skip_threshold will have their files fsync'ed rather than generating WAL. Previously this was done only for `COPY` operations, but the implementation had a bug that could cause data loss during crash recovery.

- Enable Unix-domain sockets support on Windows (Peter Eisentraut)

- Improve the performance when replaying `DROP DATABASE` commands when many tablespaces are in use (Fujii Masao)

- Improve performance for truncation of very large relations (Kirk Jamison)

- Improve speed of TOAST decompression and the retrieval of only the leading bytes of TOAST values (Binguo Bao, Andrey Borodin)

  Previously, TOAST values were fully fetched and only the requested leading bytes were decompressed and returned. Now, only the requested bytes are fetched.

- Improve performance of `LISTEN`/`NOTIFY` (Martijn van Oosterhout)

- Improve the efficiency of removing duplicate `NOTIFY` events (Tom Lane)

- Use lookup tables to speed up integer to text conversion (David Fetter)

- Reduce memory usage for query strings that contain multiple SQL statements (Amit Langote)

##### E.1.3.1.5. Monitoring

- Allow `EXPLAIN`, auto_explain, autovacuum, and pg_stat_statements to track WAL usage statistics (Kirill Bychik, Julien Rouhaud)

- Allow a sample of statements to be logged (Adrien Nayrat)

  A log_statement_sample_rate ratio of statements taking over log_min_duration_sample duration will be logged.

- Add the backend type to csvlog and optionally log_line_prefix log output (Peter Eisentraut)

- Improve control of prepared statement parameter logging (Alexey Bashtanov, Álvaro Herrera)

  The GUC setting log_parameter_max_length controls the maximum length of parameter values output during statement non-error logging, and log_parameter_max_length_on_error does the same for error statement logging. Previously, prepared statement parameters were not logged during errors.

- Make vacuum buffer counters 64-bits wide to avoid overflow (Álvaro Herrera)

- Allow function call backtraces of errors to be logged (Peter Eisentraut, Álvaro Herrera)

  Server variable backtrace_functions specifies which C functions should generate backtraces on error.

- Add `min()` and `max()` aggregates for `pg_lsn` (Fabrízio de Royes Mello)

  This is useful for monitoring queries.

##### E.1.3.1.6. System Views

- Add `leader_pid` to pg_stat_activity to report parallel worker ownership (Julien Rouhaud)

- Add system view `pg_stat_progress_basebackup` to report the progress of streaming base backups (Fujii Masao)

- Add system view `pg_stat_progress_analyze` to report analyze progress (Álvaro Herrera, Tatsuro Yamada, Vinayak Pokale)

- Add system view `pg_shmem_allocations` to display shared memory usage (Andres Freund, Robert Haas)

- Create `pg_stat_slru` system view to monitor internal SLRU caches (Tomas Vondra)

- Allow track_activity_query_size to be set up to 1MB (Vyacheslav Makarov)

  The previous maximum was 100kB.

##### E.1.3.1.7. Wait Events

- Add wait event for `posix_fallocate()` (Thomas Munro)

- Add wait event VacuumDelay to report on cost-based vacuum delay (Justin Pryzby)

- Add wait events for WAL archive and recovery pause (Fujii Masao)

  The new events are BackupWaitWalArchive and RecoveryPause.

- Add wait events RecoveryConflictSnapshot and RecoveryConflictTablespace to monitor recovery conflicts (Masahiko Sawada)

- Improve performance of wait events on BSD-based systems (Thomas Munro)

##### E.1.3.1.8. Authentication

- Only allow superusers to view the ssl_passphrase_command setting (Insung Moon)

  This was changed as a security precaution.

- Change the server's default minimum TLS version for encrypted connections from 1.0 to 1.2 (Peter Eisentraut)

  This is controlled by ssl_min_protocol_version.

##### E.1.3.1.9. Server Configuration

- Tighten rules on which utility commands are possible in default_transaction_read_only mode (Robert Haas)

  This also increases the number of utility commands that can run in parallel queries.

- Allow allow_system_table_mods to be changed after server start (Peter Eisentraut)

- Disallow non-superusers from modifying system tables when allow_system_table_mods is set (Peter Eisentraut)

  Previously, if allow_system_table_mods was set at server start, non-superusers could issue `INSERT`/`UPDATE`/`DELETE` commands on system tables.

#### E.1.3.2. Streaming Replication and Recovery

- Allow streaming replication configuration settings to be changed by reload (Sergei Kornilov)

  Previously, a server restart was required to change primary_conninfo and primary_slot_name.

- Allow WAL receivers use a temporary replication slot if a permanent one is not specified (Peter Eisentraut, Sergei Kornilov)

  This behavior can be enabled using wal_receiver_create_temp_slot.

- Allow replication slot storage to be limited by max_slot_wal_keep_size (Kyotaro Horiguchi)

  Replication slots that exceed this value are invalidated.

- Allow standby promotion to cancel any requested pause (Fujii Masao)

  Previously, promotion could not happen while the standby was in paused state.

- Generate an error if recovery does not reach the specified recovery target (Leif Gunnar Erlandsen, Peter Eisentraut)

  Previously, the end of the WAL would promote the standby, even if the target was not reached.

- Allow control over how much memory is used by logical decoding before it is spilled to disk (Tomas Vondra, Dilip Kumar, Amit Kapila)

  This is controlled by logical_decoding_work_mem.

- Allow WAL recovery to continue even if invalid pages are referenced (Fujii Masao)

  This is enabled using ignore_invalid_pages.

#### E.1.3.3. Utility Commands

- Allow `VACUUM` to process indexes in parallel (Masahiko Sawada, Amit Kapila)

  The new `PARALLEL` option controls this.

- Allow `FETCH FIRST` to use `WITH TIES` to return any additional rows that match the last result row (Surafel Temesgen)

- Report planning-time buffer usage in `EXPLAIN`'s `BUFFER` output (Julien Rouhaud)

- Have `CREATE TABLE LIKE` propagate `CHECK`'s `NO INHERIT` property to created tables (Ildar Musin, Chris Travers)

- When using `LOCK TABLE` on a partitioned table, do not check permissions on the child tables (Amit Langote)

- Allow `OVERRIDING USER VALUE` on inserts into identity columns (Dean Rasheed)

- Add `ALTER TABLE` clause `DROP EXPRESSION` to remove generated properties from columns (Peter Eisentraut)

- Fix bugs in `ALTER TABLE` when later clauses overlap changes made by earlier clauses in the same command (Tom Lane)

- Add `ALTER VIEW` syntax to rename view columns (Fujii Masao)

  This was previously possible only using `ALTER TABLE RENAME COLUMN`.

- Add `ALTER TYPE` options useful for extensions, like TOAST and I/O functions control (Tomas Vondra, Tom Lane)

- Add `CREATE DATABASE` `LOCALE` option (Peter Eisentraut)

  This combines existing options `LC_COLLATE` and `LC_CTYPE` into a single option.

- Allow `DROP DATABASE` to disconnect users so drop succeeds (Pavel Stehule, Amit Kapila)

  This is enabled by `WITH FORCE`.

- Add C structure member `tg_updatedcols` to record updated columns to C triggers (Peter Eisentraut)

#### E.1.3.4. Data Types

- Add polymorphic data types for use by functions requiring compatible arguments (Pavel Stehule)

  The new data types are anycompatible, anycompatiblearray, anycompatiblenonarray, and anycompatiblerange.

- Add SQL data type xid8 to expose FullTransactionId (Thomas Munro)

  The xid data type is only four bytes so does not show the transaction epoch.

- Add data type regcollation and helper functions for system collations (Julien Rouhaud)

- Use the glibc version in some cases as the collation version (Thomas Munro)

  If the glibc version changes, a warning will be issued when a mismatching collation is used.

- Add support for collation versions on Windows (Thomas Munro)

- Allow `ROW` values values to have their members extracted with suffix notation (Tom Lane)

  For example, `(ROW(4, 5.0)).f1` returns 4.

#### E.1.3.5. Functions

- Add alternate version of `jsonb_setI()` with special `NULL` handling (Andrew Dunstan)

  The new function, `jsonb_set_lax()`, allows null new values to either set the specified key to JSON null, delete the key, raise exception, or ignore the operation. IS 'return_target' CLEAR?

- Add jsonpath .`datetime()` method (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov)

  This allows json values to be converted to timestamps, which can then be processed in jsonpath expressions. This also adds jsonpath functions that support time zone-aware output.

- Add SQL functions `NORMALIZE`() to normalize Unicode strings, and `IS NORMALIZED` to check for normalization (Peter Eisentraut)

- Allow Unicode escapes, e.g., E'\u####', U&'\####', to specify any character available in the database encoding, even when the database encoding is not UTF-8 (Tom Lane)

  The Unicode characters must be available in the database encoding.

- Allow `to_date()` and `to_timestamp()` to recognize non-English month/day names (Juan José Santamaría Flecha, Tom Lane)

  The names recognized are the same as those output by `to_char()` with the same format codes.

- Add format specifications FF1-FF6 to control display of 1-6 subsecond digits (Alexander Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg Bartunov)

  These patterns can be used by `to_char()`, `to_timestamp()`, and jsonpath's .`datetime()`.

- Add `SSSSS` time format specification as an SQL standard alias for `SSSS` (Nikita Glukhov, Alexander Korotkov)

- Add function `gen_random_uuid()` to generate version 4 UUIDs (Peter Eisentraut)

  Previously UUID generation functions were only available via external modules uuid-ossp and pgcrypto.

- Add greatest-common-denominator (gcd) and least-common-multiple (lcm) functions (Vik Fearing)

- Improve the performance and accuracy of square root and natural log (ln) output (Dean Rasheed)

- Add function `min_scale()` that returns the number of digits to the right the decimal point that is required to represent the numeric value with full precision (Pavel Stehule)

- Add function `trim_scale()` to reduce the scale of a number by removing trailing zeros (Pavel Stehule)

- Add commutators of distance operators (Nikita Glukhov)

  For example, previously only point <-> line was supported, now line <-> point works too.

- Create xid8 versions of all transaction id functions (Thomas Munro)

  The old function names were kept for backward compatibility. DO WE HAVE NEW NAMES?

- Allow `get_bit()` and `set_bit()` to set bits beyond 256MB of bytea data (Movead Li)

- Allow advisory-lock functions to be used in some parallel operations (Tom Lane)

- Add the ability to remove an object's dependency on an extension (Álvaro Herrera)

  The object can be a function, materialized view, index, or trigger. The syntax is `ALTER .. NO DEPENDS ON`.

#### E.1.3.6. PL/pgSQL

- Improve performance of simple PL/pgSQL expressions (Tom Lane, Amit Langote)

- Improve the performance of PL/pgSQL functions that use immutable expressions (Konstantin Knizhnik)

#### E.1.3.7. Client Interfaces

- Allow libpq clients to require channel binding for encrypted connections (Jeff Davis)

  Using the libpq connection parameter `channel_binding` forces the other end of the TLS connection to prove it knows the user's password. This prevents man-in-the-middle attacks.

- Add libpq connection parameters to control the min/max TLS version for encrypted connections (Daniel Gustafsson)

  The settings are ssl_min_protocol_version and ssl_max_protocol_version. By default, the minimum TLS version is 1.2 (this represents a behavioral change from previous releases).

- Tighten libpq's overlength-line handling and comment detection for .pgpass files (Fujii Masao)

- Allow specification of passwords to unlock client certificates (Craig Ringer, Andrew Dunstan)

  This is specified by the sslpassword connection option.

- Allow DER-encoded client certificates (Craig Ringer, Andrew Dunstan)

- Fix ecpg's `EXEC SQL elif` directive to work correctly (Tom Lane)

  Previously it behaved the same as `endif` followed by `ifdef`, so that a successful previous branch of the same `if` construct did not prevent expansion of the `elif` branch or following branches.

#### E.1.3.8. Client Applications

##### E.1.3.8.1. psql

- Add the transaction status (%x) to the default psql prompts (Vik Fearing)

- Allow the secondary psql prompt to be same number of spaces as the primary prompt (Thomas Munro)

  This is accomplished by setting PROMPT2 to %w.

- Allow \g and \gx to change any \pset output options for a single command (Tom Lane)

  This allows syntax like \g (expand=on), which is equivalent to \gx.

- Add psql commands to report operator classes and operator families (Sergey Cherkashin, Nikita Glukhov, Alexander Korotkov)

  The new commands are \dAc, \dAf, \dAo, and \dAp.

- Show table persistence in psql's \dt+ and related commands (David Fetter)

  In verbose mode, the table/index/view shows if the object is permanent, temporary, or unlogged.

- Improve output of psql \d for TOAST tables (Justin Pryzby)

- Adjust display of psql's \e query (Tom Lane)

  When exiting the editor, if the query doesn't end with a semicolon or \g, the query buffer contents will now be displayed.

- Add \warn command to psql (David Fetter)

  This is like \echo except that the text is sent to stderr instead of stdout.

- Add the PostgreSQL home page to command-line `--help` output (Peter Eisentraut)

##### E.1.3.8.2. pgbench

- Allow pgbench to partition its 'accounts' table (Fabien Coelho)

  This allows performance testing of partitioning.

- Add pgbench command \aset, which behaves like \gset, but for multiple queries (Fabien Coelho)

- Allow pgbench to generate its data server-side, rather than client side (Fabien Coelho)

- Allow pgbench to dump script contents using `--show-script` (Fabien Coelho)

#### E.1.3.9. Server Applications

- Generate backup manifests for base backups, and verify them (Robert Haas)

  A new tool pg_verifybackup can verify backups.

- Have pg_basebackup estimate the total backup size by default (Fujii Masao)

  This computation allows `pg_stat_progress_basebackup` to show progress, and can be disabled by using the `--no-estimate-size` option. Previously, this computation happened only if `--progress` was used.

- Add pg_rewind option to configure standbys (Paul Guo, Jimmy Yih, Ashwin Agrawal)

  This matches pg_basebackup's `--write-recovery-conf` option.

- Allow pg_rewind to use the target cluster's restore_command to retrieve needed WAL (Alexey Kondratov)

  This is enabled using the `-c`/`--restore-target-wal` option.

- Have pg_rewind automatically run crash recovery before rewinding (Paul Guo, Jimmy Yih, Ashwin Agrawal)

  This can be disabled by using `--no-ensure-shutdown`.

- Increase `PREPARE TRANSACTION` information reported by pg_waldump (Fujii Masao)

- Add pg_waldump option `--quiet` to suppress non-error output (Andres Freund, Robert Haas)

- Add pg_dump option `--include-foreign-data` to dump data from foreign servers (Luis Carril)

- Allow vacuum commands run by vacuumdb to operate in parallel mode (Masahiko Sawada)

  This is enabled with the new `--parallel` option.

- Allow reindexdb to operate in parallel (Julien Rouhaud)

  Parallel mode is enabled with the new `--jobs` option.

- Allow dropdb to force disconnections so the drop succeeds (Pavel Stehule)

  This is enabled with the `-f` option.

- Remove `--adduser` and `--no-adduser` from createuser (Alexander Lakhin)

  The long-supported options for this are called `--superuser` and `--no-superuser`.

- Use the directory of the pg_upgrade binary as the default new 'bindir' location when running pg_upgrade (Daniel Gustafsson)

#### E.1.3.10. Documentation

- Add a glossary to the documentation (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro Herrera)

- Reformat tables containing function information for better clarity (Tom Lane)

- Upgrade to use DocBook 4.5 (Peter Eisentraut)

#### E.1.3.11. Source Code

- Add support for building on Visual Studio 2019 (Haribabu Kommi)

- Add build support for MSYS2 (Peter Eisentraut)

- Add compare_exchange and fetch_add assembly language code for Power PC compilers (Noah Misch)

- Update Snowball stemmer dictionaries used by full text search (Panagiotis Mavrogiorgos)

  This adds Greek stemming and improves Danish and French stemming.

- Remove support for Windows 2000 (Michael Paquier)

- Remove support for non-ELF BSD systems (Peter Eisentraut)

- Remove support for Python versions 2.5.X and earlier (Peter Eisentraut)

- Remove support for OpenSSL 0.9.8 and 1.0.0 (Michael Paquier)

- Remove support option `--disable-float8-byval` (Peter Eisentraut)

  This was needed for previously supported version-zero functions.

- Remove configure option `--disable-float4-byval` (Peter Eisentraut)

  This was needed for previously supported version-zero functions.

- Add the query string to planner hook functions (Pascal Legrand, Julien Rouhaud)

- Add `TRUNCATE` command hook (Yuli Khodorkovskiy)

- Add TLS init hook (Andrew Dunstan)

- Allow building with no predefined Unix-domain socket directory (Peter Eisentraut)

- Reduce the probability of SysV resource key collision on Unix platforms (Tom Lane)

- Use operating system functions to cleanly erase memory that contains sensitive information (Peter Eisentraut)

  For example, this is used for clearing passwords stored in memory.

- Add "headerscheck" script to test C header-file compatibility (Tom Lane)

- Implement internal lists as arrays, rather than a chain of structures (Tom Lane)

  This improves performance for queries that access many object. The internal List API has also been improved.

- Update Windows build scripts to use the modern `--with-uuid` flag for UUID libraries (Kyotaro Horiguchi)

- Change the API for `TS_execute()` (Tom Lane, Pavel Borisov)

  `TS_execute` callbacks must now provide ternary (yes/no/maybe) logic. Calculating NOT queries accurately is now the default.

#### E.1.3.12. Additional Modules

- Allow extensions to be specified as trusted (Tom Lane)

  Such extensions can be installed in a database by users with creation rights, even if they are not superusers. This change also removes the `pg_pltemplate` system catalog.

- Remove support for upgrading "unpackaged" extensions (Tom Lane)

- Allow non-superusers to connect to postgres_fdw foreign servers without using a password (Craig Ringer)

  Specifically, allow `ALTER USER MAPPING` to set `password_required` to false. Care must still be taken to avoid non-superusers from using superuser credentials to connect to the foreign server.

- Allow postgres_fdw to use certificate authentication (Craig Ringer)

  Different users can use different certificates.

- Allow sepgsql to control access to the `TRUNCATE` command (Yuli Khodorkovskiy)

- Add extension bool_plperl which transforms SQL booleans to/from PL/Perl booleans (Ivan Panchenko)

- Have pg_stat_statements treat `SELECT ... FOR UPDATE` as distinct from those without `FOR UPDATE` (Andrew Gierth, Vik Fearing)

- Allow pg_stat_statements to optionally track the planning time of statements (Julien Rouhaud, Pascal Legrand, Thomas Munro, Fujii Masao)

  Previously only execution time was tracked.

- Overhaul ltree's lquery syntax to treat `NOT` (!) more logically (Filip Rembialkowski, Tom Lane, Nikita Glukhov)

  Also allow non-* queries to use a numeric range ({}) of matches.

- Add support for binary I/O of ltree, lquery, and ltxtquery types (Nino Floris)

- Add option to dict_int extension to ignore the sign of integers (Jeff Janes)

- Add adminpack function `pg_file_sync()` to allow fsync'ing a file (Fujii Masao)

- Add pageinspect functions to output `t_infomask`/`t_infomask2` values in human-readable format (Craig Ringer, Sawada Masahiko, Michael Paquier)

- Add btree index deduplication processing columns to pageinspect output (Peter Geoghegan)

### E.1.4. Acknowledgments

The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.

Adam Lee
Adam Scott
Adé Heyward
Adrien Nayrat
Ahsan Hadi
Alastair McKinley
Aleksandr Parfenov
Alex Aktsipetrov
Alex Macy
Alex Shulgin
Alexander Korotkov
Alexander Kukushkin
Alexander Kuzmenkov
Alexander Lakhin
Alexey Bashtanov
Alexey Kondratov
Álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
Andreas Joseph Krogh
Andreas Karlsson
Andreas Kunert
Andreas Seltenreich
Andrei Zubkov
Andres Freund
Andrew Dunstan
Andrew Gierth
Andrey Borodin
Andrey Klychkov
Andrey Lepikhov
Anna Akenteva
Anna Endo
Anthony Nowocien
Anton Vlasov
Antonin Houska
Ants Aasma
Arne Roland
Arnold Müller
Arseny Sher
Arthur Nascimento
Arthur Zakirov
Asaba Takanori
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Asif Rehman
Asim Praveen
Atsushi Torikoshi
Augustinas Jokubauskas
Austin Drenski
Basil Bourque
Beena Emerson
Ben Cornett
Benjie Gillam
Benoît Lobréau
Bernd Helmle
Bharath Rupireddy
Bhargav Kamineni
Binguo Bao
Brad DeJong
Brandur Leach
Brent Bates
Brian Williams
Bruce Momjian
Cameron Ezell
Cary Huang
Chapman Flack
Charles Offenbacher
Chen Huajun
Chenyang Lu
Chris Bandy
Chris Travers
Christoph Berg
Christophe Courtois
Corey Huinker
Craig Ringer
Cuiping Lin
Dagfinn Ilmari Mannsåker
Daniel Fiori
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Darafei Praliaskouski
Daryl Waycott
Dave Cramer
David Christensen
David Fetter
David G. Johnston
David Gilman
David Harper
David Rowley
David Steele
David Zhang
Davinder Singh
Dean Rasheed
Denis Stuchalin
Dent John
Didier Gautheron
Dilip Kumar
Dmitry Belyavsky
Dmitry Dolgov
Dmitry Ivanov
Dmitry Telpt
Dmitry Uspenskiy
Dominik Czarnota
Dongming Liu
Ed Morley
Edmund Horner
Emre Hasegeli
Eric Gillum
Erik Rijkers
Erwin Brandstetter
Ethan Waldo
Etsuro Fujita
Eugen Konkov
Euler Taveira
Fabien Coelho
Fabrízio de Royes Mello
Felix Lechner
Filip Janus
Filip Rembialkowski
Frank Gagnepain
Georgios Kokolatos
Gilles Darold
Greg Nancarrow
Grigory Smolkin
Guancheng Luo
Guillaume Lelarge
Hadi Moshayedi
Haiying Tang
Hamid Akhtar
Hans Buschmann
Haribabu Kommi
Heath Lord
Heikki Linnakangas
Hironobu Suzuki
Hugh McMaster
Hugh Ranalli
Hugh Wang
Ian Barwick
Ibrar Ahmed
Ildar Musin
Insung Moon
Ireneusz Pluta
Isaac Morland
Ivan Kartyshov
Ivan Panchenko
Ivan Sergio Borgonovo
Jaime Casanova
James Coleman
James Gray
James Inform
James Lucas
Jaroslav Sivy
Jeevan Chalke
Jeevan Ladhe
Jeff Davis
Jeff Janes
Jehan-Guillaume de Rorthais
Jeremy Schneider
Jeremy Smith
Jerry Sievers
Jesper Pedersen
Jesse Zhang
Jian Zhang
Jie Zhang
Jim Nasby
Jimmy Yih
Jobin Augustine
Joe Conway
John Hsu
John Naylor
Jon Jensen
Jonathan Katz
Jorge Gustavo Rocha
Josef Šimánek
Joseph Nahmias
Juan José Santamaría Flecha
Julian Backes
Julien Rouhaud
Jürgen Purtz
Justin King
Justin Pryzby
Karl O. Pinc
Keisuke Kuroda
Keith Fiske
Ken Tanzer
Kirill Bychik
Kirk Jamison
Konstantin Knizhnik
Kuntal Ghosh
Kyle Kingsbury
Kyotaro Horiguchi
Lars Kanis
Laurenz Albe
Leif Gunnar Erlandsen
Li Japin
Liudmila Mantrova
Lucas Viecelli
Luis M. Carril
Lukáš Sobotka
Maciek Sakrejda
Magnus Hagander
Mahadevan Ramachandran
Mahendra Singh Thalor
Manuel Rigger
Marc Munro
Marcos David
Marina Polyakova
Mark Dilger
Mark Wong
Marko Tiikkaja
Markus Winand
Marti Raudsepp
Martijn van Oosterhout
Masahiko Sawada
Masahiro Ikeda
Masao Fujii
Mateusz Guzik
Matt Jibson
Matteo Beccati
Maxence Ahlouche
Melanie Plageman
Michael Banck
Michael Luo
Michael Meskes
Michael Paquier
Michail Nikolaev
Mike Palmiotto
Mithun Cy
Movead Li
Nathan Bossart
Nazli Ugur Koyluoglu
Neha Sharma
Nicola Contu
Nicolás Alvarez
Nikhil Sontakke
Nikita Glukhov
Nikolay Shaplov
Nino Floris
Noah Misch
Noriyoshi Shinoda
Oleg Bartunov
Oleksii Kliukin
Ondrej Jirman
Panagiotis Mavrogiorgos
Pascal Legrand
Patrick McHardy
Paul Guo
Paul Jungwirth
Paul Ramsey
Paul Spencer
Pavan Deolasee
Pavel Borisov
Pavel Luzanov
Pavel Stehule
Pavel Suderevsky
Peifeng Qiu
Pengzhou Tang
Peter Billen
Peter Eisentraut
Peter Geoghegan
Peter Smith
Petr Fedorov
Petr Jelínek
Phil Bayer
Philip Semanchuk
Pierre Ducroquet
Pierre Giraud
Piotr Gabriel Kosinski
Piotr Wlodarczyk
Prabhat Sahu
Quan Zongliang
Quentin Rameau
Rafael Castro
Rafia Sabih
Raj Mohite
Rajkumar Raghuwanshi
Ramanarayana M
Ranier Vilela
Rares Salcudean
Raúl Marín Rodríguez
Raymond Martin
Reijo Suhonen
Richard Guo
Robert Ford
Robert Haas
Robert Treat
Robins Tharakan
Roger Harkavy
Roman Peshkurov
Rui DeSousa
Rui Hai Jiang
Rushabh Lathia
Ryan Lambert
Ryohei Takahashi
Scott Ribe
Sean Farrell
Sehrope Sarkuni
Sergei Agalakov
Sergei Kornilov
Sergey Cherkashin
Shawn Debnath
Shawn Wang
Shay Rojansky
Shenhao Wang
Simon Riggs
Slawomir Chodnicki
Soumyadeep Chakraborty
Stéphane Lorek
Stephen Frost
Steve Rogerson
Steven Winfield
Surafel Temesgen
Suraj Kharage
Takao Fujii
Takatsuka Haruka
Takayuki Tsunakawa
Takuma Hoshiai
Tatsuhito Kasahara
Tatsuo Ishii
Tatsuro Yamada
Taylor Vesely
Teodor Sigaev
Tham Nguyen
Thibaut Madelaine
Thom Brown
Thomas Kellerer
Thomas Munro
Tiago Anastacio
Tim Clarke
Tim Möhlmann
Tom Ellis
Tom Gottfried
Tom Lane
Tomas Vondra
Tuomas Leikola
Tushar Ahuja
Victor Wagner
Victor Yegorov
Vignesh C
Vik Fearing
Vinay Banakar
Vladimir Leskov
Vladimir Sitnikov
Vyacheslav Makarov
Vyacheslav Shablistyy
Will Leinweber
William Crowell
Wyatt Alt
Yang Xiao
Yaroslav Schekin
Yi Huang
Yigong Hu
Yoann La Cancellera
Yoshikazu Imai
Yu Kimura
Yugo Nagata
Yuli Khodorkovskiy
Yusuke Egashira
Yuya Watari
Yuzuko Hosoya
ZhenHua Cai

Prev | Up | Next
Appendix E. Release Notes | Home | E.2. Prior Releases