+++ /dev/null
-<!-- doc/src/sgml/release-12.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-12">
- <title>Release 12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2019-??-?? AS OF 2019-05-09</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 12 include:
- </para>
-
- <!-- Items in this list summarize one or more items below -->
-
- <itemizedlist>
-
- <listitem>
- <para>big item</para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 12</title>
-
- <para>
- A dump/restore using <xref linkend="app-pg-dumpall"/>, or use of <xref
- linkend="pgupgrade"/>, is required for those wishing to migrate data
- from any previous release.
- </para>
-
- <para>
- Version 12 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-11-20 [578b22971] Remove WITH OIDS support, change oid catalog column visi
--->
-
- <para>
- Remove the special behavior of <link
- linkend="datatype-oid">OID</link> columns (Andres Freund,
- John Naylor)
- </para>
-
- <para>
- Previously, a normally-invisible <type>OID</type> column could be
- specified during table creation using <literal>WITH OIDS</literal>;
- that ability has been removed. Columns can still be explicitly
- specified as type <type>OID</type>. Operations on tables that
- have columns named <type>OID</type> (created using <literal>WITH
- OIDS</literal>) will need adjustment. <command>SELECT *</command>
- will now output those columns for the many system tables which
- have them. Previously, the columns had to be selected explicitly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-10-11 [cda6a8d01] Remove deprecated abstime, reltime, tinterval datatypes.
--->
-
- <para>
- Remove data types <type>abstime</type>, <type>reltime</type>,
- and <type>tinterval</type> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-10-11 [2d10defa7] Remove timetravel extension.
--->
-
- <para>
- Remove the <productname>timetravel</productname> extension
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-25 [2dedf4d9a] Integrate recovery.conf into postgresql.conf
--->
-
- <para>
- Move <filename>recovery.conf</filename> settings into <link
- linkend="runtime-config-wal-archive-recovery"><filename>postgresql.conf</filename></link>
- (Fujii Masao, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov)
- </para>
-
- <para>
- <filename>recovery.conf</filename> is no longer used,
- and the server will not start if the file exists. <link
- linkend="runtime-config-wal-archive-recovery">recovery.signal</link>
- and standby.signal are now used to switch into non-primary
- mode. <varname>trigger_file</varname> has been renamed
- to <xref linkend="guc-promote-trigger-file"/>. The
- <varname>standby_mode</varname> setting has been removed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-28 [f2cbffc7a] Only allow one recovery target setting
--->
-
- <para>
- Do not allow multiple conflicting <link
- linkend="runtime-config-wal-recovery-target"><varname>recovery_target</varname>*</link>
- specifications (Peter Eisentraut)
- </para>
-
- <para>
- Specifically, only allow one of <xref
- linkend="guc-recovery-target"/>, <xref
- linkend="guc-recovery-target-lsn"/>,
- <xref linkend="guc-recovery-target-name"/>,
- <xref linkend="guc-recovery-target-time"/>, <xref
- linkend="guc-recovery-target-xid"/>. Previously, multiple different
- instances of the variables above could be specified, and the last one
- was honored. Now, only one can be specified, though the same one can
- be specified multiple times and the last specification is honored.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-01-13 [0acb3bc33] Change default of recovery_target_timeline to <literal>latest</literal>
--->
-
- <para>
- Cause recovery to advance to the latest timeline by default
- (Peter Eisentraut)
- </para>
-
- <para>
- Specifically, <xref linkend="guc-recovery-target-timeline"/> now
- defaults to <literal>latest</literal>. Previously, it defaulted
- to <literal>current</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2018-07-29 [a7dc63d90] Refactor geometric functions and operators
--->
-
- <para>
- Refactor <link linkend="functions-geometry">geometric
- functions</link> and operators (Emre Hasegeli)
- </para>
-
- <para>
- This could lead to more accurate, but slightly different, results
- from previous releases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2018-08-16 [c4c340088] Use the built-in float datatypes to implement geometric
--->
-
- <para>
- Restructure <link linkend="datatype-geometric">geometric
- types</link> to handle NaN, underflow, overflow and division by
- zero more consistently (Emre Hasegeli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2018-09-26 [2e2a392de] Fix problems in handling the line data type
--->
-
- <para>
- Improve behavior and error reporting for the <link
- linkend="datatype-geometric">line data type</link> (Emre Hasegeli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-2019-02-13 [02ddd4993] Change floating-point output format for improved perform
--->
-
- <para>
- Improve performance by changing the default number of trailing digits
- output for <link linkend="datatype-float"><type>REAL</type></link>
- and <type>DOUBLE PRECISION</type> values (Andrew Gierth)
- </para>
-
- <para>
- Previously, float values were output rounded to 6 or 15 decimals
- by default. Now, only the number of digits required to preserve
- the exact binary value is output. The previous behavior can be
- restored by setting <xref linkend="guc-extra-float-digits"/> to zero.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-04-23 [c06e3550d] Don't request pretty-printed output from xmlNodeDump().
--->
-
- <para>
- Change <link linkend="functions-xml"><acronym>XML</acronym></link>
- functions like <function>xpath()</function> to never pretty-print
- their output (Tom Lane)
- </para>
-
- <para>
- Previously, this happened in some rare cases. ACCURATE? HOW TO
- GET PRETTY PRINT OUTPUT?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-03-13 [6dd263cfa] Rename pg_verify_checksums to pg_checksums
--->
-
- <para>
- Rename command-line tool
- <application>pg_verify_checksums</application> to <xref
- linkend="app-pgchecksums"/> (Michaël Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-04 [413ccaa74] pg_restore: Require -f - to mean stdout
--->
-
- <para>
- Require specification of <xref linkend="app-pgrestore"/>
- <literal>-f -</literal> to send the dump contents to stdout
- (Euler Taveira)
- </para>
-
- <para>
- The previous behavior was considered confusing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-14 [eaf746a5b] Make psql's "\pset format" command reject non-unique abb
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-26 [a7eece4fc] Fix breakage of "\pset format latex".
--->
-
- <para>
- Disallow <application>psql</application>'s <command>\pset
- format</command> command from using non-unique abbreviations
- (Daniel Vérité)
- </para>
-
- <para>
- Previously, <command>\pset format a</command> chose
- <literal>aligned</literal>; it will now error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-This is caused by adding the tid to the btree entry, as listed later.
--->
-
- <para>
- The maximum btree index length is now reduced by eight bytes;
- a <xref linkend="sql-reindex"/> operation could potentially fail.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-19 [586b98fdf] Make type "name" collation-aware.
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-04-05 [478cacb50] Ensure consistent name matching behavior in processSQLNa
--->
-
- <para>
- Allow data type <link
- linkend="datatype-character-special-table">name</link> to use
- non-C collations (Tom Lane, Daniel Vérité)
- </para>
-
- <para>
- It still uses the "C" collation by default, rather than defaulting
- to the database collation. Regular expression operations on
- data type name columns will now use the "C" collation; you will
- need to override the collation if you want to use locale-specific
- regular expression patterns, e.g., <command>\w</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-21 [bfb456c1b] Improve error reporting for DROP FUNCTION/PROCEDURE/AGGR
--->
-
- <para>
- Cause <link linkend="sql-dropfunction"><command>DROP IF EXISTS
- FUNCTION</command></link>/<literal>PROCEDURE</literal>/<literal>AGGREGATE</literal>/<literal>ROUTINE</literal>
- to generate an error if no arguments are supplied and there are
- multiple matching objects (David Rowley)
- </para>
-
- <para>
- Also improve the error message in such cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-01 [96b00c433] Remove obsolete <structname>pg_constraint</structname>.consrc column
--->
-
- <para>
- Remove obsolete <link
- linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>.<structfield>consrc</structfield>
- column (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-01 [fe5038236] Remove obsolete pg_attrdef.adsrc column
--->
-
- <para>
- Remove obsolete <link
- linkend="catalog-pg-attrdef"><structname>pg_attrdef</structname></link>.<structfield>adsrc</structfield>
- column (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-07-10 [bcbd94080] Remove dynamic_shared_memory_type=none
--->
-
- <para>
- Remove the ability to disable dynamic shared memory (Kyotaro
- Horiguchi)
- </para>
-
- <para>
- Specifically, <xref linkend="guc-dynamic-shared-memory-type"/>
- can no longer be set to <literal>none</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 12 and the previous
- major release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title><link linkend="ddl-partitioning">Partitioning</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-07 [c6e4133fa] Postpone calculating total_table_pages until after pruni
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-15 [34c9e455d] Improve performance of partition pruning remapping a lit
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2018-11-16 [3f2393ede] Redesign initialization of partition routing structures
-Author: Robert Haas <rhaas@postgresql.org>
-2019-02-21 [9eefba181] Delay lock acquisition for partitions until we route a t
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-30 [428b260f8] Speed up planning when partitions can be pruned at plan
--->
-
- <para>
- Improve performance of many operations on partitioned tables
- (Amit Langote, David Rowley, Tom Lane, Álvaro Herrera)
- </para>
-
- <para>
- Allow tables with thousands of child partitions to be processed
- efficiently by operations that only affect a small number of
- partitions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-03 [f56f8f8da] Support foreign keys that reference partitioned tables
--->
-
- <para>
- Allow <link linkend="ddl-constraints-fk">foreign keys</link>
- to reference partitioned tables (Álvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-08-01 [0d5f05cde] Allow multi-inserts during COPY into a partitioned table
--->
-
- <para>
- Improve speed of <command>COPY</command> into partitioned tables
- (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-01-25 [7c079d741] Allow generalized expression syntax for partition bounds
--->
-
- <para>
- Allow partitions bounds to be any expression (Kyotaro Horiguchi,
- Tom Lane, Amit Langote)
- </para>
-
- <para>
- Expressions are evaluated at partitioned table creation time.
- Previously, only constants were allowed as partitions bounds.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2018-12-17 [ca4103025] Fix tablespace handling for partitioned tables
--->
-
- <para>
- Allow <command>CREATE TABLE</command>'s tablespace specification
- for a partitioned table to affect the tablespace of its children
- (David Rowley, Álvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-04-05 [959d00e9d] Use Append rather than MergeAppend for scanning ordered
--->
-
- <para>
- Avoid sorting when partitions are already being scanned in the
- necessary order (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-03-07 [898e5e329] Allow ATTACH PARTITION with only ShareUpdateExclusiveLoc
--->
-
- <para>
- <link linkend="sql-altertable"><command>ATTACH
- PARTITION</command></link> is now performed with reduced locking
- requirements (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-02-08 [3677a0b26] Add pg_partition_root to display top-most parent of a pa
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-04 [b96f6b194] pg_partition_ancestors
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-30 [d5eec4eef] Add pg_partition_tree to display information about parti
--->
-
- <para>
- Add partition introspection functions (Michaël Paquier, Álvaro
- Herrera, Amit Langote)
- </para>
-
- <para>
- New function <link
- linkend="functions-info-partition"><function>pg_partition_root()</function></link>
- returns the top-most parent of a partition tree, <link
- linkend="functions-info-partition"><function>pg_partition_ancestors()</function></link>
- reports all ancestors of a partition, and <link
- linkend="functions-info-partition"><function>pg_partition_tree()</function></link>
- displays information about partitions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-12-18 [f94cec644] Include partitioned indexes to system view pg_indexes
--->
-
- <para>
- Include partitioned indexes in the system view <link
- linkend="view-pg-indexes"><structname>pg_indexes</structname></link>
- (Suraj Kharage)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-07 [1c5d9270e] psql \dP: list partitioned tables and indexes
--->
-
- <para>
- Add <application>psql</application> command <command>\dP</command>
- to list partitioned tables and indexes (Pavel Stěhule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2018-11-19 [d56e0fde8] psql: Describe partitioned tables/indexes as such
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-26 [1af25ca0c] Improve psql's \d display of foreign key constraints
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-17 [b036982db] psql: display tablespace for partitioned indexes
--->
-
- <para>
- Improve <application>psql</application> <command>\d</command>
- and <command>\z</command> display of partitioned tables (Pavel
- Stěhule, Michaël Paquier, Álvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-02-11 [1d92a0c9f] Redesign the partition dependency mechanism.
--->
-
- <para>
- Fix bugs that could cause <command>ALTER TABLE DETACH
- PARTITION</command> to not drop objects that should be dropped,
- such as automatically-created child indexes (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Geoghegan <pg@bowt.ie>
-2019-03-20 [dd299df81] Make heap TID a tiebreaker nbtree index column.
-Author: Peter Geoghegan <pg@bowt.ie>
-2019-03-20 [fab250243] Consider secondary factors during nbtree splits.
-Author: Peter Geoghegan <pg@bowt.ie>
-2019-03-25 [f21668f32] Add "split after new tuple" nbtree optimization.
--->
-
- <para>
- Improve performance and space utilization of btree indexes with
- many duplicates (Peter Geoghegan, Heikki Linnakangas)
- </para>
-
- <para>
- Previously, duplicate index entries were stored unordered within
- their duplicate groups. This caused overhead during index
- inserts, wasted space due to excessive page splits, and reduced
- <command>VACUUM</command>'s ability to recycle entire pages.
- Duplicate index entries are now sorted in heap-storage order.
- </para>
-
- <para>
- Indexes <application>pg_upgraded</application> from previous
- releases will not have these benefits.
- </para>
- </listitem>
-
- <listitem>
-<!--
-see commits above
--->
-
- <para>
- Allow multi-column btree indexes to be smaller (Peter Geoghegan,
- Heikki Linnakangas)
- </para>
-
- <para>
- Internal pages and min/max leaf page indicators now only store
- index keys until the change key, rather than all indexed keys.
- This also improves the locality of index access.
- </para>
-
- <para>
- Indexes <application>pg_upgraded</application> from previous
- releases will not have these benefits.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2018-07-28 [d2086b08b] Reduce path length for locking leaf B-tree pages during
--->
-
- <para>
- Improve speed of btree index insertions by reducing locking
- overhead (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2019-03-10 [f2e403803] Support for INCLUDE attributes in GiST indexes
--->
-
- <para>
- Support <link
- linkend="sql-createindex"><literal>INCLUDE</literal></link> columns
- in <link linkend="gist">GiST</link> indexes (Andrey Borodin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2018-09-19 [2a6368343] Add support for nearest-neighbor (KNN) searches to SP-Gi
--->
-
- <para>
- Add support for nearest-neighbor (<acronym>KNN</acronym>) searches
- of <link linkend="spgist">SP-GiST</link> indexes (Nikita Glukhov,
- Alexander Korotkov, Vlad Sterzhanov)
- </para>
-
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-2019-04-03 [9155580fd] Generate less WAL during GiST, GIN and SP-GiST index bui
--->
-
- <para>
- Reduce the <acronym>WAL</acronym> write overhead
- of <acronym>GiST</acronym>, <acronym>GIN</acronym> and
- <acronym>SP-GiST</acronym> index creation (Anastasia Lubennikova,
- Andrey V. Lepikhov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-03 [80b9e9c46] Improve performance of index-only scans with many index
--->
-
- <para>
- Allow index-only scans to be more efficient on indexes with many
- columns (Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-2019-03-05 [fe280694d] Scan GiST indexes in physical order during VACUUM.
--->
-
- <para>
- Improve the performance of vacuum scans of GiST indexes (Andrey
- Borodin, Konstantin Kuznetsov, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-2019-03-22 [7df159a62] Delete empty pages during GiST VACUUM.
--->
-
- <para>
- Delete empty leaf pages during <acronym>GiST</acronym>
- <command>VACUUM</command> (Andrey Borodin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-14 [1b5d797cd] Lower lock level for renaming indexes
--->
-
- <para>
- Reduce locking requirements for index renaming (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2019-03-27 [7300a6995] Add support for multivariate MCV lists
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2019-03-27 [a63b29a1d] Minor improvements for the multivariate MCV lists
--->
-
- <para>
- Allow <xref linkend="sql-createstatistics"/> to create
- most-common-value statistics for multiple columns (Tomas Vondra)
- </para>
-
- <para>
- This improves optimization for columns with non-uniform
- distributions that often appear in <literal>WHERE</literal>
- clauses.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-02-16 [608b167f9] Allow user control of CTE materialization, and change th
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-04-09 [947613127] Prevent inlining of multiply-referenced CTEs with outer
--->
-
- <para>
- Allow <link linkend="queries-with">common table expressions</link>
- (<acronym>CTE</acronym>) to be inlined in later parts of the query
- (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane)
- </para>
-
- <para>
- Specifically, <acronym>CTE</acronym>s are inlined
- if they are not recursive and are referenced only
- once later in the query. Inlining can be prevented by
- specifying <literal>MATERIALIZED</literal>, and forced by
- specifying <literal>NOT MATERIALIZED</literal>. Previously,
- <acronym>CTE</acronym>s were never inlined and were always
- evaluated before the rest of the query.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-07-16 [f7cb2842b] Add plan_cache_mode setting
--->
-
- <para>
- Allow control over when generic plans are used for prepared
- statements (Pavel Stěhule)
- </para>
-
- <para>
- This is controlled by the <xref linkend="guc-plan-cache_mode"/>
- server variable.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-30 [b5415e3c2] Support parameterized TidPaths.
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-30 [0a6ea4001] Add a hash opclass for type "tid".
--->
-
- <para>
- Improve optimization of self-joins involving columns of type tid (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-25 [8edd0e794] Suppress Append and MergeAppend plan nodes that have a s
--->
-
- <para>
- Improve optimization of partition and <literal>UNION ALL</literal>
- queries that have only a single child (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-13 [04fe805a1] Drop no-op CoerceToDomain nodes from expressions at plan
--->
-
- <para>
- Improve optimizations for <link
- linkend="sql-createdomain">domains</link> that have no check
- constraints (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-30 [6f19a8c41] Teach eval_const_expressions to constant-fold LEAST/GREA
--->
-
- <para>
- Inline calls to <link
- linkend="functions-greatest-least"><literal>LEAST</literal></link>
- and <literal>GREATEST</literal> to improve optimization (Vik
- Fearing)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-02-20 [e04a3905e] Improve planner's understanding of strictness of type co
--->
-
- <para>
- Allow <literal>IS NOT NULL</literal> with mis-matching types to
- use partial indexes more frequently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-01 [65ce07e02] Teach optimizer's predtest.c more things about ScalarArr
--->
-
- <para>
- Allow IN comparisons with arrays to use <literal>IS NOT
- NULL</literal> partial indexes more frequently (James Coleman)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-14 [5e0928005] Make pg_statistic and related code account more honestly
--->
-
- <para>
- Store statistics using the collation defined for each column
- (Tom Lane)
- </para>
-
- <para>
- Previously, the default collation was used for all statistics
- storage. This potentially gives better optimizer behavior for
- columns with non-default collations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-25 [f7111f72d] Improve planner's selectivity estimates for inequalities
--->
-
- <para>
- Improve optimizer estimates for <link
- linkend="datatype-oid"><type>tid</type></link> inequality
- comparisons (Edmund Horner)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-07-11 [39a96512b] Mark built-in btree comparison functions as leakproof wh
--->
-
- <para>
- Fix the btree leakproof designation of some functions (Tom Lane)
- </para>
-
- <para>
- This allows for more complex optimizations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-2018-09-21 [1f7fc7670] doc: JIT is enabled by default in PG 12
--->
-
- <para>
- Enable <link linkend="jit">Just-in-Time</link>
- (<acronym>JIT</acronym>) compilation by default (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2019-01-29 [36a1281f8] Separate per-batch and per-tuple memory contexts in COPY
-Author: Andres Freund <andres@anarazel.de>
-2019-01-26 [a9c35cf85] Change function call information to be variable length.
--->
-
- <para>
- Greatly reduce memory consumption of <xref linkend="sql-copy"/>
- and function calls (Andres Freund, Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-01-06 [afb0d0712] Replace the data structure used for keyword lookup.
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-01-09 [c64d0cd5c] Use perfect hashing, instead of binary search, for keywo
--->
-
- <para>
- Speed up keyword lookup (John Naylor, Joerg Sonnenberger, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-2019-01-25 [9556aa01c] Use single-byte Boyer-Moore-Horspool search even with mu
--->
-
- <para>
- Improve search performance for multi-byte characters (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-2019-04-02 [4d0e994ee] Add support for partial TOAST decompression
--->
-
- <para>
- Allow <link linkend="storage-toast"><literal>TOAST</literal></link>
- values to be minimally decompressed (Paul Ramsey)
- </para>
-
- <para>
- This is useful for routines that only look at values at the start
- of the <literal>TOAST</literal> field.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-03-13 [bbb96c370] Allow ALTER TABLE .. SET NOT NULL to skip provably unnec
--->
-
- <para>
- Allow <link linkend="sql-altertable"><command>ALTER TABLE .. SET
- NOT NULL</command></link> to avoid unnecessary checking (Sergei
- Kornilov)
- </para>
-
- <para>
- This can happen if column constraints already prevent nulls.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-2019-03-08 [3c5926301] Avoid some table rewrites for ALTER TABLE .. SET DATA TY
--->
-
- <para>
- Allow <command>ALTER TABLE .. SET DATA TYPE</command>
- <type>timestamp/timestamptz</type> to avoid a table rewrite when
- the session time zone is <acronym>UTC</acronym> (Noah Misch)
- </para>
-
- <para>
- In the <acronym>UTC</acronym> time zone, the data types are
- binary compatible.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-07-22 [86eaf208e] Hand code string to integer conversion for performance.
--->
-
- <para>
- Improve speed in converting strings to
- <type>int2</type>/<type>int4</type> integers (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2019-03-15 [bb16aba50] Enable parallel query with SERIALIZABLE isolation.
--->
-
- <para>
- Allow parallelized queries when in <link
- linkend="sql-set-transaction"><literal>SERIALIZABLE</literal></link>
- isolation mode (Thomas Munro)
- </para>
-
- <para>
- Previously, parallelism was disabled when in this mode.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-11-07 [3fd2a7932] Provide pg_pread() and pg_pwrite() for random I/O.
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-11-07 [c24dcd0cf] Use pg_pread() and pg_pwrite() for data files and WAL.
--->
-
- <para>
- Use <function>pread()</function> and <function>pwrite()</function>
- for random I/O (Oskari Saarenmaa, Thomas Munro)
- </para>
-
- <para>
- This reduces the number of system calls required.
-
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-07-24 [1bc180cd2] Use setproctitle_fast() to update the ps status, if avai
--->
-
- <para>
- Improve the speed of setting the <link
- linkend="guc-update-process-title">process title</link> on
- <systemitem class="osname">FreeBSD</systemitem> (Thomas Munro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2018-11-29 [88bdbd3f7] Add log_statement_sample_rate parameter
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-03 [799e22034] Log all statements from a sample of transactions
--->
-
- <para>
- Allow logging of only a percentage of statements and transactions
- meeting <xref linkend="guc-log-min-duration-statement"/> criteria
- (Adrien Nayrat)
- </para>
-
- <para>
- The parameters <xref linkend="guc-log-statement-sample-rate"/>
- and <xref linkend="guc-log-transaction-sample-rate"/> control this.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-02 [ab0dfc961] Report progress of CREATE INDEX operations
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-04-07 [03f9e5cba] Report progress of REINDEX operations
--->
-
- <para>
- Report progress of <command>CREATE INDEX</command> and
- <command>REINDEX</command> operations (Álvaro Herrera, Peter
- Eisentraut)
- </para>
-
- <para>
- Progress is reported in the <link
- linkend="progress-reporting"><structname>pg_stat_progress_create_index</structname></link>
- system view
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-03-25 [6f97457e0] Add progress reporting for CLUSTER and VACUUM FULL.
--->
-
- <para>
- Add progress reporting to <command>CLUSTER</command> and
- <command>VACUUM FULL</command> (Tatsuro Yamada)
- </para>
-
- <para>
- Progress is reported in the <link
- linkend="vacuum-progress-reporting"><structname>pg_stat_progress_cluster</structname></link>
- system view.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-04-02 [280e5f140] Add progress reporting to pg_checksums
--->
-
- <para>
- Add progress reporting to <xref linkend="app-pgchecksums"/>
- (Michael Banck, Bernd Helmle)
- </para>
-
- <para>
- This is enabled with the option <option>--progress</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-2019-03-09 [6b9e875f7] Track block level checksum failures in pg_stat_database
--->
-
- <para>
- Add counter of checksum failures to
- <structname>pg_stat_database</structname> (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-2019-04-12 [77bd49adb] Show shared object statistics in pg_stat_database
--->
-
- <para>
- Add tracking of global objects in system view
- <structname>pg_stat_database</structname> (Julien Rouhaud)
- </para>
-
- <para>
- Global objects have a <link
- linkend="pg-stat-database-view"><structname>pg_stat_database</structname></link>.<structfield>datoid</structfield>
- value of zero.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-09 [c48101620] Add pg_ls_archive_statusdir function
--->
-
- <para>
- Add the ability to list the contents of the archive directory
- (Christoph Moench-Tegeder)
- </para>
-
- <para>
- The function is <link
- linkend="functions-admin-genfile-table"><function>pg_ls_archive_statusdir()</function></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-05 [9cd92d1a3] Add pg_ls_tmpdir function
--->
-
- <para>
- Add the ability to list the contents of temporary directories
- (Nathan Bossart)
- </para>
-
- <para>
- The function, <link
- linkend="functions-admin-genfile-table"><function>pg_ls_tmpdir()</function></link>,
- optionally allows specification of a tablespace.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-02-01 [f60a0e967] Add more columns to pg_stat_ssl
--->
-
- <para>
- Add information about the client certificate to the system view
- <structname>pg_stat_ssl</structname> (Peter Eisentraut)
- </para>
-
- <para>
- The new columns are <structfield>client_serial</structfield>
- and <structfield>issuer_dn</structfield>. Column
- <structfield>clientdn</structfield> has been renamed to
- <structfield>client_dn</structfield>, for clarity.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-02-21 [f9692a769] Hide other user's pg_stat_ssl rows
--->
-
- <para>
- Restrict visibility of rows in <link
- linkend="pg-stat-ssl-view"><structname>pg_stat_ssl</structname></link>
- by unprivileged users (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-01-30 [689d15e95] Log PostgreSQL version number on startup
--->
-
- <para>
- Add the version number to the server startup log message
- (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2019-03-06 [342cb650e] Don't log incomplete startup packet if it's empty
--->
-
- <para>
- Prevent logging of empty "incomplete" startup packets (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-2018-09-28 [8bddc8640] Add application_name to connection authorized msg
--->
-
- <para>
- Unconditionally include <xref linkend="guc-application-name"/>
- in server log authentication messages (Don Seiler)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-02-27 [6ae578a91] Set fallback_application_name for a walreceiver to clust
--->
-
- <para>
- Have the walreceiver set its application name to the cluster name,
- if set (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-12-09 [7fee252f6] Add timestamp of last received message from standby to p
--->
-
- <para>
- Add the timestamp of the last received standby message to <link
- linkend="pg-stat-replication-view"><structname>pg_stat_replication</structname></link>
- (Lim MyungKyu)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-07-02 [c55de5e51] Add wait event for fsync of WAL segments
--->
-
- <para>
- Add <link linkend="wait-event-table">wait event</link> for fsync
- of <acronym>WAL</acronym> segments (Konstantin Knizhnik)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="infoschema-tables">Information Schema</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-20 [7c15cef86] Base information_schema.sql_identifier domain on name, n
--->
-
- <para>
- Allow more use of indexes for text comparisons with
- <structname>information_schema</structname> columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-18 [6b0faf723] Make collation-aware system catalog columns use "C" coll
--->
-
- <para>
- Use "C" collation for <structname>information_schema</structname>
- and the system tables (Tom Lane)
- </para>
-
- <para>
- This will produce more consistent behavior in databases with
- different collations, but will also cause these tables to produce
- results in "C" collation ordering, rather than the default
- collation for the database.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-20 [5bbee34d9] Avoid producing over-length specific_name outputs in inf
--->
-
- <para>
- Force <structname>information_schema</structname> outputs to honor
- the system-defined maximum 63-byte identifier length (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
- </sect4>
-
- <sect4>
- <title><acronym>Authentication</acronym></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-2019-04-03 [b0b39f72b] GSSAPI encryption support
--->
-
- <para>
- Add <link linkend="gssapi-auth"><acronym>GSSAPI</acronym></link>
- client and server-side encryption support (Robbie Harwood,
- Stephen Frost)
- </para>
-
- <para>
- Add <link
- linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- <link
- linkend="auth-pg-hba-conf"><literal>hostgssenc</literal></link>
- and <literal>hostnogssenc</literal> record types. This would
- typically use the <literal>gss</literal> authentication method.
- This also adds a libpq <xref linkend="libpq-connect-gssencmode"/>
- option, and a <xref linkend="pg-stat-gssapi-view"/> system view.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-2019-03-09 [0516c61b7] Add new clientcert hba option verify-full
--->
-
- <para>
- Allow the <link
- linkend="auth-cert"><literal>clientcert</literal></link>
- <filename>pg_hba.conf</filename> option to check that the database
- user name matches the certificate common name (Julian Markwort,
- Marius Timmer)
- </para>
-
- <para>
- The new check is enabled with
- <literal>clientcert=verify-full</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2019-03-21 [0f086f84a] Add DNS SRV support for LDAP server discovery.
--->
-
- <para>
- Allow discovery of the <link
- linkend="auth-ldap"><acronym>LDAP</acronym></link> server using
- <acronym>DNS SRV</acronym> records (Thomas Munro)
- </para>
-
- <para>
- This avoids the requirement of specifying
- <literal>ldapserver</literal>, and is only supported if
- <productname>PostgreSQL</productname> is compiled with
- <productname>OpenLDAP</productname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-08-10 [f841ceb26] Improve TRUNCATE by avoiding early lock queue
--->
-
- <para>
- Prevent <xref linkend="sql-truncate"/> from requesting a lock on
- tables for which the user lacks permission (Michaël Paquier)
- </para>
-
- <para>
- This prevents unauthorized locking, which could interfere with
- user queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-08-27 [a556549d7] Improve VACUUM and ANALYZE by avoiding early lock queue
--->
-
- <para>
- Prevent <command>VACUUM</command> and <command>ANALYZE</command>
- from requesting a lock on tables for which it lacks permission
- (Michaël Paquier)
- </para>
-
- <para>
- This prevents unauthorized locking, which could interfere with
- user queries.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Configuration</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-03-23 [ed308d783] Add options to enable and disable checksums in pg_checks
--->
-
- <para>
- Add ability to enable/disable cluster checksums using <xref
- linkend="app-pgchecksums"/> (Michael Banck, Michaël Paquier)
- </para>
-
- <para>
- The cluster must be offline for these operations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-10 [cbccac371] Reduce the default value of autovacuum_vacuum_cost_delay
--->
-
- <para>
- Reduce the default value of <xref
- linkend="guc-autovacuum-vacuum-cost-delay"/> to 2ms (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-10 [caf626b2c] Convert [autovacuum_]vacuum_cost_delay into floating-poi
--->
-
- <para>
- Allow <xref linkend="guc-vacuum-cost-delay"/> to specify
- sub-millisecond delays (Tom Lane)
- </para>
-
- <para>
- Floating-point values can also now be specified.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-10 [caf626b2c] Convert [autovacuum_]vacuum_cost_delay into floating-poi
--->
-
- <para>
- Allow time-based server variables to use <link
- linkend="config-setting">micro-seconds</link> (us) (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-11 [1a83a80a2] Allow fractional input values for integer GUCs, and impr
--->
-
- <para>
- Allow fractional input for integer server variables (Tom Lane)
- </para>
-
- <para>
- For example, <command>SET work_mem = '30.1GB'</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-10 [caf626b2c] Convert [autovacuum_]vacuum_cost_delay into floating-poi
--->
-
- <para>
- Allow units to be specified for floating-point server variables
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2019-04-02 [475861b26] Add wal_recycle and wal_init_zero GUCs.
--->
-
- <para>
- Add <xref linkend="guc-wal-recycle"/> and <xref
- linkend="guc-wal-init-zero"/> server variables to avoid
- <acronym>WAL</acronym> file recycling (Jerry Jelinek)
- </para>
-
- <para>
- This can be beneficial on copy-on-write file systems like
- <productname>ZFS</productname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-04-06 [249d64999] Add support TCP user timeout in libpq and the backend se
--->
-
- <para>
- Add parameter to control the server <acronym>TCP</acronym> timeout
- (Ryohei Nagaura)
- </para>
-
- <para>
- The parameter is <xref linkend="guc-tcp-user-timeout"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-20 [e73e67c71] Add settings to control SSL/TLS protocol version
--->
-
- <para>
- Allow control of the minimum and maximum <acronym>SSL</acronym>>
- protocol versions (Peter Eisentraut)
- </para>
-
- <para>
- The server settings are <xref
- linkend="guc-ssl-min-protocol-version"/> and <xref
- linkend="guc-ssl-max-protocol-version"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-07-30 [98efa76fe] Add ssl_library preset parameter
--->
-
- <para>
- Add server variable <xref linkend="guc-ssl-library"/> to report
- the <acronym>SSL</acronym> library version used by the server
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2019-02-03 [f1bebef60] Add shared_memory_type GUC.
--->
-
- <para>
- Add server variable to control the type of shared memory to use
- (Andres Freund)
- </para>
-
- <para>
- The variable is <xref linkend="guc-shared-memory-type"/>.
- Its purpose is to allow selection of <productname>System
- V</productname> shared memory, if desired.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Streaming Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-02-07 [13b89f96d] Allow some recovery parameters to be changed with reload
--->
-
- <para>
- Allow some recovery parameters to be changed with reload (Peter
- Eisentraut)
- </para>
-
- <para>
- These parameters are <xref linkend="guc-archive-cleanup-command"/>,
- <xref linkend="guc-promote-trigger-file"/>, <xref
- linkend="guc-recovery-end-command"/>, and <xref
- linkend="guc-recovery-min-apply-delay"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-09-22 [db361db2f] Make GUC wal_sender_timeout user-settable
--->
-
- <para>
- Allow the streaming replication timeout (<xref
- linkend="guc-wal-sender-timeout"/>) to be set per connection
- (Tsunakawa Takayuki)
- </para>
-
- <para>
- Previously, this could only be set cluster-wide.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-25 [10074651e] Add pg_promote function
-Author: Michael Paquier <michael@paquier.xyz>
-2018-11-06 [8f045e242] Switch pg_promote to be parallel-safe
--->
-
- <para>
- Add function <link
- linkend="functions-recovery-control"><function>pg_promote()</function></link>
- to promote standbys to primaries (Laurenz Albe, Michaël Paquier)
- </para>
-
- <para>
- Previously, this operation was only possible by using <xref
- linkend="app-pg-ctl"/> or creating a trigger file.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-04-05 [9f06d79ef] Add facility to copy replication slots
--->
-
- <para>
- Allow replication slots to be copied (Masahiko Sawada)
- </para>
-
- <para>
- The functions are <link
- linkend="functions-replication-table"><function>pg_copy_physical_replication_slot()</function></link>
- and <function>pg_copy_logical_replication_slot()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-02-12 [ea92368cd] Move max_wal_senders out of max_connections for connecti
--->
-
- <para>
- Have <xref linkend="guc-max-wal-senders"/> not count as part of
- <xref linkend="guc-max-connections"/> (Alexander Kukushkin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-01-11 [ff8530605] Add value 'current' for recovery_target_timeline
--->
-
- <para>
- Add an explicit value of <literal>current</literal> for <xref
- linkend="guc-recovery-target-timeline"/> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-09-07 [8582b4d04] Improve handling of corrupted two-phase state files at r
--->
-
- <para>
- Have recovery fail if a <link
- linkend="sql-prepare-transaction">two-phase transaction</link>
- status file is corrupt (Michaël Paquier)
- </para>
-
- <para>
- Previously, only a warning was issued in the logs and recovery
- continued.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-29 [5dc92b844] REINDEX CONCURRENTLY
--->
-
- <para>
- Add <xref linkend="sql-reindex"/> <literal>CONCURRENTLY</literal>
- to allow reindexing concurrently (Michaël Paquier, Andreas
- Karlsson, Peter Eisentraut)
- </para>
-
- <para>
- This is also controlled by the <xref linkend="app-reindexdb"/>
- <option>--concurrently</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-30 [fc22b6623] Generated columns
--->
-
- <para>
- Add support for <link linkend="sql-createtable">generated
- columns</link> (Peter Eisentraut)
- </para>
-
- <para>
- The content of generated columns are computed from expressions
- (including references to other columns in the same table)
- rather than being specified by <command>INSERT</command> or
- <command>UPDATE</command> commands.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2019-01-20 [31f381740] Allow COPY FROM to filter data using WHERE conditions
--->
-
- <para>
- Add a <literal>WHERE</literal> clause to <command>COPY
- FROM</command> which controls which rows are output (Surafel
- Temesgen)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-10-09 [212fab992] Relax transactional restrictions on ALTER TYPE ... ADD V
--->
-
- <para>
- Allow enumerated values to be added in more transaction types
- (Andrew Dunstan, Tom Lane, Thomas Munro)
- </para>
-
- <para>
- Previously, <link linkend="sql-altertype"><command>ALTER
- TYPE ... ADD VALUE</command></link> could only be called in
- a transaction that created the enumerated type. Now, the only
- restriction is that the new enumerated value cannot be referenced
- until the transaction commits.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-24 [280a408b4] Transaction chaining
--->
-
- <para>
- Add command to end a transaction and start a new one (Peter
- Eisentraut)
- </para>
-
- <para>
- The commands are <link linkend="sql-commit"><command>COMMIT AND
- CHAIN</command></link> and <command>ROLLBACK AND CHAIN</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-22 [5e1963fb7] Collations with nondeterministic comparison
--->
-
- <para>
- Allow the creation of <link
- linkend="sql-createcollation">collations</link> that report
- string equality for strings that are not byte-wise equal (Peter
- Eisentraut)
- </para>
-
- <para>
- This allows case and accent-agnostic equality comparisons using
- "nondeterministic" collations. This is only supported for
- <acronym>ICU</acronym> collations. MENTION ITS AFFECT ON ORDERING?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-2019-04-08 [119dcfad9] Add vacuum_truncate reloption.
-Author: Fujii Masao <fujii@postgresql.org>
-2019-05-08 [b84dbc8eb] Add TRUNCATE parameter to VACUUM.
--->
-
- <para>
- Add <xref linkend="sql-vacuum"/> and <command>CREATE
- TABLE</command> options to prevent <command>VACUUM</command>
- from truncating trailing empty pages (Tsunakawa Takayuki)
- </para>
-
- <para>
- The options are <varname>vacuum_truncate</varname> and
- <varname>toast.vacuum_truncate</varname>. This reduces vacuum
- locking requirements.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-04-04 [a96c41fee] Allow VACUUM to be run with index cleanup disabled.
--->
-
- <para>
- Allow vacuum to avoid index cleanup with the
- <literal>INDEX_CLEANUP</literal> option (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-04 [803b1301e] Add option SKIP_LOCKED to VACUUM and ANALYZE
--->
-
- <para>
- Add the ability to skip <command>VACUUM</command> and
- <command>ANALYZE</command> operations on tables that cannot be
- immediately locked (Nathan Bossart)
- </para>
-
- <para>
- This option is called <literal>SKIP_LOCKED</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-03-29 [41b54ba78] Allow existing VACUUM options to take a Boolean argument
--->
-
- <para>
- Allow <command>VACUUM</command> and <command>ANALYZE</command>
- to take optional boolean argument specifications (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2019-04-04 [ea569d64a] Add SETTINGS option to EXPLAIN, to print modified settin
--->
-
- <para>
- Add <xref linkend="sql-explain"/> option
- <literal>SETTINGS</literal> to output non-default optimizer
- settings (Tomas Vondra)
- </para>
-
- <para>
- This can also be output in auto-explain via <xref
- linkend="auto-explain"/>.<literal>log_settings</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-2019-03-19 [01bde4fa4] Implement OR REPLACE option for CREATE AGGREGATE.
--->
-
- <para>
- Allow aggregates to be replaced (Andrew Gierth)
- </para>
-
- <para>
- The command is <link linkend="sql-createaggregate"><command>CREATE
- OR REPLACE AGGREGATE</command></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-19 [590a87025] Ignore attempts to add TOAST table to shared or catalog
--->
-
- <para>
- Allow modifications of system table options using <xref
- linkend="sql-altertable"/> (Peter Eisentraut)
- </para>
-
- <para>
- This allows modifications of <literal>reloptions</literal> and
- autovacuum settings.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-01-30 [5f5c01459] Allow RECORD and RECORD[] to be specified in function co
--->
-
- <para>
- Allow <type>RECORD</type> and <type>RECORD[]</type> to be used
- as column types in a query's column definition list for a <link
- linkend="sql-createfunction">table function</link> that is declared
- to return <type>RECORD</type> (Elvis Pranskevichus)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-13 [f177660ab] Include all columns in default names for foreign key con
--->
-
- <para>
- Use all column names when creating default foreign key constraint
- names (Peter Eisentraut)
- </para>
-
- <para>
- Previously, only the first column name was used.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-24 [fd582317e] Sync our Snowball stemmer dictionaries with current upst
--->
-
- <para>
- Update Snowball stemmer dictionaries with support for new languages
- (Arthur Zakirov)
- </para>
-
- <para>
- This adds stemming for Arabic, Indonesian, Irish, Lithuanian, Nepali,
- and Tami to <link linkend="textsearch">full text search</link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-17 [b8f9a2a69] Add support for collation attributes on older ICU versio
--->
-
- <para>
- Add support for <acronym>ICU</acronym> collation customization
- attributes (Peter Eisentraut)
- </para>
-
- <para>
- This allow modification of the collation rules. DETAILS?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-19 [2ece7c07d] Add text-vs-name cross-type operators, and unify name_op
--->
-
- <para>
- Allow data type <link linkend="datatype-oid">name</link> to more
- seamlessly be compared to other text types (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2019-03-16 [72b646033] Partial implementation of SQL/JSON path language
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2019-03-16 [16d489b0f] Numeric error suppression in jsonpath
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2019-04-01 [0a02e2ae0] GIN support for @@ and @? jsonpath operators
--->
-
- <para>
- Add support for the <acronym>SQL/JSON</acronym> <link
- linkend="functions-json-processing-table">path</link> language
- (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov,
- Liudmila Mantrova)
- </para>
-
- <para>
- This allows execution of complex queries on <type>JSON</type>
- values using an <acronym>SQL</acronym>-standard language.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-03-12 [f1d85aa98] Add support for hyperbolic functions, as well as log10()
--->
-
- <para>
- Add support for <link linkend="functions-math-hyp-table">hyperbolic
- functions</link> (Lætitia Avrot)
- </para>
-
- <para>
- Also add <function>log10()</function> as alias for
- <function>log()</function>, for standards compliance.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Dean Rasheed <dean.a.rasheed@gmail.com>
-2018-10-06 [e954a727f] Improve the accuracy of floating point statistical aggre
--->
- <para>
- Improve the accuracy of statistical aggregates like <link
- linkend="functions-aggregate-statistics-table"><function>variance()</function></link>
- by using more precise algorithms (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-14 [600b04d6b] Add a timezone-specific variant of date_trunc().
--->
-
- <para>
- Allow <link
- linkend="functions-datetime-table"><function>date_trunc()</function></link>
- to have an additional argument to control the time zone (Vik
- Fearing, Tom Lane)
- </para>
-
- <para>
- This is faster and simpler than using the <literal>AT TIME
- ZONE</literal> clause.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2018-09-09 [cf9846724] Improve behavior of to_timestamp()/to_date() functions
--->
-
- <para>
- Adjust <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>/<function>to_date()</function>
- functions to be more forgiving of template mismatches (Artur
- Zakirov, Alexander Korotkov, Liudmila Mantrova)
- </para>
-
- <para>
- This new behavior more closely matches the
- <productname>Oracle</productname> functions of the same name.
- DETAILS?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-07 [251cf2e27] Fix minor deficiencies in XMLTABLE, xpath(), xmlexists()
--->
-
- <para>
- Improve node detection and escaping of <link
- linkend="functions-xml"><acronym>XML</acronym> functions</link>
- (Pavel Stěhule, Markus Winand, Chapman Flack)
- </para>
-
- <para>
- Specifically, in <literal>XMLTABLE</literal>,
- <function>xpath()</function>, and <function>xmlexists()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-07 [eaaa5986a] Fix the BY {REF,VALUE} clause of XMLEXISTS/XMLTABLE
--->
-
- <para>
- Allow the <literal>XML BY VALUE</literal> clause (Chapman Flack)
- </para>
-
- <para>
- The clause has no effect.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-03-27 [5bde1651b] Switch function current_schema[s]() to be parallel-unsaf
--->
-
- <para>
- Prevent <link
- linkend="functions-info-session-table"><function>current_schema()</function></link>
- and <function>current_schemas()</function> from being run by
- parallel workers (Michaël Paquier)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="plpgsql">PL/pgSQL</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-01-04 [4879a5172] Support plpgsql variable names that conflict with unrese
--->
-
- <para>
- Allow commands and variables with the same name as commands to
- be used in the same PL/pgSQL function (Tom Lane)
- </para>
-
- <para>
- For example, allow a variable called comment to exist in the same
- function that calls the comment <acronym>SQL</acronym> command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-2018-07-25 [167075be3] Add strict_multi_assignment and too_many_rows plpgsql ch
--->
-
- <para>
- Add new optional warning and error checks to PL/pgSQL (Pavel
- Stěhule)
- </para>
-
- <para>
- The new checks allow for run-time validation of
- <literal>INTO</literal> column counts and single-row results.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Interfaces</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-2019-02-18 [050710b36] Add bytea datatype to ECPG.
--->
-
- <para>
- Allow <xref linkend="app-ecpg"/> to create variables of data type
- bytea (Ryo Matsumura)
- </para>
-
- <para>
- This allows to interaction with <type>bytea</type> data directly,
- rather than using a binary encoding.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-2019-02-16 [bd7c95f0c] Add DECLARE STATEMENT support to ECPG.
--->
-
- <para>
- Add <command>DECLARE STATEMENT</command> support to
- <productname>ECPG</productname> (Takeshi Ideriha, Hayato Kuroda)
- </para>
-
- <para>
- This allows statements to be associated with named connections,
- so future operations like cursors don't need to re-reference the
- connection name.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-04-06 [249d64999] Add support TCP user timeout in libpq and the backend se
--->
-
- <para>
- Add parameter to control libpq's <acronym>TCP</acronym> timeout
- (Ryohei Nagaura)
- </para>
-
- <para>
- The parameter is <xref linkend="libpq-tcp-user-timeout"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-04-04 [7bac3acab] Add a "SQLSTATE-only" error verbosity option to libpq an
--->
-
- <para>
- Allow libpq to report the <literal>SQLSTATE</literal> to output
- only this value (Didier Gautheron)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-11 [2970afa6c] Add PQresultMemorySize function to report allocated size
--->
-
- <para>
- Add libpq function to report the memory size of the query result
- (Lars Kanis, Tom Lane)
- </para>
-
- <para>
- The function is <link
- linkend="libpq-pqresultmemorysize"><function>PQresultMemorySize()</function></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-09-07 [1fea1e325] libpq: Change "options" dispchar to normal
--->
-
- <para>
- Remove the no-display/debug flag from the libpq
- <literal>options</literal> parameter (Peter Eisentraut)
- </para>
-
- <para>
- This allows the option to be used by
- <application>postgres_fdw</application>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-01-31 [00d1e88d3] Add - -min-xid-age and - -min-mxid-age options to vacuumdb
--->
-
- <para>
- Allow <xref linkend="app-vacuumdb"/> to select tables for vacuum
- based on their wraparound horizon (Nathan Bossart)
- </para>
-
- <para>
- The options are <option>--min-xid-age</option> and
- <option>--min-mxid-age</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-04-01 [cc8d41511] Unified logging system for command-line programs
--->
-
- <para>
- Add colorization to the output of command-line utilities (Peter
- Eisentraut)
- </para>
-
- <para>
- This is enabled with by setting environment variable
- <envar>PG_COLORS</envar>. EXAMPLE?
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-26 [aa2ba50c2] Add CSV table output mode in psql.
--->
-
- <para>
- Add <acronym>CSV</acronym> table output mode in
- <application>psql</application> (Daniel Vérité)
- </para>
-
- <para>
- This is controlled by <command>\pset format csv</command> or the
- command-line <option>--csv</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-11 [27f3dea64] psql: Add documentation URL to \help output
--->
-
- <para>
- Show the manual page <acronym>URL</acronym> in
- <application>psql</application>'s <command>\help</command> output
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2018-11-19 [6e5f8d489] psql: Show IP address in \conninfo
--->
-
- <para>
- Display the <acronym>IP</acronym> address in
- <application>psql</application>'s <command>\conninfo</command>
- (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-12-23 [11a60d496] Add completion for storage parameters after CREATE TABLE
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-26 [5953c9969] Improve tab completion of CREATE EVENT TRIGGER in psql
-Author: Michael Paquier <michael@paquier.xyz>
-2018-10-26 [292ef6e27] Add tab completion of EXECUTE FUNCTION for CREATE TRIGGE
-Author: Michael Paquier <michael@paquier.xyz>
-2019-01-28 [23349b18d] Add tab completion for ALTER INDEX ALTER COLUMN in psql
-Author: Michael Paquier <michael@paquier.xyz>
-2018-12-20 [4cba9c2a3] Add more tab completion for CREATE TABLE in psql
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-20 [a7c4dad1a] Fix psql's tab completion for ALTER DATABASE ... SET TAB
-Author: Michael Paquier <michael@paquier.xyz>
-2018-12-25 [f89ae34ab] Improve tab completion of ALTER INDEX/TABLE with SET STA
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-20 [c9a8a401f] Fix psql's tab completion for TABLE.
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-21 [121213d9d] Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.
--->
-
- <para>
- Improve tab completion of <command>CREATE TABLE, CREATE TRIGGER,
- CREATE EVENT TRIGGER, ANALYZE, EXPLAIN, VACUUM, ALTER TABLE,
- ALTER INDEX, ALTER DATABASE, ALTER INDEX ALTER COLUMN</command>
- (Dagfinn Ilmari Mannsåker, Tatsuro Yamada, Michaël Paquier,
- Tom Lane, Justin Pryzby)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="pgbench"><application>pgbench</application></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-01-10 [6260cc550] pgbench: add \cset and \gset commands
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-25 [25ee70511] pgbench: Remove \cset
--->
-
- <para>
- Allow values produced by queries to be assigned to pgbench
- variables (Fabien Coelho, Álvaro Herrera)
- </para>
-
- <para>
- The commands is <command>\gset</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-25 [5b7e03670] Avoid unnecessary precision loss for pgbench's - -rate ta
--->
-
- <para>
- Improve precision of pgbench's <option>--rate</option>
- option (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-10-15 [5b75a4f82] pgbench: Report errors during run better
--->
- <para>
- Improve pgbench error reporting with clearer messages and return
- codes (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-01-08 [354e95d1f] Add - -disable-page-skipping and - -skip-locked to vacuumd
--->
-
- <para>
- Allow vacuumdb to disable waiting for locks or skipping all-visible
- pages (Nathan Bossart)
- </para>
-
- <para>
- The options are <option>--skip-locked</option> and
- <option>--disable-page-skipping</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-2018-09-01 [ec7436993] Implement "pg_ctl logrotate" command
--->
-
- <para>
- Allow control of log file rotation via <xref linkend="app-pg-ctl"/>
- (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov)
- </para>
-
- <para>
- Previously, this was only possible via an <acronym>SQL</acronym>
- function or a process signal.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-2019-01-14 [bb24439ce] Detach postmaster process from pg_ctl's session at serve
--->
-
- <para>
- Properly detach the server on <application>pg_ctl</application>
- start (Paul Guo)
- </para>
-
- <para>
- This prevents later shell activity from interfering with the
- postmaster.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-2018-11-07 [3a769d823] pg_upgrade: Allow use of file cloning
--->
-
- <para>
- Allow <xref linkend="pgupgrade"/> to use the file system cloning
- feature (Peter Eisentraut)
- </para>
-
- <para>
- The <option>--clone</option> option has the advantages of
- <option>--link</option>, while preventing the old cluster from
- being changed after the new cluster has started.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-12-01 [2d34ad843] Add a - -socketdir option to pg_upgrade.
--->
-
- <para>
- Allow specification of the <application>pg_upgrade</application>
- socket directory (Daniel Gustafsson)
- </para>
-
- <para>
- This is controlled by <option>--socketdir</option>; the default
- is the current directory.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-03-23 [e0090c869] Add option -N/- -no-sync to pg_checksums
--->
-
- <para>
- Allow <xref linkend="app-pgchecksums"/> to disable fsync operations
- (Michaël Paquier)
- </para>
-
- <para>
- This is controlled by the <option>--no-sync</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-07-10 [8a00b96aa] Add pg_rewind - -no-sync
--->
-
- <para>
- Allow <xref linkend="app-pgrewind"/> to disable fsync operations
- (Michaël Paquier)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link>,
- <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
- <link linkend="app-pgrestore"><application>pg_restore</application></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-2019-03-07 [7e413a0f8] pg_dump: allow multiple rows per insert
--->
-
- <para>
- Allow control over the number of rows each
- <application>pg_dump</application> <command>INSERT</command>
- statement uses (Surafel Temesgen, David Rowley)
- </para>
-
- <para>
- The option is <option>--rows-per-insert</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2019-03-01 [f092de050] Add - -exclude-database option to pg_dumpall
--->
-
- <para>
- Add <option>--exclude-database</option> option to
- <application>pg_dumpall</application> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-07-13 [387a5cfb9] Add pg_dump - -on-conflict-do-nothing option.
--->
-
- <para>
- Allow pg_dump to emit <command>INSERT ... ON CONFLICT DO
- NOTHING</command> (Surafel Temesgen)
- </para>
-
- <para>
- This avoids conflict failures during restore.
- The <application>pg_dump</application> option is
- <option>--on-conflict-do-nothing</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-14 [548e50976] Improve parallel scheduling logic in pg_dump/pg_restore.
--->
-
- <para>
- Decouple the order of parallel <application>pg_dump</application>
- from the order used by <application>pg_restore</application>
- (Tom Lane)
- </para>
-
- <para>
- This allows <application>pg_restore</application> to perform more
- efficient parallel restores.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2019-02-18 [af25bc03e] Provide an extra-float-digits setting for pg_dump / pg_d
--->
-
- <para>
- Allow the number of float digits to be specified
- for <application>pg_dump</application> and
- <application>pg_dumpall</application> (Andrew Dunstan)
- </para>
-
- <para>
- This allows the float digit output to match previous dumps.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-11-16 [4da597edf] Make TupleTableSlots extensible, finish split of
-Author: Andres Freund <andres@anarazel.de>
-2019-03-06 [8586bf7ed] tableam: introduce table AM infrastructure.
-Author: Andres Freund <andres@anarazel.de>
-2019-03-06 [3b925e905] tableam: Add pg_dump support.
-Author: Andres Freund <andres@anarazel.de>
-2019-03-11 [c2fe139c2] tableam: Add and use scan APIs.
-Author: Andres Freund <andres@anarazel.de>
-2019-03-23 [5db6df0c0] tableam: Add tuple_{insert, delete, update, lock} and us
-Author: Andres Freund <andres@anarazel.de>
-2019-03-28 [d25f51910] tableam: relation creation, VACUUM FULL/CLUSTER, SET TAB
-Author: Andres Freund <andres@anarazel.de>
-2019-03-29 [d3a5fc17e] Show table access methods as such in psql's \dA.
-Author: Andres Freund <andres@anarazel.de>
-2019-03-31 [73c954d24] tableam: sample scan.
-Author: Andres Freund <andres@anarazel.de>
-2019-03-31 [bfbcad478] tableam: bitmap table scan.
-existin
--->
-
- <para>
- Add <xref linkend="sql-create-access-method"/> command to create
- new table types (Andres Freund, Haribabu Kommi, Álvaro Herrera,
- Alexander Korotkov, Dmitry Dolgov)
- </para>
-
- <para>
- This enables the development of new <link linkend="tableam">table
- access methods</link>, which can optimize storage for different
- use-cases. The existing <literal>heap</literal> access method
- remains the default.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-02-09 [1fb57af92] Create the infrastructure for planner support functions.
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2019-02-09 [a391ff3c3] Build out the planner support function infrastructure.
--->
-
- <para>
- Add support function capability to improve optimizer estimates,
- inlining, and indexing for functions (Tom Lane)
- </para>
-
- <para>
- This allows extensions to create planner support functions that
- can provide function-specific selectivity, cost, and row-count
- estimates that can depend on the function's arguments. Support
- functions can also supply simplified representations and index
- conditions, greatly expanding optimization possibilities.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-12-13 [09568ec3d] Create a separate oid range for oids assigned by genbki.
--->
-
- <para>
- Reserve a range of oids (9000-9999) to be used for external
- extensions (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2018-10-02 [a33245a85] Don't build static libraries on Cygwin
--->
-
- <para>
- Build <productname>Cygwin</productname> binaries using dynamic
- instead of static libraries (Marco Atzeri)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-01-01 [1707a0d2a] Remove configure switch - -disable-strong-random
--->
-
- <para>
- Remove <application>configure</application> switch
- <option>--disable-strong-random</option> (Michaël Paquier)
- </para>
-
- <para>
- A strong random source is now required.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-09-26 [26e9d4d4e] Convert elog.c's useful_strerror() into a globally-used
--->
-
- <para>
- Properly report Winsock errors on
- <productname>Windows</productname> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-2018-08-23 [d9dd406fe] Require C99 (and thus MSCV 2013 upwards).
--->
-
- <para>
- Require a C99-supported compiler, and <acronym>MSVC</acronym>
- 2013 or later on <productname>Windows</productname> (Andres Freund)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Documentation</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-03-27 [ea55aec0a] doc: Add some images
--->
-
- <para>
- Add images to the <productname>PostgreSQL</productname>
- documentation (Jürgen Purtz)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-2019-03-29 [c900c1526] Warn more strongly about the dangers of exclusive backup
--->
-
- <para>
- More clearly document the problems of server failure during <link
- linkend="backup-lowlevel-base-backup-exclusive">exclusive base
- backups</link> (David Steele, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Greg Stark <stark@mit.edu>
-2018-10-09 [36e9d413a] Add "B" suffix for bytes to docs
--->
-
- <para>
- Document that the <literal>B</literal>/bytes units can be specified
- for <link linkend="config-setting">server variables</link>
- (Greg Stark)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Joe Conway <mail@joeconway.com>
-2018-09-24 [c62dd80cd] Document aclitem functions and operators
--->
-
- <para>
- Add <link linkend="functions-aclitem-op-table">documentation</link>
- for <type>aclitem</type> functions and operators (Fabien Coelho,
- John Naylor)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2019-04-26 [60bbf0753] doc: Update section on NFS
--->
-
- <para>
- Update documentation on the use of <link
- linkend="creating-cluster-nfs"><acronym>NFS</acronym></link>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Etsuro Fujita <efujita@postgresql.org>
-2019-04-02 [ffab494a4] postgres_fdw: Perform the (ORDERED, NULL) upperrel opera
-Author: Etsuro Fujita <efujita@postgresql.org>
-2019-04-02 [d50d172e5] postgres_fdw: Perform the (FINAL, NULL) upperrel operati
--->
-
- <para>
- Allow more <literal>ORDER BY</literal> sorts and
- <literal>LIMIT</literal> clauses to be pushed to
- <application>postgres_fdw</application> foreign tables (Etsuro
- Fujita)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Etsuro Fujita <efujita@postgresql.org>
-2018-12-04 [f8f6e4467] postgres_fdw: Improve cost and size estimation for aggre
-Author: Etsuro Fujita <efujita@postgresql.org>
-2019-01-24 [fd1afdbaf] postgres_fdw: Account for tlist eval costs in estimate_p
-Author: Etsuro Fujita <efujita@postgresql.org>
-2019-05-09 [edbcbe277] postgres_fdw: Fix cost estimation for aggregate pushdown
--->
-
- <para>
- Improve optimizer cost accounting for pushdown of aggregates to
- <xref linkend="postgres-fdw"/> tables (Etsuro Fujita)
- </para>
-
- <para>
- This release also improves costing of
- <application>postgres_fdw</application> target list generation.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Jeff Davis <jdavis@postgresql.org>
-2018-07-08 [a45adc747] Fix WITH CHECK OPTION on views referencing postgres_fdw
--->
-
- <para>
- Properly honor <literal>WITH CHECK OPTION</literal> on views
- that reference <application>postgres_fdw</application> tables
- (Etsuro Fujita)
- </para>
-
- <para>
- While <literal>CHECK OPTION</literal>s on
- <application>postgres_fdw</application> tables are ignored (because
- the reference is foreign), views on such tables are considered
- local, so this release enforces <literal>CHECK OPTION</literal>s
- on them. Previously, only <command>INSERT</command>s and
- <command>UPDATE</command>s with <literal>RETURNING</literal>
- clauses that returned <literal>CHECK OPTION</literal> values
- were validated.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-2019-01-11 [43cbedab8] Extend pg_stat_statements_reset to reset statistics spec
--->
-
- <para>
- Allow <link
- linkend="pgstatstatements"><function>pg_stat_statements_reset()</function></link>
- to be more granular (Haribabu Kommi, Amit Kapila)
- </para>
-
- <para>
- The function now allows reset of statistics for specific databases,
- users, and queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2018-07-31 [2d36a5e9d] Provide a log_level setting for auto_explain
--->
-
- <para>
- Allow control of the <xref linkend="auto-explain"/> log level
- (Tom Dunstan, Andrew Dunstan)
- </para>
-
- <para>
- The default is <literal>LOG</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2019-01-10 [e1c1d5444] Update unaccent rules with release 34 of CLDR for Latin-
--->
-
- <para>
- Update <application>unaccent</application> rules with new
- punctuation and symbols (Hugh Ranalli, Michaël Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2019-02-01 [456e3718e] Add combining characters to unaccent.rules.
--->
-
- <para>
- Allow <xref linkend="unaccent"/> to handle some accents encoded
- as combining characters (Hugh Ranalli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-2018-09-02 [5e8d670c3] Add Greek characters to unaccent.rules.
--->
-
- <para>
- Allow <application>unaccent</application> to remove accents from
- Greek characters (Tasos Maschalidis)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-23 [48c41fa97] Add a 64-bit hash function for type <type>citext</type>.
--->
-
- <para>
- Add 64-bit hash function to <xref linkend="citext"/> (Amul Sul)
- </para>
-
- <para>
- The function <function>citext_hash_extended()</function> also
- requires a seed value. NO DOCS?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-2018-11-23 [eb6f29141] Add a 64-bit hash function for type <application>hstore</application>.
--->
-
- <para>
- Add 64-bit hash function to <xref linkend="hstore"/> (Amul Sul)
- </para>
-
- <para>
- The function <function>hstore_hash_extended()</function> also
- requires a seed value. NO DOCS?
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2018-08-28 [1aaf532de] Rework option set of oid2name
-Author: Michael Paquier <michael@paquier.xyz>
-2018-08-28 [bfea331a5] Rework option set of vacuumlo
--->
-
- <para>
- Improve <xref linkend="oid2name"/> and <xref linkend="vacuumlo"/>
- option handling to match other commands (Tatsuro Yamada)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2 id="release-12-acknowledgements">
- <title>Acknowledgments</title>
-
- <para>
- The following individuals (in alphabetical order) have contributed to this
- release as patch authors, committers, reviewers, testers, or reporters of
- issues.
- </para>
-
- <simplelist>
- <member></member>
- </simplelist>
- </sect2>
-
- </sect1>