mirror of
https://github.com/postgres/postgres.git
synced 2026-04-27 17:16:43 -04:00
Also, another round of copy-editing. I merged a few items that didn't seem to be meaningfully different from a user's perspective.
3150 lines
90 KiB
Text
3150 lines
90 KiB
Text
<!-- doc/src/sgml/release-10.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-10">
|
|
<title>Release 10</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2017-??-?? (current as of 2017-09-07, commit 08cb36417)</para>
|
|
</formalpara>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
Major enhancements in <productname>PostgreSQL</> 10 include:
|
|
</para>
|
|
|
|
<!-- Items in this list summarize one or more items below -->
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Logical replication using publish/subscribe</para></listitem>
|
|
<listitem><para>Declarative table partitioning</para></listitem>
|
|
<listitem><para>Improved query parallelism</para></listitem>
|
|
<listitem><para>Significant general performance improvements</para></listitem>
|
|
<listitem><para>Stronger password authentication based on SCRAM-SHA-256</para></listitem>
|
|
<listitem><para>Improved monitoring and control</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 10</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 10 contains a number of changes that may affect compatibility
|
|
with previous releases. Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-03 [ea69a0dea] Expand hash indexes more gradually.
|
|
2017-05-19 [a95410e2e] pg_upgrade: Handle hash index upgrades more smoothly.
|
|
2017-08-04 [620b49a16] hash: Increase the number of possible overflow bitmaps b
|
|
-->
|
|
<para>
|
|
Hash indexes must be rebuilt after <application>pg_upgrade</>-ing
|
|
from any previous major <productname>PostgreSQL</> version (Mithun
|
|
Cy, Robert Haas, Amit Kapila)
|
|
</para>
|
|
|
|
<para>
|
|
Major hash index improvements necessitated this requirement.
|
|
<application>pg_upgrade</> will create a script to assist with this.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-20 [f82ec32ac] Rename "pg_xlog" directory to "pg_wal"
|
|
2017-03-17 [88e66d193] Rename "pg_clog" directory to "pg_xact".
|
|
-->
|
|
<para>
|
|
Rename write-ahead log directory <filename>pg_xlog</>
|
|
to <link linkend="wal"><filename>pg_wal</></>, and rename transaction
|
|
status directory <filename>pg_clog</> to <filename>pg_xact</>
|
|
(Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
Users have occasionally thought that these directories contained only
|
|
inessential log files, and proceeded to remove write-ahead log files
|
|
or transaction status files manually, causing irrecoverable data
|
|
loss. These name changes are intended to discourage such errors in
|
|
future.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-09 [806091c96] Remove all references to "xlog" from SQL-callable functi
|
|
2017-02-09 [85c11324c] Rename user-facing tools with "xlog" in the name to say
|
|
2017-02-09 [62e8b3875] Rename command line options for ongoing xlog -> wal conv
|
|
2017-02-15 [0dfa89ba2] Replace reference to "xlog-method" with "wal-method" in
|
|
-->
|
|
<para>
|
|
Rename <acronym>SQL</> functions, tools, and options that reference
|
|
<quote>xlog</> to <quote>wal</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <function>pg_switch_xlog()</> becomes
|
|
<function>pg_switch_wal()</>, <application>pg_receivexlog</>
|
|
becomes <application>pg_receivewal</>, and <option>--xlogdir</>
|
|
becomes <option>--waldir</>. This is for consistency with the
|
|
change of the <filename>pg_xlog</> directory name; in general,
|
|
the <quote>xlog</> terminology is no longer used in any user-facing
|
|
places.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-05-11 [d10c626de] Rename WAL-related functions and views to use "lsn" not
|
|
-->
|
|
<para>
|
|
Rename <acronym>WAL</>-related functions and views to use <literal>lsn</>
|
|
instead of <literal>location</> (David Rowley)
|
|
</para>
|
|
|
|
<para>
|
|
There was previously an inconsistent mixture of the two terminologies.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-16 [d43a619c6] Fix check_srf_call_placement() to handle VALUES cases co
|
|
2017-01-18 [69f4b9c85] Move targetlist SRF handling from expression evaluation
|
|
2017-01-18 [f13a1277a] Doc: improve documentation of new SRF-in-tlist behavior.
|
|
2017-06-13 [0436f6bde] Disallow set-returning functions inside CASE or COALESCE
|
|
-->
|
|
<para>
|
|
Change the implementation of set-returning functions appearing in
|
|
a query's <literal>SELECT</> list (Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
Set-returning functions are now evaluated before evaluation of scalar
|
|
expressions in the <literal>SELECT</> list, much as though they had
|
|
been placed in a <literal>LATERAL FROM</>-clause item. This allows
|
|
saner semantics for cases where multiple set-returning functions are
|
|
present. If they return different numbers of rows, the shorter results
|
|
are extended to match the longest result by adding nulls. Previously
|
|
the results were cycled until they all terminated at the same time,
|
|
producing a number of rows equal to the least common multiple of the
|
|
functions' periods. In addition, set-returning functions are now
|
|
disallowed within <literal>CASE</> and <literal>COALESCE</> constructs.
|
|
For more information
|
|
see <xref linkend="xfunc-sql-functions-returning-set">.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-20 [1753b1b02] Add pg_sequence system catalog
|
|
2016-11-18 [67dc4ccbb] Add pg_sequences view
|
|
2017-05-15 [f8dc1985f] Fix ALTER SEQUENCE locking
|
|
2017-06-01 [3d79013b9] Make ALTER SEQUENCE, including RESTART, fully transactio
|
|
-->
|
|
<para>
|
|
Move sequences' metadata fields into a new <link
|
|
linkend="catalog-pg-sequence"><structname>pg_sequence</></>
|
|
system catalog (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
A sequence relation now stores only the fields that can be modified
|
|
by <function>nextval()</>, that
|
|
is <structfield>last_value</>, <structfield>log_cnt</>,
|
|
and <structfield>is_called</>. Other sequence properties, such as
|
|
the starting value and increment, are kept in a corresponding row of
|
|
the <structname>pg_sequence</> catalog.
|
|
<command>ALTER SEQUENCE</> updates are now fully transactional,
|
|
implying that the sequence is locked until commit.
|
|
The <function>nextval()</> and <function>setval()</> functions
|
|
remain nontransactional.
|
|
</para>
|
|
|
|
<para>
|
|
The main incompatibility introduced by this change is that selecting
|
|
from a sequence relation now returns only the three fields named
|
|
above. To obtain the sequence's other properties, applications must
|
|
look into <structname>pg_sequence</>. The new system
|
|
view <link linkend="view-pg-sequences"><structname>pg_sequences</></>
|
|
can also be used for this purpose; it provides column names that are
|
|
more compatible with existing code.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-04 [9a4d51077] Make wal streaming the default mode for pg_basebackup
|
|
-->
|
|
<para>
|
|
Make <application><xref linkend="app-pgbasebackup"></> stream the
|
|
<acronym>WAL</> needed to restore the backup by default (Magnus
|
|
Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This changes <application>pg_basebackup</>'s
|
|
<option>-X</>/<option>--xlog-method</> default to <literal>stream</>.
|
|
An option value <literal>none</> has been added to reproduce the old
|
|
behavior. The <application>pg_basebackup</> option <option>-x</>
|
|
has been removed (instead, use <literal>-X fetch</>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-13 [8df9bd0b4] Change logical replication pg_hba.conf use
|
|
-->
|
|
<para>
|
|
Change how logical replication
|
|
uses <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
In previous releases, a logical replication connection required
|
|
the <literal>replication</literal> keyword in the database column. As
|
|
of this release, logical replication matches a normal entry with a
|
|
database name or keywords such as <literal>all</literal>. Physical
|
|
replication continues to use the <literal>replication</literal> keyword.
|
|
Since built-in logical replication is new in this release, this
|
|
change only affects users of third-party logical replication plugins.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-14 [05cd12ed5] pg_ctl: Change default to wait for all actions
|
|
-->
|
|
<para>
|
|
Make all <application><xref linkend="app-pg-ctl"></> actions wait
|
|
for completion by default (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously some <application>pg_ctl</> actions didn't wait for
|
|
completion, and required the use of <option>-w</> to do so.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-05-08 [eb61136dc] Remove support for password_encryption='off' / 'plain'.
|
|
-->
|
|
<para>
|
|
Remove the ability to store unencrypted passwords on the server
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The <xref linkend="guc-password-encryption"> server parameter
|
|
no longer supports <literal>off</> or <literal>plain</>.
|
|
The <literal>UNENCRYPTED</> option is no longer supported in
|
|
<command>CREATE/ALTER USER ... PASSSWORD</>. Similarly, the
|
|
<option>--unencrypted</> option has been removed
|
|
from <application>createuser</>. Unencrypted passwords migrated from
|
|
older versions will be stored encrypted in this release. The default
|
|
setting for <varname>password_encryption</> is still
|
|
<literal>md5</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-26 [94aceed31] Support multi-dimensional arrays in PL/python.
|
|
2016-10-26 [cfd9c87a5] Only treat Python Lists as array dimensions.
|
|
-->
|
|
<para>
|
|
Allow multi-dimensional arrays to be passed into PL/Python functions,
|
|
and returned as nested Python lists (Alexey Grishchenko, Dave Cramer,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This feature requires a backwards-incompatible change to the handling
|
|
of arrays of composite types in PL/Python. Previously, you could
|
|
return an array of composite values by writing, e.g., <literal>[[col1,
|
|
col2], [col1, col2]]</>; but now that is interpreted as a
|
|
two-dimensional array. Composite types in arrays must now be written
|
|
as Python tuples, not lists, to resolve the ambiguity; that is,
|
|
write <literal>[(col1, col2), (col1, col2)]</> instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-27 [817f2a586] Remove PL/Tcl's "module" facility.
|
|
-->
|
|
<para>
|
|
Remove PL/Tcl's <quote>module</> auto-loading facility (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This functionality has been replaced by new server
|
|
parameters <xref linkend="guc-pltcl-start-proc">
|
|
and <xref linkend="guc-pltclu-start-proc">, which are easier to use
|
|
and more similar to features available in other PLs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [3371e4d9b] Change default of log_directory to 'log'
|
|
-->
|
|
<para>
|
|
Change the default value of the <xref linkend="guc-log-directory">
|
|
server parameter from <filename>pg_log</> to <filename>log</>
|
|
(Andreas Karlsson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-23 [e13486eba] Remove sql_inheritance GUC.
|
|
-->
|
|
<para>
|
|
Remove <varname>sql_inheritance</> server parameter (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Changing this setting from the default value caused queries referencing
|
|
parent tables to not include child tables. The <acronym>SQL</>
|
|
standard requires them to be included, however, and this has been the
|
|
default since <productname>PostgreSQL</> 7.1.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-15 [51ee6f316] Replace min_parallel_relation_size with two new GUCs.
|
|
-->
|
|
<para>
|
|
Add <xref linkend="guc-min-parallel-table-scan-size">
|
|
and <xref linkend="guc-min-parallel-index-scan-size"> server
|
|
parameters to control parallel queries (Amit Kapila, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
These replace <varname>min_parallel_relation_size</>, which was
|
|
found to be too generic.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-06-20 [a69dfe5f4] Don't downcase entries within shared_preload_libraries e
|
|
-->
|
|
<para>
|
|
Don't downcase unquoted text
|
|
within <xref linkend="guc-shared-preload-libraries"> and related
|
|
server parameters (QL Zhuo)
|
|
</para>
|
|
|
|
<para>
|
|
These settings are really lists of file names, but they were
|
|
previously treated as lists of SQL identifiers, which have different
|
|
parsing rules.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-12 [64f3524e2] Remove pg_dump/pg_dumpall support for dumping from pre-8
|
|
-->
|
|
<para>
|
|
Remove <application>pg_dump</>/<application>pg_dumpall</> support
|
|
for dumping from pre-8.0 servers (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Users needing to dump from pre-8.0 servers will need to use dump
|
|
programs from <productname>PostgreSQL</> 9.6 or earlier. The
|
|
resulting output should still load successfully into newer servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-23 [b6aa17e0a] De-support floating-point timestamps.
|
|
-->
|
|
<para>
|
|
Remove support for floating-point timestamps and intervals (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This removes configure's <option>--disable-integer-datetimes</>
|
|
option. Floating-point timestamps have few advantages and have not
|
|
been the default since <productname>PostgreSQL</> 8.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-11 [2f1eaf87e] Drop server support for FE/BE protocol version 1.0.
|
|
-->
|
|
<para>
|
|
Remove server support for client/server protocol version 1.0 (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This protocol hasn't had client support
|
|
since <productname>PostgreSQL</> 6.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-07-31 [c0a15e07c] Always use 2048 bit DH parameters for OpenSSL ephemeral
|
|
-->
|
|
<para>
|
|
Add configuration option <xref linkend="guc-ssl-dh-params-file"> to
|
|
specify file name for custom OpenSSL DH parameters (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This replaces the hardcoded, undocumented file
|
|
name <filename>dh1024.pem</>. Note that <filename>dh1024.pem</> is
|
|
no longer examined by default; you must set this option if you want
|
|
to use custom DH parameters.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-07-31 [c0a15e07c] Always use 2048 bit DH parameters for OpenSSL ephemeral
|
|
-->
|
|
<para>
|
|
Increase the size of the default DH parameters used for OpenSSL
|
|
ephemeral DH ciphers to 2048 bits (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The size of the compiled-in DH parameters has been increased from
|
|
1024 to 2048 bits, making DH key exchange more resistant to
|
|
brute-force attacks. However, some old SSL implementations, notably
|
|
some revisions of Java Runtime Environment version 6, will not accept
|
|
DH parameters longer than 1024 bits, and hence will not be able to
|
|
connect over SSL. If it's necessary to support such old clients, you
|
|
can use custom 1024-bit DH parameters instead of the compiled-in
|
|
defaults. See <xref linkend="guc-ssl-dh-params-file">.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-08-04 [c30f1770a] Apply ALTER ... SET NOT NULL recursively in ALTER ... AD
|
|
-->
|
|
<para>
|
|
When <command>ALTER TABLE ... ADD PRIMARY KEY</> marks
|
|
columns <literal>NOT NULL</>, that change now propagates to
|
|
inheritance child tables as well (Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-13 [7ada2d31f] Remove contrib/tsearch2.
|
|
-->
|
|
<para>
|
|
Remove <filename>contrib/tsearch2</> module (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This module provided compatibility with the version of full text
|
|
search that shipped in pre-8.3 <productname>PostgreSQL</> releases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-23 [50c956add] Remove createlang and droplang
|
|
-->
|
|
<para>
|
|
Remove <application>createlang</> and <application>droplang</>
|
|
command-line applications (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
These had been deprecated since <productname>PostgreSQL</> 9.1.
|
|
Instead, use <command>CREATE EXTENSION</> and <command>DROP
|
|
EXTENSION</> directly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-30 [5ded4bd21] Remove support for version-0 calling conventions.
|
|
-->
|
|
<para>
|
|
Remove support for version-0 function calling conventions (Andres
|
|
Freund)
|
|
</para>
|
|
|
|
<para>
|
|
Extensions providing C-coded functions must now conform to version 1
|
|
calling conventions. Version 0 has been deprecated since 2001.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the changes between
|
|
<productname>PostgreSQL</productname> 10 and the previous major
|
|
release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
|
|
<sect4>
|
|
<title>Parallel Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-15 [569174f1b] btree: Support parallel index scans.
|
|
2017-02-15 [5262f7a4f] Add optimizer and executor support for parallel index sc
|
|
2017-02-19 [0414b26ba] Add optimizer and executor support for parallel index-on
|
|
-->
|
|
<para>
|
|
Support parallel B-tree index scans (Rahila Syed, Amit Kapila,
|
|
Robert Haas, Rafia Sabih)
|
|
</para>
|
|
|
|
<para>
|
|
This change allows B-tree index pages to be searched by separate
|
|
parallel workers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-08 [98e6e8904] tidbitmap: Support shared iteration.
|
|
2017-03-08 [f35742ccb] Support parallel bitmap heap scans.
|
|
-->
|
|
<para>
|
|
Support parallel bitmap heap scans (Dilip Kumar)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a single index scan to dispatch parallel workers to
|
|
process different areas of the heap.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-07 [3bc7dafa9] Consider parallel merge joins.
|
|
-->
|
|
<para>
|
|
Allow merge joins to be performed in parallel (Dilip Kumar)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-14 [5e6d8d2bb] Allow parallel workers to execute subplans.
|
|
-->
|
|
<para>
|
|
Allow non-correlated subqueries to be run in parallel (Amit Kapila)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-09 [355d3993c] Add a Gather Merge executor node.
|
|
-->
|
|
<para>
|
|
Improve ability of parallel workers to return pre-sorted data
|
|
(Rushabh Lathia)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-24 [61c2e1a95] Improve access to parallel query from procedural languag
|
|
-->
|
|
<para>
|
|
Increase parallel query usage in procedural language functions
|
|
(Robert Haas, Rafia Sabih)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-02 [b460f5d66] Add max_parallel_workers GUC.
|
|
2016-12-05 [2b959d495] Reduce the default for max_worker_processes back to 8.
|
|
-->
|
|
<para>
|
|
Add <xref linkend="guc-max-parallel-workers"> server parameter
|
|
to limit the number of worker processes that can be used for
|
|
query parallelism (Julien Rouhaud)
|
|
</para>
|
|
|
|
<para>
|
|
This parameter can be set lower than <xref
|
|
linkend="guc-max-worker-processes"> to reserve worker processes
|
|
for purposes other than parallel queries.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Indexes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-27 [30df93f69] hash: Refactor overflow page allocation.
|
|
2017-03-14 [c11453ce0] hash: Add write-ahead logging support.
|
|
2017-02-27 [b0f18cb77] hash: Refactor bucket squeeze code.
|
|
-->
|
|
<para>
|
|
Add write-ahead logging support to hash indexes (Amit Kapila)
|
|
</para>
|
|
|
|
<para>
|
|
This makes hash indexes crash-safe and replicatable.
|
|
The former warning message about their use is removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-30 [6d46f4783] Improve hash index bucket split behavior.
|
|
2017-02-07 [293e24e50] Cache hash index's metapage in rel->rd_amcache.
|
|
2017-03-15 [6977b8b7f] Port single-page btree vacuum logic to hash indexes.
|
|
2017-04-03 [ea69a0dea] Expand hash indexes more gradually.
|
|
2017-08-04 [620b49a16] hash: Increase the number of possible overflow bitmaps b
|
|
-->
|
|
<para>
|
|
Improve hash index performance (Amit Kapila, Mithun Cy, Ashutosh
|
|
Sharma)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-23 [77e290682] Create an SP-GiST opclass for inet/cidr.
|
|
-->
|
|
<para>
|
|
Add <acronym>SP-GiST</> index support for <type>INET</> and
|
|
<type>CIDR</> data types (Emre Hasegeli)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-01 [7526e1022] BRIN auto-summarization
|
|
-->
|
|
<para>
|
|
Add option to allow <acronym>BRIN</> index summarization to happen
|
|
more aggressively (Álvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
A new <link linkend="SQL-CREATEINDEX"><command>CREATE
|
|
INDEX</></> option enables auto-summarization of the
|
|
previous <acronym>BRIN</> page range when a new page
|
|
range is created.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-01 [c655899ba] BRIN de-summarization
|
|
-->
|
|
<para>
|
|
Add functions to remove and re-add <acronym>BRIN</>
|
|
summarization for <acronym>BRIN</> index ranges (Álvaro
|
|
Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
The new <acronym>SQL</> function <link
|
|
linkend="functions-admin-index-table"><function>brin_summarize_range()</></>
|
|
updates <acronym>BRIN</> index summarization for a specified
|
|
range and <function>brin_desummarize_range()</> removes it.
|
|
This is helpful to update summarization of a range that is now
|
|
smaller due to <command>UPDATE</>s and <command>DELETE</>s.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-06 [7e534adcd] Fix BRIN cost estimation
|
|
-->
|
|
<para>
|
|
Improve accuracy in determining if a <acronym>BRIN</> index scan
|
|
is beneficial (David Rowley, Emre Hasegeli)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-09 [b1328d78f] Invent PageIndexTupleOverwrite, and teach BRIN and GiST
|
|
-->
|
|
<para>
|
|
Allow faster <acronym>GiST</> inserts and updates by reusing
|
|
index space more efficiently (Andrey Borodin)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-23 [218f51584] Reduce page locking in GIN vacuum
|
|
-->
|
|
<para>
|
|
Reduce page locking during vacuuming of <acronym>GIN</> indexes
|
|
(Andrey Borodin)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
|
|
<title>Locking</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-05 [15bc038f9] Relax transactional restrictions on ALTER TYPE ... ADD V
|
|
-->
|
|
<para>
|
|
Reduce locking required for adding values to enum types (Andrew
|
|
Dunstan, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously it was impossible to run <command>ALTER TYPE ... ADD
|
|
VALUE</> in a transaction block unless the enum type was created
|
|
in the same block. Now, only references to uncommitted enum
|
|
values from other transactions are prohibited.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-06 [21d4e2e20] Reduce lock levels for table storage params related to p
|
|
2017-04-05 [68ea2b7f9] Reduce lock level for CREATE STATISTICS
|
|
-->
|
|
<para>
|
|
Reduce locking required to change table parameters (Simon Riggs,
|
|
Fabrízio Mello)
|
|
</para>
|
|
|
|
<para>
|
|
For example, changing a table's <xref
|
|
linkend="guc-effective-io-concurrency"> setting can now be done
|
|
with a more lightweight lock.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-07 [c63172d60] Add GUCs for predicate lock promotion thresholds.
|
|
-->
|
|
<para>
|
|
Allow tuning of predicate lock promotion thresholds (Dagfinn
|
|
Ilmari Mannsåker)
|
|
</para>
|
|
|
|
<para>
|
|
Lock promotion can now be controlled through two new server
|
|
parameters, <xref
|
|
linkend="guc-max-pred-locks-per-relation"> and
|
|
<xref linkend="guc-max-pred-locks-per-page">.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Optimizer</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-24 [7b504eb28] Implement multivariate n-distinct coefficients
|
|
2017-04-05 [2686ee1b7] Collect and use multi-column dependency stats
|
|
2017-05-12 [bc085205c] Change CREATE STATISTICS syntax
|
|
-->
|
|
<para>
|
|
Add multi-column optimizer statistics to compute the correlation
|
|
ratio and number of distinct values (Tomas Vondra, David Rowley,
|
|
Álvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
New commands are <link
|
|
linkend="SQL-CREATESTATISTICS"><command>CREATE STATISTICS</></>,
|
|
<link linkend="SQL-ALTERSTATISTICS"><command>ALTER STATISTICS</></>, and
|
|
<link linkend="SQL-DROPSTATISTICS"><command>DROP STATISTICS</></>.
|
|
This feature is helpful in estimating query memory usage and when
|
|
combining the statistics from individual columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-18 [215b43cdc] Improve RLS planning by marking individual quals with se
|
|
-->
|
|
<para>
|
|
Improve performance of queries affected by row-level security
|
|
restrictions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The optimizer now has more knowledge about where it can place RLS
|
|
filter conditions, allowing better plans to be generated while still
|
|
enforcing the RLS conditions safely.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>General Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-02 [9cca11c91] Speed up SUM calculation in numeric aggregates.
|
|
-->
|
|
<para>
|
|
Speed up aggregate functions that calculate a running sum
|
|
using <type>numeric</>-type arithmetic, including some variants
|
|
of <function>SUM()</>, <function>AVG()</>,
|
|
and <function>STDDEV()</> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-13 [aeed17d00] Use radix tree for character encoding conversions.
|
|
-->
|
|
<para>
|
|
Improve performance of character encoding conversions by
|
|
using radix trees (Kyotaro Horiguchi, Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-25 [b8d7f053c] Faster expression evaluation and targetlist projection.
|
|
2017-07-30 [cc9f08b6b] Move ExecProcNode from dispatch to function pointer base
|
|
-->
|
|
<para>
|
|
Reduce expression evaluation overhead during query execution,
|
|
as well as plan node calling overhead (Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly helpful for queries that process many rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [b5635948a] Support hashed aggregation with grouping sets.
|
|
-->
|
|
<para>
|
|
Allow hashed aggregation to be used with grouping sets (Andrew
|
|
Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-07 [9c7f5229a] Optimize joins when the inner relation can be proven uni
|
|
2017-06-03 [23886581b] Fix old corner-case logic error in final_cost_nestloop()
|
|
-->
|
|
<para>
|
|
Use uniqueness guarantees to optimize certain join types (David
|
|
Rowley)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-29 [f90d23d0c] Implement SortSupport for macaddr data type
|
|
-->
|
|
<para>
|
|
Improve sort performance of the <type>macaddr</type> data type (Brandur Leach)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [090010f2e] Improve performance of find_tabstat_entry()/get_tabstat_
|
|
-->
|
|
<para>
|
|
Reduce statistics tracking overhead in sessions that reference
|
|
many thousands of relations (Aleksander Alekseev)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-08 [f9b1a0dd4] Expose explain's SUMMARY option
|
|
-->
|
|
<para>
|
|
Allow explicit control
|
|
over <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></>'s display
|
|
of planning and execution time (Ashutosh Bapat)
|
|
</para>
|
|
|
|
<para>
|
|
By default planning and execution time are displayed by
|
|
<command>EXPLAIN ANALYZE</> and are not displayed in other cases.
|
|
The new <command>EXPLAIN</> option <literal>SUMMARY</> allows
|
|
explicit control of this.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-30 [25fff4079] Default monitoring roles
|
|
-->
|
|
<para>
|
|
Add default monitoring roles (Dave Page)
|
|
</para>
|
|
|
|
<para>
|
|
New roles <literal>pg_monitor</>, <literal>pg_read_all_settings</>,
|
|
<literal>pg_read_all_stats</>, and <literal>pg_stat_scan_tables</>
|
|
allow simplified permission configuration.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-18 [17f8ffa1e] Fix REFRESH MATERIALIZED VIEW to report activity to the
|
|
-->
|
|
<para>
|
|
Properly update the statistics collector during <link
|
|
linkend="SQL-REFRESHMATERIALIZEDVIEW"><command>REFRESH MATERIALIZED
|
|
VIEW</></> (Jim Mlodgenski)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title>Logging</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-17 [7d3235ba4] By default, set log_line_prefix = '%m [%p] '.
|
|
-->
|
|
<para>
|
|
Change the default value of <xref linkend="guc-log-line-prefix">
|
|
to include current timestamp (with milliseconds) and the process ID
|
|
in each line of postmaster log output (Christoph Berg)
|
|
</para>
|
|
|
|
<para>
|
|
The previous default was an empty prefix.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-16 [befd73c50] Add pg_ls_logdir() and pg_ls_waldir() functions.
|
|
-->
|
|
<para>
|
|
Add functions to return the log and <acronym>WAL</> directory
|
|
contents (Dave Page)
|
|
</para>
|
|
|
|
<para>
|
|
The new functions
|
|
are <link linkend="functions-admin-genfile-table"><function>pg_ls_logdir()</></>
|
|
and <link linkend="functions-admin-genfile-table"><function>pg_ls_waldir()</></>
|
|
and can be executed by non-superusers with the proper
|
|
permissions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-03 [19dc233c3] Add pg_current_logfile() function.
|
|
-->
|
|
<para>
|
|
Add function <link
|
|
linkend="functions-info-session-table"><function>pg_current_logfile()</></>
|
|
to read logging collector's current stderr and csvlog output file names
|
|
(Gilles Darold)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-10 [f9dfa5c97] Improve postmaster's logging of listen socket creation.
|
|
2017-03-14 [2b32ac2a5] Include port number when logging successful binding to a
|
|
-->
|
|
<para>
|
|
Report the address and port number of each listening socket
|
|
in the server log during postmaster startup (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Also, when logging failure to bind a listening socket, include
|
|
the specific address we attempted to bind to.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-10 [6ec4c8584] Reduce log verbosity of startup/shutdown for launcher su
|
|
-->
|
|
<para>
|
|
Reduce log chatter about the starting and stopping of launcher
|
|
subprocesses (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
These are now <literal>DEBUG1</>-level messages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-17 [a43f1939d] Remove or reduce verbosity of some debug messages.
|
|
-->
|
|
<para>
|
|
Reduce message verbosity of lower-numbered debug levels
|
|
controlled by
|
|
<xref linkend="guc-log-min-messages"> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This also changes the verbosity of <xref
|
|
linkend="guc-client-min-messages"> debug levels.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
<sect5>
|
|
<title><link linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-04 [6f3bd98eb] Extend framework from commit 53be0b1ad to report latch w
|
|
2017-03-18 [249cf070e] Create and use wait events for read, write, and fsync op
|
|
-->
|
|
<para>
|
|
Add <structname>pg_stat_activity</> reporting of low-level wait
|
|
states (Michael Paquier, Robert Haas, Rushabh Lathia)
|
|
</para>
|
|
|
|
<para>
|
|
This change enables reporting of numerous low-level wait conditions,
|
|
including latch waits, file reads/writes/fsyncs, client reads/writes,
|
|
and synchronous replication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-12 [fc3d4a44e] Identify walsenders in pg_stat_activity
|
|
2017-03-26 [fc70a4b0d] Show more processes in pg_stat_activity.
|
|
-->
|
|
<para>
|
|
Show auxiliary processes, background workers, and walsender
|
|
processes in <structname>pg_stat_activity</> (Kuntal Ghosh,
|
|
Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
This simplifies monitoring. A new
|
|
column <structfield>backend_type</> identifies the process type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-22 [4c728f382] Pass the source text for a parallel query to the workers
|
|
-->
|
|
<para>
|
|
Allow <structname>pg_stat_activity</> to show the SQL query
|
|
being executed by parallel workers (Rafia Sabih)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-16 [3761fe3c2] Simplify LWLock tranche machinery by removing array_base
|
|
-->
|
|
<para>
|
|
Rename
|
|
<structname>pg_stat_activity</>.<structfield>wait_event_type</>
|
|
values <literal>LWLockTranche</> and
|
|
<literal>LWLockNamed</> to <literal>LWLock</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This makes the output more consistent.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><acronym>Authentication</></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-07 [818fd4a67] Support SCRAM-SHA-256 authentication (RFC 5802 and 7677)
|
|
2017-03-24 [7ac955b34] Allow SCRAM authentication, when pg_hba.conf says 'md5'.
|
|
2017-04-07 [60f11b87a] Use SASLprep to normalize passwords for SCRAM authentica
|
|
2017-04-18 [c727f120f] Rename "scram" to "scram-sha-256" in pg_hba.conf and pas
|
|
-->
|
|
<para>
|
|
Add <link linkend="auth-pg-hba-conf"><literal>SCRAM-SHA-256</></>
|
|
support for password negotiation and storage (Michael Paquier,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This provides better security than the existing <literal>md5</>
|
|
negotiation and storage method.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-28 [babe05bc2] Turn password_encryption GUC into an enum.
|
|
-->
|
|
<para>
|
|
Change the <xref linkend="guc-password-encryption"> server parameter
|
|
from <type>boolean</> to <type>enum</> (Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
This was necessary to support additional password hashing options.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-30 [de16ab723] Invent pg_hba_file_rules view to show the content of pg_
|
|
-->
|
|
<para>
|
|
Add view <link
|
|
linkend="view-pg-hba-file-rules"><structname>pg_hba_file_rules</></>
|
|
to display the contents of <filename>pg_hba.conf</> (Haribabu
|
|
Kommi)
|
|
</para>
|
|
|
|
<para>
|
|
This shows the file contents, not the currently active settings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-22 [6b76f1bb5] Support multiple RADIUS servers
|
|
-->
|
|
<para>
|
|
Support multiple <acronym>RADIUS</> servers (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
All the <acronym>RADIUS</> related parameters are now plural and
|
|
support a comma-separated list of servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Configuration</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-02 [de41869b6] Allow SSL configuration to be updated at SIGHUP.
|
|
2017-01-03 [1e942c747] Disable prompting for passphrase while (re)loading SSL c
|
|
2017-01-04 [6667d9a6d] Re-allow SSL passphrase prompt at server start, but not
|
|
-->
|
|
<para>
|
|
Allow <acronym>SSL</> configuration to be updated during
|
|
configuration reload (Andreas Karlsson, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <acronym>SSL</> to be reconfigured without a server
|
|
restart, by using <command>pg_ctl reload</>, <command>SELECT
|
|
pg_reload_conf()</>, or sending a <literal>SIGHUP</> signal.
|
|
However, reloading the <acronym>SSL</> configuration does not work
|
|
if the server's <acronym>SSL</> key requires a passphrase, as there
|
|
is no way to re-prompt for the passphrase. The original
|
|
configuration will apply for the life of the postmaster in that
|
|
case.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-02 [14ca9abfb] Increase upper bound for bgwriter_lru_maxpages.
|
|
-->
|
|
<para>
|
|
Make the maximum value of <xref
|
|
linkend="guc-bgwriter-lru-maxpages"> effectively unlimited
|
|
(Jim Nasby)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Reliability</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [1b02be21f] Fsync directory after creating or unlinking file.
|
|
-->
|
|
<para>
|
|
After creating or unlinking files, perform an fsync on their parent
|
|
directory (Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the risk of data loss after a power failure.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title><link linkend="wal">Write-Ahead Log</> (<acronym>WAL</>)</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-22 [6ef2eba3f] Skip checkpoints, archiving on idle systems.
|
|
-->
|
|
<para>
|
|
Prevent unnecessary checkpoints and <acronym>WAL</> archiving on
|
|
otherwise-idle systems (Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-08 [a507b8690] Add WAL consistency checking facility.
|
|
2017-03-14 [bb4a39637] hash: Support WAL consistency checking.
|
|
-->
|
|
<para>
|
|
Add <xref linkend="guc-wal-consistency-checking"> server parameter
|
|
to add details to <acronym>WAL</> that can be sanity-checked on
|
|
the standby (Kuntal Ghosh, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Any sanity-check failure generates a fatal error on the standby.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-05 [00b6b6feb] Allow -\-with-wal-segsize=n up to n=1024MB
|
|
-->
|
|
<para>
|
|
Increase the maximum configurable <acronym>WAL</> segment size
|
|
to one gigabyte (Beena Emerson)
|
|
</para>
|
|
|
|
<para>
|
|
A larger <acronym>WAL</> segment size allows for fewer
|
|
<xref linkend="guc-archive-command"> invocations and fewer
|
|
<acronym>WAL</> files to manage.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Replication and Recovery</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-20 [665d1fad9] Logical replication
|
|
2017-03-23 [7c4f52409] Logical replication support for initial data copy
|
|
2017-04-12 [ff7bce174] Add max_sync_workers_per_subscription to postgresql.conf
|
|
-->
|
|
<para>
|
|
Add the ability to <link linkend="logical-replication">logically
|
|
replicate</> tables to standby servers (Petr Jelinek)
|
|
</para>
|
|
|
|
<para>
|
|
Logical replication allows more flexibility than physical
|
|
replication does, including replication between different major
|
|
versions of <productname>PostgreSQL</> and selective
|
|
replication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-19 [3901fd70c] Support quorum-based synchronous replication.
|
|
-->
|
|
<para>
|
|
Allow waiting for commit acknowledgement from standby
|
|
servers irrespective of the order they appear in <xref
|
|
linkend="guc-synchronous-standby-names"> (Masahiko Sawada)
|
|
</para>
|
|
|
|
<para>
|
|
Previously the server always waited for the active standbys that
|
|
appeared first in <varname>synchronous_standby_names</>. The new
|
|
<varname>synchronous_standby_names</> keyword <literal>ANY</> allows
|
|
waiting for any number of standbys irrespective of their ordering.
|
|
This is known as quorum commit.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-14 [f6d6d2920] Change default values for backup and replication paramet
|
|
2017-05-02 [34fc61673] Change hot_standby default value to 'on'
|
|
-->
|
|
<para>
|
|
Reduce configuration changes necessary to perform streaming backup
|
|
and replication (Magnus Hagander, Dang Minh Huong)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically, the defaults were changed for <xref
|
|
linkend="guc-wal-level">, <xref linkend="guc-max-wal-senders">,
|
|
<xref linkend="guc-max-replication-slots">, and <xref
|
|
linkend="guc-hot-standby"> to make them suitable for these usages
|
|
out-of-the-box.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-09 [be37c2120] Enable replication connections by default in pg_hba.conf
|
|
-->
|
|
<para>
|
|
Enable replication from localhost connections by default in
|
|
<link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></>
|
|
(Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <filename>pg_hba.conf</>'s replication connection
|
|
lines were commented out by default. This is particularly useful for
|
|
<application><xref linkend="app-pgbasebackup"></>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-23 [6912acc04] Replication lag tracking for walsenders
|
|
-->
|
|
<para>
|
|
Add columns to <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_replication</></>
|
|
to report replication delay times (Thomas Munro)
|
|
</para>
|
|
|
|
<para>
|
|
The new columns are <structfield>write_lag</>,
|
|
<structfield>flush_lag</>, and <structfield>replay_lag</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-03 [35250b6ad] New recovery target recovery_target_lsn
|
|
-->
|
|
<para>
|
|
Allow specification of the recovery stopping point by Log Sequence
|
|
Number (<acronym>LSN</>) in
|
|
<link linkend="recovery-config"><filename>recovery.conf</></>
|
|
(Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
Previously the stopping point could only be selected by timestamp or
|
|
XID.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-22 [017e4f258] Expose waitforarchive option through pg_stop_backup()
|
|
2017-08-05 [52f8a59dd] Make pg_stop_backup's wait_for_archive flag work on stan
|
|
-->
|
|
<para>
|
|
Allow users to disable <link
|
|
linkend="functions-admin"><function>pg_stop_backup()</></>'s
|
|
waiting for all <acronym>WAL</> to be archived (David Steele)
|
|
</para>
|
|
|
|
<para>
|
|
An optional second argument to <function>pg_stop_backup()</>
|
|
controls that behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-12 [a924c327e] Add support for temporary replication slots
|
|
-->
|
|
<para>
|
|
Allow creation of <link
|
|
linkend="functions-replication-table">temporary replication slots</>
|
|
(Petr Jelinek)
|
|
</para>
|
|
|
|
<para>
|
|
Temporary slots are automatically removed on session exit or error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-22 [9b013dc23] Improve performance of replay of AccessExclusiveLocks
|
|
-->
|
|
<para>
|
|
Improve performance of hot standby replay with better tracking of
|
|
Access Exclusive locks (Simon Riggs, David Rowley)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-04 [728bd991c] Speedup 2PC recovery by skipping two phase state files i
|
|
-->
|
|
<para>
|
|
Speed up two-phase commit recovery performance (Stas Kelvich,
|
|
Nikhil Sontakke, Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-08 [fcec6caaf] Support XMLTABLE query expression
|
|
-->
|
|
<para>
|
|
Add <link
|
|
linkend="functions-xml-processing-xmltable"><function>XMLTABLE</></>
|
|
function that converts <type>XML</>-formatted data into a row set
|
|
(Pavel Stehule, Álvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-22 [906bfcad7] Improve handling of "UPDATE ... SET (column_list) = row_
|
|
-->
|
|
<para>
|
|
Allow standard row constructor syntax in <literal>UPDATE ... SET
|
|
(<replaceable>column_list</>) = <replaceable>row_constructor</></literal>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The <replaceable>row_constructor</> can now begin with the
|
|
keyword <literal>ROW</>; previously that had to be omitted. Also,
|
|
an occurrence of <literal><replaceable>table_name</>.*</literal>
|
|
within the <replaceable>row_constructor</> is now expanded into
|
|
multiple columns, as in other uses
|
|
of <replaceable>row_constructor</>s.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-05 [c54159d44] Make locale-dependent regex character classes work for l
|
|
-->
|
|
<para>
|
|
Fix regular expressions' character class handling for large character
|
|
codes, particularly Unicode characters above <literal>U+7FF</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, such characters were never recognized as belonging to
|
|
locale-dependent character classes such as <literal>[[:alpha:]]</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Commands</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-07 [f0e44751d] Implement table partitioning.
|
|
-->
|
|
<para>
|
|
Add table <link linkend="SQL-CREATETABLE-PARTITION">partitioning
|
|
syntax</> that automatically creates partition constraints and
|
|
handles routing of tuple insertions and updates (Amit Langote)
|
|
</para>
|
|
|
|
<para>
|
|
The syntax supports range and list partitioning.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-04 [8c48375e5] Implement syntax for transition tables in AFTER triggers
|
|
2017-04-04 [5ebeb579b] Follow-on cleanup for the transition table patch.
|
|
2017-03-31 [597027163] Add transition table support to plpgsql.
|
|
-->
|
|
<para>
|
|
Add <link linkend="SQL-CREATETRIGGER"><literal>AFTER</> trigger</>
|
|
transition tables to record changed rows (Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
Transition tables are accessible from triggers written in
|
|
server-side languages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-05 [093129c9d] Add support for restrictive RLS policies
|
|
-->
|
|
<para>
|
|
Allow <link linkend="SQL-CREATEPOLICY">restrictive row-level
|
|
security policies</> (Stephen Frost)
|
|
</para>
|
|
|
|
<para>
|
|
Previously all security policies were permissive, meaning that any
|
|
matching policy allowed access. A restrictive policy must
|
|
match for access to be granted. These policy types can be combined.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-31 [64d4da511] For foreign keys, check REFERENCES privilege only on the
|
|
-->
|
|
<para>
|
|
When creating a foreign-key constraint, check
|
|
for <literal>REFERENCES</> permission on only the referenced table
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <literal>REFERENCES</> permission on the referencing
|
|
table was also required. This appears to have stemmed from a
|
|
misreading of the SQL standard. Since creating a foreign key (or
|
|
any other type of) constraint requires ownership privilege on the
|
|
constrained table, additionally requiring <literal>REFERENCES</>
|
|
permission seems rather pointless.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-28 [ab89e465c] Altering default privileges on schemas
|
|
-->
|
|
<para>
|
|
Allow <link linkend="SQL-ALTERDEFAULTPRIVILEGES">default
|
|
permissions</> on schemas (Matheus Oliveira)
|
|
</para>
|
|
|
|
<para>
|
|
This is done using the <literal>ALTER DEFAULT PRIVILEGES</> command.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-10 [2ea5b06c7] Add CREATE SEQUENCE AS <data type> clause
|
|
-->
|
|
<para>
|
|
Add <link linkend="SQL-CREATESEQUENCE"><command>CREATE SEQUENCE
|
|
AS</></> command to create a sequence matching an integer data type
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This simplifies the creation of sequences matching the range of
|
|
base columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-10 [279c439c7] Support "COPY view FROM" for views with INSTEAD OF INSER
|
|
-->
|
|
<para>
|
|
Allow <literal>COPY <replaceable>view</>
|
|
FROM <replaceable>source</></> on views with <literal>INSTEAD
|
|
INSERT</> triggers (Haribabu Kommi)
|
|
</para>
|
|
|
|
<para>
|
|
The triggers are fed the data rows read by <command>COPY</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-14 [aefeb6874] Allow referring to functions without arguments when uniq
|
|
-->
|
|
<para>
|
|
Allow the specification of a function name without arguments in
|
|
<acronym>DDL</> commands, if it is unique (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
For example, allow <link linkend="SQL-DROPFUNCTION"><command>DROP
|
|
FUNCTION</></> on a function name without arguments if there
|
|
is only one function with that name. This behavior is required by the
|
|
<acronym>SQL</> standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-06 [583f6c414] Allow dropping multiple functions at once
|
|
-->
|
|
<para>
|
|
Allow multiple functions, operators, and aggregates to be dropped
|
|
with a single <command>DROP</> command (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-15 [6d16ecc64] Add CREATE COLLATION IF NOT EXISTS clause
|
|
2017-03-20 [b6fb534f1] Add IF NOT EXISTS for CREATE SERVER and CREATE USER MAPP
|
|
-->
|
|
<para>
|
|
Support <literal>IF NOT EXISTS</>
|
|
in <link linkend="SQL-CREATESERVER"><command>CREATE SERVER</></>,
|
|
<link linkend="SQL-CREATEUSERMAPPING"><command>CREATE USER MAPPING</></>,
|
|
and <link linkend="SQL-CREATECOLLATION"><command>CREATE COLLATION</></>
|
|
(Anastasia Lubennikova, Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-25 [70adf2fbe] Make VACUUM VERBOSE report the number of skipped frozen
|
|
2017-03-03 [9eb344faf] Allow vacuums to report oldestxmin
|
|
-->
|
|
<para>
|
|
Make <link linkend="SQL-VACUUM"><command>VACUUM VERBOSE</></> report
|
|
the number of skipped frozen pages and oldest xmin (Masahiko
|
|
Sawada, Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This information is also included in <xref
|
|
linkend="guc-log-autovacuum-min-duration"> output.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-23 [7e26e02ee] Prefetch blocks during lazy vacuum's truncation scan
|
|
-->
|
|
<para>
|
|
Improve speed of <command>VACUUM</>'s removal of trailing empty
|
|
heap pages (Claudio Freire, Álvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-31 [e306df7f9] Full Text Search support for JSON and JSONB
|
|
-->
|
|
<para>
|
|
Add full text search support for <type>JSON</> and <type>JSONB</>
|
|
(Dmitry Dolgov)
|
|
</para>
|
|
|
|
<para>
|
|
The functions <function>ts_headline()</> and
|
|
<function>to_tsvector()</> can now be used on these data types.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-15 [c7a9fa399] Add support for EUI-64 MAC addresses as macaddr8
|
|
-->
|
|
<para>
|
|
Add support for <acronym>EUI-64</> <acronym>MAC</> addresses, as a
|
|
new data type <link linkend="datatype-macaddr8"><type>macaddr8</></>
|
|
(Haribabu Kommi)
|
|
</para>
|
|
|
|
<para>
|
|
This complements the existing support
|
|
for <acronym>EUI-48</> <acronym>MAC</> addresses
|
|
(type <type>macaddr</>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-06 [321732705] Identity columns
|
|
-->
|
|
<para>
|
|
Add <link linkend="SQL-CREATETABLE">identity columns</> for
|
|
assigning a numeric value to columns on insert (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
These are similar to <type>SERIAL</> columns, but are
|
|
<acronym>SQL</> standard compliant.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-07 [0ab9c56d0] Support renaming an existing value of an enum type.
|
|
-->
|
|
<para>
|
|
Allow <link linkend="datatype-enum"><type>ENUM</></> values to be
|
|
renamed (Dagfinn Ilmari Mannsåker)
|
|
</para>
|
|
|
|
<para>
|
|
This uses the syntax <link linkend="SQL-ALTERTYPE"><command>ALTER
|
|
TYPE ... RENAME VALUE</></>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-22 [502a3832c] Correctly handle array pseudotypes in to_json and to_jso
|
|
-->
|
|
<para>
|
|
Properly treat array pseudotypes
|
|
(<type>anyarray</>) as arrays in <link
|
|
linkend="functions-json-creation-table"><function>to_json()</></>
|
|
and <function>to_jsonb()</> (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Previously columns declared as <type>anyarray</> (particularly those
|
|
in the <structname>pg_stats</> view) were converted to <type>JSON</>
|
|
strings rather than arrays.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-17 [323b96aa3] Register missing money operators in system catalogs
|
|
-->
|
|
<para>
|
|
Add operators for multiplication and division
|
|
of <link linkend="datatype-money"><type>money</></link> values
|
|
with <type>int8</> values (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such cases would result in converting the <type>int8</>
|
|
values to <type>float8</> and then using
|
|
the <type>money</>-and-<type>float8</> operators. The new behavior
|
|
avoids possible precision loss. But note that division
|
|
of <type>money</> by <type>int8</> now truncates the quotient, like
|
|
other integer-division cases, while the previous behavior would have
|
|
rounded.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-14 [656df624c] Add overflow checks to money type input function
|
|
-->
|
|
<para>
|
|
Check for overflow in the <type>money</> type's input function
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-17 [cf9b0fea5] Implement regexp_match(), a simplified alternative to re
|
|
-->
|
|
<para>
|
|
Add simplified <link
|
|
linkend="functions-posix-regexp"><function>regexp_match()</></>
|
|
function (Emre Hasegeli)
|
|
</para>
|
|
|
|
<para>
|
|
This is similar to <function>regexp_matches()</>, but it only
|
|
returns results from the first match so it does not need to return a
|
|
set, making it easier to use for simple cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-18 [d00ca333c] Implement array version of jsonb_delete and operator
|
|
-->
|
|
<para>
|
|
Add a version of <type>jsonb</>'s <link
|
|
linkend="functions-jsonb-op-table">delete operator</> that takes
|
|
an array of keys to delete (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-06 [cf35346e8] Make json_populate_record and friends operate recursivel
|
|
-->
|
|
<para>
|
|
Make <link linkend="functions-json-processing-table"><function>json_populate_record()</></>
|
|
and related functions process JSON arrays and objects recursively
|
|
(Nikita Glukhov)
|
|
</para>
|
|
|
|
<para>
|
|
With this change, array-type fields in the destination SQL type are
|
|
properly converted from JSON arrays, and composite-type fields are
|
|
properly converted from JSON objects. Previously, such cases would
|
|
fail because the text representation of the JSON value would be fed
|
|
to <function>array_in()</> or <function>record_in()</>, and its
|
|
syntax would not match what those input functions expect.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-23 [86f31695f] Add txid_current_ifassigned().
|
|
-->
|
|
<para>
|
|
Add function <link
|
|
linkend="functions-txid-snapshot"><function>txid_current_ifassigned()</></>
|
|
to return the current transaction ID or <literal>NULL</> if no
|
|
transaction ID has been assigned (Craig Ringer)
|
|
</para>
|
|
|
|
<para>
|
|
This is different from <link
|
|
linkend="functions-txid-snapshot"><function>txid_current()</></>,
|
|
which always returns a transaction ID, assigning one if necessary.
|
|
Unlike that function, this function can be run on standby servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-24 [857ee8e39] Add a txid_status function.
|
|
-->
|
|
<para>
|
|
Add function <link
|
|
linkend="functions-txid-snapshot"><function>txid_status()</></>
|
|
to check if a transaction was committed (Craig Ringer)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for checking after an abrupt disconnection whether
|
|
your previous transaction committed and you just didn't receive
|
|
the acknowledgement.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-19 [30bcebbdc] Allow negative years in make_date to represent BC years
|
|
-->
|
|
<para>
|
|
Allow <link
|
|
linkend="functions-formatting-table"><function>make_date()</></>
|
|
to interpret negative years as <acronym>BC</> years (Álvaro
|
|
Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-28 [d3cd36a13] Make to_timestamp() and to_date() range-check fields of
|
|
-->
|
|
<para>
|
|
Make <function>to_timestamp()</> and <function>to_date()</> reject
|
|
out-of-range input fields (Artur Zakirov)
|
|
</para>
|
|
|
|
<para>
|
|
For example,
|
|
previously <literal>to_date('2009-06-40','YYYY-MM-DD')</> was
|
|
accepted and returned <literal>2009-07-10</>. It will now generate
|
|
an error.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [70ec3f1f8] PL/Python: Add cursor and execute methods to plan object
|
|
-->
|
|
<para>
|
|
Allow PL/Python's <function>cursor()</> and <function>execute()</>
|
|
functions to be called as methods of their plan-object arguments
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a more object-oriented programming style.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-13 [55caaaeba] Improve handling of array elements as getdiag_targets an
|
|
-->
|
|
<para>
|
|
Allow PL/pgSQL's <command>GET DIAGNOSTICS</> statement to retrieve
|
|
values into array elements (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, a syntactic restriction prevented the target variable
|
|
from being an array element.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="pltcl">PL/Tcl</></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-06 [26abb50c4] Support PL/Tcl functions that return composite types and
|
|
-->
|
|
<para>
|
|
Allow PL/Tcl functions to return composite types and sets
|
|
(Jim Nasby)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-11 [b58fd4a9c] Add a "subtransaction" command to PL/Tcl.
|
|
-->
|
|
<para>
|
|
Add a subtransaction command to PL/Tcl (Victor Wagner)
|
|
</para>
|
|
|
|
<para>
|
|
This allows PL/Tcl queries to fail without aborting the entire
|
|
function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-07 [0d2b1f305] Invent start_proc parameters for PL/Tcl.
|
|
-->
|
|
<para>
|
|
Add server parameters <xref linkend="guc-pltcl-start-proc">
|
|
and <xref linkend="guc-pltclu-start-proc">, to allow initialization
|
|
functions to be called on PL/Tcl startup (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Interfaces</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-03 [274bb2b38] libpq: Allow connection strings and URIs to specify mult
|
|
2017-05-19 [5f374fe7a] libpq: Try next host if one of them times out.
|
|
2017-07-10 [7b02ba62e] Allow multiple hostaddrs to go with multiple hostnames.
|
|
-->
|
|
<para>
|
|
Allow specification of <link linkend="libpq-connect-host">multiple
|
|
host names or addresses</> in libpq connection strings and URIs
|
|
(Robert Haas, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
libpq will connect to the first responsive server in the list.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-29 [721f7bd3c] libpq: Add target_session_attrs parameter.
|
|
-->
|
|
<para>
|
|
Allow libpq connection strings and URIs to request a <link
|
|
linkend="libpq-connect-target-session-attrs">read/write host</>,
|
|
that is a master server rather than a standby server
|
|
(Victor Wagner, Mithun Cy)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful when multiple host names are
|
|
specified. It is controlled by libpq connection parameter
|
|
<option>target_session_attrs</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-24 [ba005f193] Allow password file name to be specified as a libpq conn
|
|
-->
|
|
<para>
|
|
Allow the <link linkend="libpq-connect-passfile">password file name</>
|
|
to be specified as a libpq connection parameter (Julian Markwort)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this could only be specified via an environment variable.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-05-03 [8f8b9be51] Add PQencryptPasswordConn function to libpq, use it in p
|
|
-->
|
|
<para>
|
|
Add function <link
|
|
linkend="libpq-pqencryptpasswordconn"><function>PQencryptPasswordConn()</></>
|
|
to allow creation of more types of encrypted passwords on the
|
|
client side (Michael Paquier, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only <literal>MD5</>-encrypted passwords could be created
|
|
using <link
|
|
linkend="libpq-pqencryptpassword"><function>PQencryptPassword()</></>.
|
|
This new function can also create <link
|
|
linkend="auth-pg-hba-conf"><literal>SCRAM-SHA-256</></>-encrypted
|
|
passwords.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-16 [a7b5573d6] Remove separate version numbering for ecpg preprocessor.
|
|
-->
|
|
<para>
|
|
Change <application>ecpg</> preprocessor version from 4.12 to 10
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Henceforth the <application>ecpg</> version will match
|
|
the <productname>PostgreSQL</> distribution version number.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
|
|
<sect4>
|
|
<title><xref linkend="APP-PSQL"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-30 [e984ef586] Support \if ... \elif ... \else ... \endif in psql scrip
|
|
2017-04-02 [5dbc5da11] Fix behavior of psql's \p to agree with \g, \w, etc.
|
|
2017-04-02 [68dba97a4] Document psql's behavior of recalling the previously exe
|
|
-->
|
|
<para>
|
|
Add conditional branch support to <application>psql</> (Corey
|
|
Huinker)
|
|
</para>
|
|
|
|
<para>
|
|
This feature adds <application>psql</>
|
|
meta-commands <command>\if</>, <command>\elif</>, <command>\else</>,
|
|
and <command>\endif</>. This is primarily helpful for scripting.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-07 [b2678efd4] psql: Add \gx command
|
|
-->
|
|
<para>
|
|
Add <application>psql</> <command>\gx</> meta-command to execute
|
|
(<command>\g</>) a query in expanded mode (<command>\x</>)
|
|
(Christoph Berg)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-01 [f833c847b] Allow psql variable substitution to occur in backtick co
|
|
-->
|
|
<para>
|
|
Expand <application>psql</> variable references in
|
|
backtick-executed strings (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful in the new <application>psql</>
|
|
conditional branch commands.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-30 [511ae628f] Make psql reject attempts to set special variables to in
|
|
2017-02-01 [86322dc7e] Improve psql's behavior for \set and \unset of its contr
|
|
2017-02-02 [fd6cd6980] Clean up psql's behavior for a few more control variable
|
|
-->
|
|
<para>
|
|
Prevent <application>psql</>'s special variables from being set to
|
|
invalid values (Daniel Vérité, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, setting one of <application>psql</>'s special variables
|
|
to an invalid value silently resulted in the default behavior.
|
|
<command>\set</> on a special variable now fails if the proposed
|
|
new value is invalid. As a special exception, <command>\set</>
|
|
with an empty or omitted new value, on a boolean-valued special
|
|
variable, still has the effect of setting the variable
|
|
to <literal>on</>; but now it actually acquires that value rather
|
|
than an empty string. <command>\unset</> on a special variable now
|
|
explicitly sets the variable to its default value, which is also
|
|
the value it acquires at startup. In sum, a control variable now
|
|
always has a displayable value that reflects
|
|
what <application>psql</> is actually doing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-09-06 [a6c678f01] Add psql variables showing server version and psql versi
|
|
-->
|
|
<para>
|
|
Add variables showing server version and <application>psql</> version
|
|
(Fabien Coelho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-03 [a0f357e57] psql: Split up "Modifiers" column in \d and \dD
|
|
-->
|
|
<para>
|
|
Improve <application>psql</>'s <command>\d</> (display relation)
|
|
and <command>\dD</> (display domain) commands to show collation,
|
|
nullable, and default properties in separate columns (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously they were shown in a single <quote>Modifiers</> column.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-07-27 [77cb4a1d6] Standardize describe.c's behavior for no-matching-object
|
|
-->
|
|
<para>
|
|
Make the various <command>\d</> commands handle no-matching-object
|
|
cases more consistently (Daniel Gustafsson)
|
|
</para>
|
|
|
|
<para>
|
|
They now all print the message about that to stderr, not stdout,
|
|
and the message wording is more consistent.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-18 [49917dbd7] Improve psql's tab completion for ALTER EXTENSION foo UP
|
|
2016-08-18 [8019b5a89] Improve psql's tab completion for \l.
|
|
2016-09-01 [76f9dd4fa] Improve tab completion for BEGIN & START|SET TRANSACTION
|
|
2016-09-11 [52803098a] psql tab completion for CREATE DATABASE ... TEMPLATE ...
|
|
2016-09-12 [63c1a8719] Fix recent commit for tab-completion of database templat
|
|
2016-11-03 [1d15d0db5] psql: Tab-complete LOCK [TABLE] ... IN {ACCESS|ROW|SHARE
|
|
2016-11-04 [927d7bb6b] Improve tab completion for CREATE TRIGGER.
|
|
2016-11-08 [577f0bdd2] psql: Tab completion for renaming enum values.
|
|
2017-03-01 [b5a388392] psql: Add tab completion for DEALLOCATE
|
|
2017-03-16 [d7d77f382] psql: Add completion for \help DROP|ALTER
|
|
-->
|
|
<para>
|
|
Improve <application>psql</>'s tab completion (Jeff Janes,
|
|
Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro,
|
|
Kevin Grittner, Dagfinn Ilmari Mannsåker)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><xref linkend="pgbench"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-09 [41124a91e] pgbench: Allow the transaction log file prefix to be cha
|
|
-->
|
|
<para>
|
|
Add <application>pgbench</> option <option>--log-prefix</> to
|
|
control the log file prefix (Masahiko Sawada)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-20 [cdc2a7047] Allow backslash line continuations in pgbench's meta com
|
|
-->
|
|
<para>
|
|
Allow <application>pgbench</>'s meta-commands to span multiple
|
|
lines (Fabien Coelho)
|
|
</para>
|
|
|
|
<para>
|
|
A meta-command can now be continued onto the next line by writing
|
|
backslash-return.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-08-11 [796818442] Remove pgbench's restriction on placement of -M switch.
|
|
-->
|
|
<para>
|
|
Remove restriction on placement of <option>-M</> option relative to
|
|
other command line options (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Applications</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-17 [cada1af31] Add compression support to pg_receivexlog
|
|
-->
|
|
<para>
|
|
Add <link
|
|
linkend="app-pgreceivewal"><application>pg_receivewal</></>
|
|
option <option>-Z</>/<option>--compress</> to specify compression
|
|
(Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-04 [7c030783a] Add pg_recvlogical -\-endpos=LSN
|
|
-->
|
|
<para>
|
|
Add <link
|
|
linkend="app-pgrecvlogical"><application>pg_recvlogical</></> option
|
|
<option>--endpos</> to specify the ending position (Craig Ringer)
|
|
</para>
|
|
|
|
<para>
|
|
This complements the existing <option>--startpos</> option.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-19 [5d58c07a4] initdb pg_basebackup: Rename -\-noxxx options to -\-no-x
|
|
-->
|
|
<para>
|
|
Rename <link linkend="APP-INITDB"><application>initdb</></>
|
|
options <option>--noclean</> and <option>--nosync</> to be spelled
|
|
<option>--no-clean</> and <option>--no-sync</> (Vik Fearing,
|
|
Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The old spellings are still supported.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></>,
|
|
<link linkend="APP-PG-DUMPALL"><application>pg_dumpall</></>,
|
|
<link linkend="APP-PGRESTORE"><application>pg_restore</></></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-20 [46b55e7f8] pg_restore: Add -N option to exclude schemas
|
|
-->
|
|
<para>
|
|
Allow <application>pg_restore</> to exclude schemas (Michael Banck)
|
|
</para>
|
|
|
|
<para>
|
|
This adds a new <option>-N</>/<option>--exclude-schema</> option.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-29 [4fafa579b] Add -\-no-blobs option to pg_dump
|
|
-->
|
|
<para>
|
|
Add <option>--no-blobs</> option to
|
|
<application>pg_dump</> (Guillaume Lelarge)
|
|
</para>
|
|
|
|
<para>
|
|
This suppresses dumping of large objects.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-07 [9a83d56b3] Allow pg_dumpall to dump roles w/o user passwords
|
|
-->
|
|
<para>
|
|
Add <application>pg_dumpall</> option
|
|
<option>--no-role-passwords</> to omit role passwords
|
|
(Robins Tharakan, Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This allows use of <application>pg_dumpall</> by non-superusers;
|
|
without this option, it fails due to inability to read passwords.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-08-16 [e4892c681] pg_dump: Support using synchronized snapshots on standby
|
|
-->
|
|
<para>
|
|
Support using synchronized snapshots when dumping from a standby
|
|
server (Petr Jelinek)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-22 [96a7128b7] Sync pg_dump and pg_dumpall output
|
|
-->
|
|
<para>
|
|
Issue <function>fsync()</> on the output files generated by
|
|
<application>pg_dump</> and
|
|
<application>pg_dumpall</> (Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
This provides more security that the output is safely stored on
|
|
disk before the program exits. This can be disabled with
|
|
the new <option>--no-sync</> option.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
|
|
<title><xref linkend="app-pgbasebackup"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-23 [56c7d8d45] Allow pg_basebackup to stream transaction log in tar mod
|
|
2016-12-21 [ecbdc4c55] Forbid invalid combination of options in pg_basebackup.
|
|
-->
|
|
<para>
|
|
Allow <application>pg_basebackup</> to stream write-ahead log in
|
|
tar mode (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
The <acronym>WAL</> will be stored in a separate tar file from
|
|
the base backup.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-16 [e7b020f78] Make pg_basebackup use temporary replication slots
|
|
-->
|
|
<para>
|
|
Make <application>pg_basebackup</> use temporary replication slots
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Temporary replication slots will be used by default when
|
|
<application>pg_basebackup</> uses WAL streaming with default
|
|
options.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-29 [bc34223bc] pg_basebackup pg_receivexlog: Issue fsync more carefully
|
|
-->
|
|
<para>
|
|
Be more careful about fsync'ing in all required places
|
|
in <application>pg_basebackup</> and
|
|
<application>pg_receivewal</> (Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-29 [6ed2d8584] pg_basebackup: Add -\-nosync option
|
|
2016-10-19 [5d58c07a4] initdb pg_basebackup: Rename -\-noxxx options to -\-no-x
|
|
-->
|
|
<para>
|
|
Add <application>pg_basebackup</> option <option>--no-sync</> to
|
|
disable fsync (Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-28 [6ad8ac602] Exclude additional directories in pg_basebackup
|
|
-->
|
|
<para>
|
|
Improve <application>pg_basebackup</>'s handling of which
|
|
directories to skip (David Steele)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><application><xref linkend="app-pg-ctl"></></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-21 [e7010ce47] pg_ctl: Add wait option to promote action
|
|
-->
|
|
<para>
|
|
Add wait option for <application><xref linkend="app-pg-ctl"></>'s
|
|
promote operation (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-19 [0be22457d] pg_ctl: Add long options for -w and -W
|
|
-->
|
|
<para>
|
|
Add long options for <application>pg_ctl</> wait (<option>--wait</>)
|
|
and no-wait (<option>--no-wait</>) (Vik Fearing)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-19 [caf936b09] pg_ctl: Add long option for -o
|
|
-->
|
|
<para>
|
|
Add long option for <application>pg_ctl</> server options
|
|
(<option>--options</>) (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-06-28 [f13ea95f9] Change pg_ctl to detect server-ready by watching status
|
|
-->
|
|
<para>
|
|
Make <literal>pg_ctl start --wait</> detect server-ready by
|
|
watching <filename>postmaster.pid</>, not by attempting connections
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The postmaster has been changed to report its ready-for-connections
|
|
status in <filename>postmaster.pid</>, and <application>pg_ctl</>
|
|
now examines that file to detect whether startup is complete.
|
|
This is more efficient and reliable than the old method, and it
|
|
eliminates postmaster log entries about rejected connection
|
|
attempts during startup.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-06-26 [c61559ec3] Reduce pg_ctl's reaction time when waiting for postmaste
|
|
-->
|
|
<para>
|
|
Reduce <application>pg_ctl</>'s reaction time when waiting for
|
|
postmaster start/stop (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_ctl</> now probes ten times per second when waiting
|
|
for a postmaster state change, rather than once per second.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-07-05 [1bac5f552] pg_ctl: Make failure to complete operation a nonzero exi
|
|
-->
|
|
<para>
|
|
Ensure that <application>pg_ctl</> exits with nonzero status if an
|
|
operation being waited for does not complete within the timeout
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The <literal>start</> and <literal>promote</> operations now return
|
|
exit status 1, not 0, in such cases. The <literal>stop</> operation
|
|
has always done that.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-15 [ca9112a42] Stamp HEAD as 10devel.
|
|
-->
|
|
<para>
|
|
Change to two-part release version numbering (Peter Eisentraut, Tom
|
|
Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Release numbers will now have two parts (e.g., <literal>10.1</>)
|
|
rather than three (e.g., <literal>9.6.3</>).
|
|
Major versions will now increase just the first number, and minor
|
|
releases will increase just the second number.
|
|
Release branches will be referred to by single numbers
|
|
(e.g., <literal>10</> rather than <literal>9.6</>).
|
|
This change is intended to reduce user confusion about what is a
|
|
major or minor release of <productname>PostgreSQL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-06-16 [cea258b63] Teach pgindent to skip files generated by bison or flex
|
|
2017-06-21 [8ff6d4ec7] Adjust pgindent script to use pg_bsd_indent 2.0.
|
|
2017-06-21 [e3860ffa4] Initial pgindent run with pg_bsd_indent version 2.0.
|
|
2017-06-21 [c7b8998eb] Phase 2 of pgindent updates.
|
|
2017-06-21 [382ceffdf] Phase 3 of pgindent updates.
|
|
2017-06-21 [81f056c72] Remove entab and associated detritus.
|
|
-->
|
|
<para>
|
|
Improve behavior of <application>pgindent</>
|
|
(Piotr Stefaniak, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
We have switched to a new version of <application>pg_bsd_indent</>
|
|
based on recent improvements made by the FreeBSD project. This
|
|
fixes numerous small bugs that led to odd C code formatting
|
|
decisions. Most notably, lines within parentheses (such as in a
|
|
multi-line function call) are now uniformly indented to match the
|
|
opening paren, even if that would result in code extending past the
|
|
right margin.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-23 [eccfef81e] ICU support
|
|
-->
|
|
<para>
|
|
Allow the <link linkend="configure"><acronym>ICU</></> library to
|
|
optionally be used for collation support (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The <acronym>ICU</> library has versioning that allows detection
|
|
of collation changes between versions. It is enabled via configure
|
|
option <option>--with-icu</>. The default still uses the operating
|
|
system's native collation library.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-04 [c8ead2a39] Provide DLLEXPORT markers for C functions via PG_FUNCTIO
|
|
-->
|
|
<para>
|
|
Automatically mark all <link
|
|
linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></> functions
|
|
as <literal>DLLEXPORT</>-ed on
|
|
<systemitem class="osname">Windows</> (Laurenz Albe)
|
|
</para>
|
|
|
|
<para>
|
|
If third-party code is using <literal>extern</> function
|
|
declarations, they should also add <literal>DLLEXPORT</> markers
|
|
to those declarations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-08 [1833f1a1c] Simplify code by getting rid of SPI_push, SPI_pop, SPI_r
|
|
-->
|
|
<para>
|
|
Remove <acronym>SPI</> functions <function>SPI_push()</>,
|
|
<function>SPI_pop()</>, <function>SPI_push_conditional()</>,
|
|
<function>SPI_pop_conditional()</>,
|
|
and <function>SPI_restore_connection()</> as unnecessary (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Their functionality now happens automatically. There are now no-op
|
|
macros by these names so that external modules don't need to be
|
|
updated immediately, but eventually such calls should be removed.
|
|
</para>
|
|
|
|
<para>
|
|
A side effect of this change is that <function>SPI_palloc()</> and
|
|
allied functions now require an active SPI connection; they do not
|
|
degenerate to simple <function>palloc()</> if there is none. That
|
|
previous behavior was not very useful and posed risks of unexpected
|
|
memory leaks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-02 [13e14a78e] Management of free memory pages.
|
|
2016-12-02 [13df76a53] Introduce dynamic shared memory areas.
|
|
2016-12-19 [e13029a5c] Provide a DSA area for all parallel queries.
|
|
-->
|
|
<para>
|
|
Allow shared memory to be dynamically allocated (Thomas Munro,
|
|
Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-27 [58b25e981] Add "Slab" MemoryContext implementation for efficient eq
|
|
-->
|
|
<para>
|
|
Add slab-like memory allocator for efficient fixed-size allocations
|
|
(Tomas Vondra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-09 [ecb0d20a9] Use unnamed POSIX semaphores, if available, on Linux and
|
|
-->
|
|
<para>
|
|
Use <acronym>POSIX</> semaphores rather than SysV semaphores
|
|
on <systemitem class="osname">Linux</> and <systemitem
|
|
class="osname">FreeBSD</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids platform-specific limits on SysV semaphore usage.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-07 [e8fdbd58f] Improve 64bit atomics support.
|
|
-->
|
|
<para>
|
|
Improve support for 64-bit atomics (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-10 [f8f1430ae] Enable 64 bit atomics on ARM64.
|
|
-->
|
|
<para>
|
|
Enable 64-bit atomic operations on <acronym>ARM64</> (Roman
|
|
Shaposhnik)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-01-02 [1d63f7d2d] Use clock_gettime(), if available, in instr_time measure
|
|
-->
|
|
<para>
|
|
Switch to using <function>clock_gettime()</>, if available, for
|
|
duration measurements (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<function>gettimeofday()</> is still used
|
|
if <function>clock_gettime()</> is not available.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-12-05 [fe0a0b599] Replace PostmasterRandom() with a stronger source, secon
|
|
2017-07-03 [bf723a274] Forbid gen_random_uuid() with -\-disable-strong-random
|
|
-->
|
|
<para>
|
|
Add more robust random number generators to be used for
|
|
cryptographically secure uses (Magnus Hagander, Michael Paquier,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
If no strong random number generator can be
|
|
found, <link linkend="configure">configure</> will fail unless
|
|
the <option>--disable-strong-random</> option is used. However, with
|
|
this option, <link linkend="pgcrypto"><application>pgcrypto</></>
|
|
functions requiring a strong random number generator will be disabled.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-08-15 [d7ab908fb] Distinguish wait-for-connection from wait-for-write-read
|
|
-->
|
|
<para>
|
|
Allow <function>WaitLatchOrSocket()</> to wait for socket
|
|
connection on Windows (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-06 [3f902354b] Clean up after insufficiently-researched optimization of
|
|
-->
|
|
<para>
|
|
<filename>tupconvert.c</> functions no longer convert tuples just to
|
|
embed a different composite-type OID in them (Ashutosh Bapat, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The majority of callers don't care about the composite-type OID;
|
|
but if the result tuple is to be used as a composite Datum, steps
|
|
should be taken to make sure the correct OID is inserted in it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-11 [2b860f52e] Remove "sco" and "unixware" ports.
|
|
-->
|
|
<para>
|
|
Remove <systemitem class="osname">SCO</> and <systemitem
|
|
class="osname">Unixware</> ports (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-18 [e8306745e] doc: Speed up XSLT builds
|
|
2016-08-24 [0e4cc1fc5] doc: Fix XSLT speedup with older upstream stylesheet ver
|
|
-->
|
|
<para>
|
|
Overhaul documentation <link linkend="docguide-toolsets">build
|
|
process</> (Alexander Lakhin)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-06 [510074f9f] Remove use of Jade and DSSSL
|
|
-->
|
|
<para>
|
|
Use <acronym>XSLT</> to build the <productname>PostgreSQL</>
|
|
documentation (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <application>Jade</>, <acronym>DSSSL</>, and
|
|
<application>JadeTex</> were used.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-15 [e36ddab11] Build HTML documentation using XSLT stylesheets by defau
|
|
-->
|
|
<para>
|
|
Build <acronym>HTML</> documentation using <acronym>XSLT</>
|
|
stylesheets by default (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Additional Modules</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-29 [8e91e12bc] Allow contrib/file_fdw to read from a program, like COPY
|
|
-->
|
|
<para>
|
|
Allow <link linkend="file-fdw"><application>file_fdw</></> to read
|
|
from program output as well as files (Corey Huinker, Adam Gomaa)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-21 [7012b132d] postgres_fdw: Push down aggregates to remote servers.
|
|
-->
|
|
<para>
|
|
In <link linkend="postgres-fdw"><application>postgres_fdw</></>,
|
|
push aggregate functions to the remote server, when possible
|
|
(Jeevan Chalke, Ashutosh Bapat)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the amount of data that must be passed from the remote
|
|
server, and offloads aggregate computation from the requesting server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-16 [b30fb56b0] postgres_fdw: Push down FULL JOINs with restriction clau
|
|
2017-04-24 [332bec1e6] postgres_fdw: Fix join push down with extensions
|
|
-->
|
|
<para>
|
|
In <application>postgres_fdw</>, push joins to the remote server in
|
|
more cases (David Rowley, Ashutosh Bapat, Etsuro Fujita)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-08-26 [ae025a159] Support OID system column in postgres_fdw.
|
|
-->
|
|
<para>
|
|
Properly support <type>OID</> columns in
|
|
<application>postgres_fdw</> tables (Etsuro Fujita)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <type>OID</> columns always returned zeros.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-21 [f7946a92b] Add btree_gist support for enum types.
|
|
-->
|
|
<para>
|
|
Allow <link linkend="btree-gist"><application>btree_gist</></>
|
|
and <link linkend="btree-gin"><application>btree_gin</></> to
|
|
index enum types (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows enums to be used in exclusion constraints.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-11-29 [11da83a0e] Add uuid to the set of types supported by contrib/btree_
|
|
-->
|
|
<para>
|
|
Add indexing support to <application>btree_gist</> for the
|
|
<type>UUID</> data type (Paul Jungwirth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-09 [3717dc149] Add amcheck extension to contrib.
|
|
-->
|
|
<para>
|
|
Add <link linkend="amcheck"><application>amcheck</></> which can
|
|
check the validity of B-tree indexes (Peter Geoghegan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-27 [a6f22e835] Show ignored constants as "$N" rather than "?" in pg_sta
|
|
-->
|
|
<para>
|
|
Show ignored constants as <literal>$N</> rather than <literal>?</>
|
|
in
|
|
<link
|
|
linkend="pgstatstatements"><application>pg_stat_statements</></>
|
|
(Lukas Fittl)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-27 [f31a931fa] Improve contrib/cube's handling of zero-D cubes, infinit
|
|
-->
|
|
<para>
|
|
Improve <link linkend="cube"><application>cube</></>'s handling
|
|
of zero-dimensional cubes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This also improves handling of <literal>infinite</> and
|
|
<literal>NaN</> values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-29 [6e654546f] Don't bother to lock bufmgr partitions in pg_buffercache
|
|
-->
|
|
<para>
|
|
Allow <link
|
|
linkend="pgbuffercache"><application>pg_buffercache</></> to run
|
|
with fewer locks (Ivan Kartyshov)
|
|
</para>
|
|
|
|
<para>
|
|
This makes it less disruptive when run on production systems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-03 [e759854a0] pgstattuple: Add pgstathashindex.
|
|
-->
|
|
<para>
|
|
Add <link linkend="pgstattuple"><application>pgstattuple</></>
|
|
function <function>pgstathashindex()</> to view hash index
|
|
statistics (Ashutosh Sharma)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-09-29 [fd321a1df] Remove superuser checks in pgstattuple
|
|
-->
|
|
<para>
|
|
Use <command>GRANT</> permissions to
|
|
control <application>pgstattuple</> function usage (Stephen Frost)
|
|
</para>
|
|
|
|
<para>
|
|
This allows DBAs to allow non-superusers to run these functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2016-10-28 [d4b5d4cad] pgstattuple: Don't take heavyweight locks when examining
|
|
-->
|
|
<para>
|
|
Reduce locking when <application>pgstattuple</> examines hash
|
|
indexes (Amit Kapila)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-03-17 [fef2bcdcb] pageinspect: Add page_checksum function
|
|
-->
|
|
<para>
|
|
Add <link linkend="pageinspect"><application>pageinspect</></>
|
|
function <function>page_checksum()</> to show a page's checksum
|
|
(Tomas Vondra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-04-04 [193f5f9e9] pageinspect: Add bt_page_items function with bytea argum
|
|
-->
|
|
<para>
|
|
Add <application>pageinspect</>
|
|
function <function>bt_page_items()</> to print page items from a
|
|
page image (Tomas Vondra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<!--
|
|
2017-02-02 [08bf6e529] pageinspect: Support hash indexes.
|
|
-->
|
|
<para>
|
|
Add hash index support to <application>pageinspect</> (Jesper
|
|
Pedersen, Ashutosh Sharma)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|