Commit f66faadc authored by Tom Lane's avatar Tom Lane

Make an editorial pass over the 9.4 release notes.

Update the notes to include commits through today, and do a lot of
wordsmithing and markup adjustment.  Notably, don't use <link> where <xref>
will do; since we got rid of the text-format HISTORY file, there is no
longer a reason to avoid <xref>.
parent 259904ec
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<note> <note>
<title>Release Date</title> <title>Release Date</title>
<simpara>2014-??-??</simpara> <simpara>2014-??-??</simpara>
<simpara>Current as of 2014-05-10</simpara> <simpara>Current as of 2014-08-17</simpara>
</note> </note>
<sect2> <sect2>
...@@ -23,44 +23,44 @@ ...@@ -23,44 +23,44 @@
<listitem> <listitem>
<para> <para>
Allow materialized views to be refreshed without blocking reads Allow <link linkend="rules-materializedviews">materialized views</>
to be refreshed without blocking reads
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="logicaldecoding">Logical decoding</link> allows database Add support for <link linkend="logicaldecoding">logical decoding</>
changes to be streamed out in a customizable format of WAL data, to allow database changes to be streamed out in a
customizable format
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <link linkend="bgworker">background workers</link> Allow <link linkend="bgworker">background worker processes</>
to be dynamically registered, started and terminated to be dynamically registered, started and terminated
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add structured (non-text) data type (<link Add <link linkend="datatype-json"><type>jsonb</></link>, a more
linkend="datatype-json"><type>JSONB</></link>) for storing capable and efficient data type for for storing <acronym>JSON</> data
<type>JSON</> data
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <acronym>SQL</>-level command <link Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link> for updating <filename>postgresql.conf</> configuration file entries
to edit the <filename>postgresql.conf</> configuration file
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce lock levels of some <link Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands commands
</para> </para>
</listitem> </listitem>
...@@ -77,10 +77,9 @@ ...@@ -77,10 +77,9 @@
<title>Migration to Version 9.4</title> <title>Migration to Version 9.4</title>
<para> <para>
A dump/restore using <link A dump/restore using <xref linkend="app-pg-dumpall">, or use
linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use of <xref linkend="pgupgrade">, is required for those wishing to migrate
of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is data from any previous release.
required for those wishing to migrate data from any previous release.
</para> </para>
<para> <para>
...@@ -92,131 +91,129 @@ ...@@ -92,131 +91,129 @@
<listitem> <listitem>
<para> <para>
Cause consecutive whitespace in <link Tighten checks for multidimensional <link
linkend="functions-formatting-table"><function>to_timestamp()</></link> linkend="arrays">array</link> input (Bruce Momjian)
and <function>to_date()</> format strings to consume a corresponding
number of characters in the input string (whitespace or not), then
conditionally consume adjacent whitespace, if not in <literal>FX</>
mode (Jeevan Chalke)
</para> </para>
<para> <para>
Previously consecutive whitespace characters in a non-<literal>FX</> Previously, an input array string that started with a single-element
format string behaved like a single whitespace character and consumed array dimension could later contain multidimensional segments,
all adjacent whitespace in the input string. For example, previously e.g. <literal>'{{1}, {2,3}}'::int[]</>.
format string space-space-space would consume only the first space in
' 12', while it will now consume all three characters.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Tighten checks for multidimensional <link Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
linkend="arrays">array</link> input (Bruce Momjian) text values are no longer rendered with the backslash escaped
(Andrew Dunstan)
</para> </para>
<para> <para>
Previously an input array string that started with a single-element Previously, all backslashes in text values being formed into JSON
array dimension could later contain multidimensional segments, were escaped. Now a backslash followed by <literal>u</> and four
e.g. <literal>'{{1}, {2,3}}'::int[]</>. hexadecimal digits is not escaped, as this is a legal sequence in a
JSON string value, and escaping the backslash led to some perverse
results.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Change empty arrays returned by <application>intarray</> to be When converting values of type <type>timestamp</>
zero-dimensional arrays (Bruce Momjian) or <type>timestamptz</>
to <link linkend="datatype-json"><type>JSON</type></link>, render the
values in a format compliant with ISO 8601 (Andrew Dunstan)
</para> </para>
<para> <para>
Previously, empty arrays were returned as one-dimensional empty arrays Previously such values were rendered according to the current
whose text representation looked the same as zero-dimensional arrays <xref linkend="guc-datestyle"> setting; but many JSON processors
(<literal>{}</>). <application>intarray</>'s behavior in this area require timestamps to be in ISO 8601 format.
now matches the built-in array operators.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Disallow NULL <link Cause consecutive whitespace in <link
linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link> linkend="functions-formatting-table"><function>to_timestamp()</></link>
function arguments (Pavel Stehule) and <function>to_date()</> format strings to consume a corresponding
number of characters in the input string (whitespace or not), then
conditionally consume adjacent whitespace, if not in <literal>FX</>
mode (Jeevan Chalke)
</para> </para>
<para> <para>
Such arguments must be cast to an array data type. Previously, consecutive whitespace characters in a non-<literal>FX</>
format string behaved like a single whitespace character and consumed
all adjacent whitespace in the input string. For example, previously
a format string of three spaces would consume only the first space in
<literal>' 12'</>, but it will now consume all three characters.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now Fix <link
outputs constant time zone offsets in <acronym>POSIX</>-style zone linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
format (Tom Lane) to ignore stripped lexemes (Alex Hill)
</para> </para>
<para> <para>
Previously it was returned in <link Previously, stripped lexemes were treated as if they had a default
linkend="datatype-interval-output"><type>INTERVAL</></link> format. location, producing a rank of dubious usefulness.
The new format can be passed to <command>SET TIME ZONE</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Values of type For functions declared to
<link linkend="datatype-datetime"><type>timestamp</></link> and take <link linkend="xfunc-sql-variadic-functions"><literal>VARIADIC
<link linkend="datatype-datetime"><type>timestamptz</></link> are now "any"</></link>, an actual parameter marked as <literal>VARIADIC</>
rendered in a string format compliant with ISO 8601 rather than the must be of a determinable array type (Pavel Stehule)
default output format when converting to or used in
<link linkend="datatype-json"><type>JSON</type></link>.
(Andrew Dunstan)
</para> </para>
<para> <para>
Previously these were rendered in the default text output format Such parameters can no longer be written as an undecorated string
for the type, but many JSON processors require timestamps in ISO 8601 literal or <literal>NULL</>; a cast to an appropriate array data type
format. will now be required. Note that this does not affect parameters not
marked <literal>VARIADIC</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link> <xref linkend="sql-discard"> now also discards sequence-related state
text values are no longer rendered with the backslash escaped. (Fabr&iacute;zio de Royes Mello, Robert Haas)
(Andrew Dunstan)
</para>
<para>
Previously all backslashes in text values being formed into JSON were
escaped. Now a backslash followed by "u" and four hexadecimal digits is
not escaped, as this is a legal sequence in a JSON string value, and
escaping the backslash led to some perverse results.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN
ANALYZE</></link>'s <quote>total runtime</quote> output to <quote>execution time</quote> ANALYZE</></link>'s <quote>total runtime</quote> output
(Tom Lane) to <quote>execution time</quote> (Tom Lane)
</para> </para>
<para> <para>
This was required now that planning time is also reported. Now that planning time is also reported, the previous name was
confusing.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Fix <link <link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
linkend="textsearch-functions-table"><function>ts_rank_cd()</></link> outputs simple numeric UTC offsets in <acronym>POSIX</> timezone
to ignore stripped lexemes (Alex Hill) format (Tom Lane)
</para> </para>
<para> <para>
Previously stripped lexemes got a default location and could be Previously, such timezone settings were displayed as <link
considered if mixed with non-stripped lexemes. linkend="datatype-interval-output"><type>interval</></link> values.
The new output is properly interpreted by <command>SET TIME ZONE</>
when passed as a simple string, whereas the old output required
special treatment to be re-parsed correctly.
</para> </para>
</listitem> </listitem>
...@@ -229,15 +226,15 @@ ...@@ -229,15 +226,15 @@
</para> </para>
<para> <para>
Restoring such check constraints will lead to restore errors. Previously such check constraints were allowed, but they would often
cause errors during restores.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Use the last specified <link Use the last specified <xref linkend="recovery-target"> if multiple
linkend="recovery-target"><varname>recovery_target</></link> if values are specified (Heikki Linnakangas)
multiple are specified (Heikki Linnakangas)
</para> </para>
</listitem> </listitem>
...@@ -249,16 +246,15 @@ ...@@ -249,16 +246,15 @@
<para> <para>
User commands that did their own quote preservation might need User commands that did their own quote preservation might need
adjustment, e.g. <link adjustment. This is likely to be an issue for commands used in
linkend="guc-archive-command">archive_command</link>, <link <xref linkend="guc-archive-command">, <xref linkend="restore-command">,
linkend="restore-command">restore_command</link>, <command>COPY TO/FROM and <link linkend="sql-copy"><command>COPY TO/FROM PROGRAM</></link>.
PROGRAM</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove system column <link Remove catalog column <link
linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</></link> linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</></link>
(Michael Paquier) (Michael Paquier)
</para> </para>
...@@ -266,90 +262,82 @@ ...@@ -266,90 +262,82 @@
<listitem> <listitem>
<para> <para>
Remove support for native <application>krb5</> authentication Remove catalog column <link
(Magnus Hagander) linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
(Kevin Grittner)
</para> </para>
<para> <para>
The proper way to use <application>Kerberos</> authentication is Per-column rules have not been supported since
with <acronym>GSSAPI</>. <application>PostgreSQL</> 7.3.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Handle domains over arrays like plain arrays in PL/Python Remove native support for <application>Kerberos</> authentication
(Rodolfo Campero) (<option>--with-krb5</>, etc)
(Magnus Hagander)
</para> </para>
<para> <para>
Previously they were treated as strings. The supported way to use <application>Kerberos</> authentication is
with <acronym>GSSAPI</>. The native code has been deprecated since
<productname>PostgreSQL</> 8.3.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have libpq's <link In <application>PL/Python</>, handle domains over arrays like the
linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link> underlying array type (Rodolfo Campero)
and <link
linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
functions process zero-length strings as defaults (Adrian
Vondendriesch)
</para> </para>
<para> <para>
Previously, these functions treated zero-length string values as Previously such values were treated as strings.
defaults only in some cases.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove system column <link Make libpq's <link
linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link> linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
(Kevin Grittner) and <link
linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
functions process zero-length strings as defaults (Adrian
Vondendriesch)
</para> </para>
<para> <para>
Per-column rules have not been supported since Previously, these functions treated zero-length string values as
<application>PostgreSQL</> 7.3. selecting the default in only some cases.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="pgupgrade"><application>pg_upgrade</></link> now Change empty arrays returned by the <xref linkend="intarray"> module
uses <option>-U</> to specify the user name (Bruce Momjian) to be zero-dimensional arrays (Bruce Momjian)
</para> </para>
<para> <para>
Previously <option>-u</> was used to specify the user name. Previously, empty arrays were returned as zero-length one-dimensional
Also spell the long option as <option>--username</>, again for arrays, whose text representation looked the same as zero-dimensional
consistency with other tools. arrays (<literal>{}</>), but they acted differently in array
operations. <application>intarray</>'s behavior in this area now
matches the built-in array operators.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The maximum number of <link linkend="bgworker">background workers</link> <xref linkend="pgupgrade"> now uses <option>-U</>
that can be registered or <option>--username</> to specify the user name (Bruce Momjian)
by <function>RegisterBackgroundWorker()</function> is now limited to
<link linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
</para> </para>
</listitem>
<listitem>
<para> <para>
<link linkend="bgworker">background workers</link> registered at Previously this option was spelled <option>-u</> or <option>--user</>,
postmaster startup time should set but that was inconsistent with other tools.
<structfield>bgw_notify_pid</structfield> to 0.
<command></>
</para>
</listitem>
<listitem>
<para>
<command>DISCARD ALL</> now also discards sequence state.
</para> </para>
</listitem> </listitem>
...@@ -373,63 +361,56 @@ ...@@ -373,63 +361,56 @@
<listitem> <listitem>
<para> <para>
Have <link linkend="SQL-VACUUM"><command>VACUUM</></link> properly Allow <link linkend="bgworker">background worker processes</link>
report dead but not removable rows to the statistics collector to be dynamically registered, started and terminated (Robert Haas)
(Hari Babu)
</para> </para>
<para> <para>
Previously these were reported as live rows. The <filename>contrib/worker_spi</> module shows an example of use
of this feature.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <link linkend="bgworker">background workers</link> to be Allow dynamic allocation of shared memory segments (Robert Haas,
dynamically registered, started and terminated (Robert Haas) Amit Kapila)
</para> </para>
<para> <para>
<function>worker_spi_launch()</> in <application>worker_spi</> This feature is illustrated in <xref linkend="test-shm-mq">.
shows an example of its use.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow dynamic allocation of shared memory segments (Robert Haas, During crash recovery or immediate shutdown, send uncatchable
Amit Kapila) termination signals (<systemitem>SIGKILL</>) to child processes
that do not shut down promptly (MauMau, &Aacute;lvaro Herrera)
</para> </para>
<para> <para>
This is illustrated in <link This reduces the likelihood of leaving orphaned child processes
linkend="test-shm-mq"><application>test_shm_mq</></link>. behind after <xref linkend="app-postmaster"> shutdown, as well
as ensuring that crash recovery can proceed if some child processes
have become <quote>stuck</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve <acronym>SSL</> renegotiation handling (&Aacute;lvaro Improve randomness of the database system identifier (Tom Lane)
Herrera)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
During immediate shutdown send uncatchable termination signals Make <xref linkend="SQL-VACUUM"> properly report dead but
to child processes that have not already shutdown (MauMau, not-yet-removable rows to the statistics collector (Hari Babu)
&Aacute;lvaro Herrera)
</para> </para>
<para> <para>
This reduces the likelihood of orphaned child processes after Previously these were reported as live rows.
<link linkend="app-postmaster"><application>postmaster</></link>
shutdown.
</para>
</listitem>
<listitem>
<para>
Improve randomness of the database system identifier (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -442,45 +423,44 @@ ...@@ -442,45 +423,44 @@
<listitem> <listitem>
<para> <para>
Improve speed of multi-key <link Reduce <link linkend="GIN"><acronym>GIN</></link> index size
linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov, (Alexander Korotkov, Heikki Linnakangas)
Heikki Linnakangas)
</para> </para>
</listitem>
<listitem>
<para> <para>
Reduce <link linkend="GIN"><acronym>GIN</></link> index size Indexes upgraded via <xref linkend="pgupgrade"> will work fine
(Alexander Korotkov, Heikki Linnakangas) but will still be in the old, larger <acronym>GIN</> format.
Use <xref linkend="SQL-REINDEX"> to recreate such an index in the
new format.
</para> </para>
</listitem>
<listitem>
<para> <para>
Indexes upgraded via <link Improve speed of multi-key <link
linkend="pgupgrade"><application>pg_upgrade</></link> will work linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
fine but will use the old larger <acronym>GIN</> format; <link Heikki Linnakangas)
linkend="SQL-REINDEX"><command>REINDEX</></link> will recreate
the index in the new format.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="GiST"><acronym>GiST</></link> index support Add <link linkend="GiST"><acronym>GiST</></link> index support
for <link linkend="datatype-inet"><type>INET</></link> and for <link linkend="datatype-inet"><type>inet</></link> and
<link linkend="datatype-cidr"><type>CIDR</></link> data types <link linkend="datatype-cidr"><type>cidr</></link> data types
(Emre Hasegeli) (Emre Hasegeli)
</para> </para>
<para> <para>
Such indexes improve <link Such indexes improve <link
linkend="cidr-inet-operators-table">subnet</link> and supernet linkend="cidr-inet-operators-table">subnet and supernet</link>
lookups and ordering comparisons. lookups and ordering comparisons.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Fix race condition in B-tree page deletion (Heikki Linnakangas) Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
</para> </para>
</listitem> </listitem>
...@@ -502,8 +482,9 @@ ...@@ -502,8 +482,9 @@
<listitem> <listitem>
<para> <para>
Allow multiple backends to simultaneously insert into <link Allow multiple backends to insert
linkend="wal"><acronym>WAL</></link> buffers (Heikki Linnakangas) into <link linkend="wal"><acronym>WAL</></link> buffers
concurrently (Heikki Linnakangas)
</para> </para>
<para> <para>
...@@ -520,31 +501,25 @@ ...@@ -520,31 +501,25 @@
<listitem> <listitem>
<para> <para>
Improve performance of <link Improve performance of aggregate functions used as <link
linkend="syntax-window-functions"><literal>WINDOW</></link> linkend="syntax-window-functions">window functions</link>
aggregate functions (David Rowley, Florian Pflug, Tom Lane) (David Rowley, Florian Pflug, Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve speed of aggregates which use <link Improve speed of aggregates that
linkend="datatype-numeric"><type>NUMERIC</></link>s (Hadi use <link linkend="datatype-numeric"><type>numeric</></link> state
Moshayedi) values (Hadi Moshayedi)
</para>
<para>
These include <function>SUM()</>, <function>AVG()</>, <link
linkend="functions-aggregate-statistics-table"><function>STDDEV()</></link>,
and <function>VARIANCE()</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Attempt to <link linkend="vacuum-for-wraparound">freeze</link> Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
tuples when tables are rewritten with <link tuples when tables are rewritten with <xref
linkend="SQL-CLUSTER"><command>CLUSTER</></link> or <link linkend="SQL-CLUSTER"> or <link
linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas, linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas,
Andres Freund) Andres Freund)
</para> </para>
...@@ -556,7 +531,7 @@ ...@@ -556,7 +531,7 @@
<listitem> <listitem>
<para> <para>
Improve speed of <link linkend="SQL-COPY"><command>COPY</></link> Improve speed of <xref linkend="SQL-COPY">
with <literal>DEFAULT</> <link with <literal>DEFAULT</> <link
linkend="functions-sequence-table"><function>nextval()</></link> linkend="functions-sequence-table"><function>nextval()</></link>
columns (Simon Riggs) columns (Simon Riggs)
...@@ -574,33 +549,46 @@ ...@@ -574,33 +549,46 @@
<listitem> <listitem>
<para> <para>
Raise hard limit on the number of tuples held in memory during sorting Raise hard limit on the number of tuples held in memory during sorting
and B-tree <link linkend="SQL-CREATEINDEX">index builds</link> (Noah and B-tree index builds (Noah Misch)
Misch)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce memory allocated by <link Reduce memory allocated by <application>PL/pgSQL</>
linkend="SQL-DO"><literal>DO</></link> blocks (Tom Lane) <xref linkend="SQL-DO"> blocks (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have the optimizer be more aggressive in creating restrictions Make the planner more aggressive in extracting restriction clauses
from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane) from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Auto-resize the catalog cache (Heikki Linnakangas) Disallow pushing volatile <literal>WHERE</> clauses down
into <literal>DISTINCT</> subqueries (Tom Lane)
</para> </para>
<para> <para>
This reduces memory consumption for backends accessing only a few Pushing down a <literal>WHERE</> clause can produce a more
tables, and improves performance for backend accessing many tables. efficient plan overall, but at the cost of evaluating the clause
more often than is implied by the text of the query; so don't do it
if the clause contains any volatile functions.
</para>
</listitem>
<listitem>
<para>
Auto-resize the catalog caches (Heikki Linnakangas)
</para>
<para>
This reduces memory consumption for sessions accessing only a few
tables, and improves performance for sessions accessing many tables.
</para> </para>
</listitem> </listitem>
...@@ -615,31 +603,32 @@ ...@@ -615,31 +603,32 @@
<listitem> <listitem>
<para> <para>
Expose the estimation of number of changed tuples since last <link Add <xref linkend="pg-stat-archiver-view"> system view to
linkend="vacuum-for-statistics">ANALYZE</link> (Mark Kirkwood) report <link linkend="wal"><acronym>WAL</></link> archiver activity
(Gabriele Bartolini)
</para> </para>
</listitem>
<listitem>
<para> <para>
This appears in <link Add <structfield>n_mod_since_analyze</> columns to
linkend="pg-stat-all-tables-view"><structfield>pg_stat_all_tables.n_mod_since_analyze</></link>. <xref linkend="pg-stat-all-tables-view"> and related system views
(Mark Kirkwood)
</para> </para>
</listitem>
<listitem>
<para> <para>
Add <link These columns expose the system's estimate of the number of changed
linkend="pg-stat-archiver-view"><structname>pg_stat_archiver</></link> tuples since the table's last <xref linkend="sql-analyze">. This
system view to report <link linkend="wal"><acronym>WAL</></link> estimate drives decisions about when to auto-analyze.
archiver activity (Gabriele Bartolini)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <varname>backend_xid</> and <varname>backend_xmin</> columns to Add <structfield>backend_xid</> and <structfield>backend_xmin</>
the system view <link linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link> columns to the system view <xref linkend="pg-stat-activity-view">,
and <varname>backend_xmin</> to <link linkend="pg-stat-replication-view"><structname>pg_stat_replication</></link> and a <structfield>backend_xmin</> column to
(Christian Kruse) <xref linkend="pg-stat-replication-view"> (Christian Kruse)
</para> </para>
</listitem> </listitem>
...@@ -660,38 +649,47 @@ ...@@ -660,38 +649,47 @@
<para> <para>
This allows use of Elliptic Curve keys for server authentication. This allows use of Elliptic Curve keys for server authentication.
Such keys are faster and have improved security over <acronym>RSA</> keys. Such keys are faster and have better security than <acronym>RSA</>
The new configuration parameter keys. The new configuration parameter
<link linkend="guc-ssl-ecdh-curve"><varname>ssl_ecdh_curve</></link> <xref linkend="guc-ssl-ecdh-curve">
controls which curve is used for <acronym>ECDH</>. controls which curve is used for <acronym>ECDH</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve the default <link Improve the default <xref linkend="guc-ssl-ciphers"> setting
linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> value
(Marko Kreen) (Marko Kreen)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow the server to specify the preferred <acronym>SSL</> cipher By default, the server not the client now controls the preference
order (Marko Kreen) order of <acronym>SSL</> ciphers
(Marko Kreen)
</para>
<para>
Previously, the order specified by <xref linkend="guc-ssl-ciphers">
was usually ignored in favor of client-side defaults, which are not
configurable in most <productname>PostgreSQL</> clients. If
desired, the old behavior can be restored via the new configuration
parameter <xref linkend="guc-ssl-prefer-server-ciphers">.
</para> </para>
</listitem>
<listitem>
<para> <para>
This is controlled by the new configuration parameter <link Make <xref linkend="guc-log-connections"> show <acronym>SSL</>
linkend="guc-ssl-prefer-server-ciphers"><varname>ssl_prefer_server_ciphers</></link>. encryption information (Andreas Kunert)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link Improve <acronym>SSL</> renegotiation handling (&Aacute;lvaro
linkend="guc-log-connections"><varname>log_connections</></link> Herrera)
show <acronym>SSL</> encryption information (Andreas Kunert)
</para> </para>
</listitem> </listitem>
...@@ -706,142 +704,134 @@ ...@@ -706,142 +704,134 @@
<listitem> <listitem>
<para> <para>
Add <acronym>SQL</>-level <link Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link> command for updating <filename>postgresql.conf</> configuration file entries
to adjust server-wide settings (Amit Kapila) (Amit Kapila)
</para> </para>
<para> <para>
Previously such settings could only be changed by Previously such settings could only be changed by manually
editing <filename>postgresql.conf</> at the file system level. editing <filename>postgresql.conf</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="guc-huge-pages"><varname>huge_pages</></link> Add <xref linkend="guc-autovacuum-work-mem"> configuration parameter
configuration parameter to use huge memory pages on Linux to control the amount of memory used by autovacuum workers
(Christian Kruse, Richard Poole, Abhijit Menon-Sen) (Peter Geoghegan)
</para>
<para>
This can improve performance on large memory systems.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Show <acronym>PID</>s of lock holders and Add <xref linkend="guc-huge-pages"> parameter to allow using huge
waiters and improve relation information in <link memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
linkend="guc-log-lock-waits"><varname>log_lock_waits</></link> Menon-Sen)
log messages (Christian Kruse)
</para> </para>
</listitem>
<listitem>
<para> <para>
Add parameter <link This can improve performance on large-memory systems.
linkend="guc-autovacuum-work-mem"><varname>autovacuum_work_mem</></link>
to control the amount of memory used by autovacuum workers
(Peter Geoghegan)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add <xref linkend="guc-max-worker-processes"> parameter
linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
to limit the number of background workers (Robert Haas) to limit the number of background workers (Robert Haas)
</para> </para>
<para> <para>
This is helpful in configuring the standby server to have the This is helpful in configuring a standby server to have the
required same number of worker processes as the primary. required number of worker processes (the same as the primary).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add configuration parameter <link Add superuser-only <xref linkend="guc-session-preload-libraries">
linkend="guc-wal-log-hints"><varname>wal_log_hints</></link> parameter to load libraries at session start (Peter Eisentraut)
to enable logging of hint bits (Sawada Masahiko)
</para> </para>
<para> <para>
Hint bits are not normally logged, except when checksums are enabled. In contrast to <xref linkend="guc-local-preload-libraries">, this
This is useful for external tools like <application>pg_rewind</>. parameter can load any shared library, not just those in
the <filename>$libdir/plugins</> directory.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <function>printf</function>-style space padding to be specified in <link Add <xref linkend="guc-wal-log-hints"> parameter to enable WAL
linkend="guc-log-line-prefix"><varname>log_line_prefix</></link> logging of hint-bit changes (Sawada Masahiko)
(David Rowley) </para>
<para>
Hint bit changes are not normally logged, except when checksums are
enabled. This is useful for external tools
like <application>pg_rewind</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add superuser-only <link Increase the default settings of <xref linkend="guc-work-mem">
linkend="guc-session-preload-libraries"><varname>session_preload_libraries</></link> and <xref linkend="guc-maintenance-work-mem"> by four times (Bruce
configuration parameter to load libraries at session start Momjian)
(Peter Eisentraut)
</para> </para>
<para> <para>
In contrast The new defaults are 4MB and 64MB respectively.
to <link linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
this parameter can load any shared library, not just those in
the <filename>$libdir/plugins</> directory.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce server logging level when loading shared libraries (Peter Increase the default setting of <xref
Geoghegan) linkend="guc-effective-cache-size">
to 4GB (Bruce Momjian, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
The previous level was <literal>LOG</>, which was too verbose Allow <function>printf</function>-style space padding to be
for per-session libraries. specified in <xref linkend="guc-log-line-prefix"> (David Rowley)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Increase <link Allow terabyte units (<literal>TB</>) to be used when specifying
linkend="guc-work-mem"><varname>work_mem</></link> and <link configuration variable values (Simon Riggs)
linkend="guc-maintenance-work-mem"><varname>maintenance_work_mem</></link>
defaults by four times (Bruce Momjian)
</para> </para>
</listitem>
<listitem>
<para> <para>
The new defaults are 4MB and 64MB respectively. Show <acronym>PID</>s of lock holders and waiters and improve
information about relations in <xref linkend="guc-log-lock-waits">
log messages (Christian Kruse)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Increase the default setting of <link Reduce server logging level when loading shared libraries (Peter
linkend="guc-effective-cache-size"><varname>effective_cache_size</></link> Geoghegan)
to 4GB (Bruce Momjian, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Allow terabyte units to be specified for configuration variable The previous level was <literal>LOG</>, which was too verbose
values (Simon Riggs) for per-session libraries.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have Windows <literal>SQL_ASCII</>-encoded databases and server On Windows, make <literal>SQL_ASCII</>-encoded databases and server
process (e.g. <link linkend="app-postmaster">postmaster</>) emit processes (e.g., <xref linkend="app-postmaster">) emit messages in
messages in the character encoding of the server's Windows user locale the character encoding of the server's Windows user locale
(Alexander Law, Noah Misch) (Alexander Law, Noah Misch)
</para> </para>
...@@ -862,24 +852,37 @@ ...@@ -862,24 +852,37 @@
<itemizedlist> <itemizedlist>
<listitem>
<para>
Add <link linkend="streaming-replication-slots">replication
slots</link> to coordinate activity on streaming standbys with the
node they are streaming from (Andres Freund, Robert Haas)
</para>
<para>
Replication slots allow preservation of resources like
<acronym>WAL</> files on the primary until they are no longer
needed by standby servers.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="recovery-config"><filename>recovery.conf</></link> Add <link linkend="recovery-config"><filename>recovery.conf</></link>
parameter <link linkend="recovery-min-apply-delay"><varname>recovery_min_apply_delay</></link> parameter <xref linkend="recovery-min-apply-delay">
to delay replication (Robert Haas, Fabr&iacute;zio de Royes Mello, to delay replication (Robert Haas, Fabr&iacute;zio de Royes Mello,
Simon Riggs) Simon Riggs)
</para> </para>
<para> <para>
This is useful for delaying the replay of user errors on standby Delaying replay on standby servers can be useful for recovering
servers. from user errors.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add <xref linkend="recovery-target">
linkend="recovery-target"><varname>recovery_target</></link>
option <option>immediate</> to stop <link option <option>immediate</> to stop <link
linkend="wal"><acronym>WAL</></link> recovery as soon as a linkend="wal"><acronym>WAL</></link> recovery as soon as a
consistent state is reached (MauMau, Heikki Linnakangas) consistent state is reached (MauMau, Heikki Linnakangas)
...@@ -894,9 +897,9 @@ ...@@ -894,9 +897,9 @@
<para> <para>
The timestamp reported The timestamp reported
by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link> by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
now shows information about already-committed records, not of transactions now reflects already-committed records, not transactions about to
about to be committed. Recovering to a restore point now replays the be committed. Recovering to a restore point now replays the restore
restore point, rather than stopping just before the restore point. point, rather than stopping just before the restore point.
</para> </para>
</listitem> </listitem>
...@@ -904,7 +907,7 @@ ...@@ -904,7 +907,7 @@
<para> <para>
<link <link
linkend="functions-admin-backup-table"><function>pg_switch_xlog()</></link> linkend="functions-admin-backup-table"><function>pg_switch_xlog()</></link>
now clears the trailing unused space in the <acronym>WAL</> file now clears any unused trailing space in the old <acronym>WAL</> file
(Heikki Linnakangas) (Heikki Linnakangas)
</para> </para>
...@@ -915,15 +918,9 @@ ...@@ -915,15 +918,9 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="streaming-replication-slots">replication Report failure return codes from <link
slots</link> to coordinate activity on streaming standbys with the linkend="archive-recovery-settings">external recovery commands</>
node they are streaming from (Andres Freund, Robert Haas) (Peter Eisentraut)
</para>
<para>
Replication slots allow preservation of resources like
<acronym>WAL</> files on the primary that are needed by standby
servers.
</para> </para>
</listitem> </listitem>
...@@ -934,14 +931,6 @@ ...@@ -934,14 +931,6 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Report failure return codes from <link
linkend="archive-recovery-settings">external recovery commands</>
(Peter Eisentraut)
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Write <acronym>WAL</> records of running transactions more Write <acronym>WAL</> records of running transactions more
...@@ -949,7 +938,7 @@ ...@@ -949,7 +938,7 @@
</para> </para>
<para> <para>
This allows standby servers to start faster and cleanup resources This allows standby servers to start faster and clean up resources
more aggressively. more aggressively.
</para> </para>
</listitem> </listitem>
...@@ -960,7 +949,7 @@ ...@@ -960,7 +949,7 @@
<title><link linkend="logicaldecoding">Logical Decoding</></title> <title><link linkend="logicaldecoding">Logical Decoding</></title>
<para> <para>
Logical decoding allows database changes to be optionally streamed in a Logical decoding allows database changes to be streamed in a
configurable format. The data is read from configurable format. The data is read from
the <link linkend="wal"><acronym>WAL</></link> and transformed into the the <link linkend="wal"><acronym>WAL</></link> and transformed into the
desired target format. To implement this feature, the following changes desired target format. To implement this feature, the following changes
...@@ -968,58 +957,52 @@ ...@@ -968,58 +957,52 @@
</para> </para>
<itemizedlist> <itemizedlist>
<!-- FIXME: This imo needs a pretty fundamental rewrite -->
<listitem>
<para>
Add new <option>logical</> <link
linkend="guc-wal-level"><varname>wal_level</></link> to enable
logical change-set encoding in <acronym>WAL</> (Andres Freund)
</para>
<listitem>
<para> <para>
This interacts with <link Add support for <link linkend="logicaldecoding">logical decoding</>
linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>. of WAL data, to allow database changes to be streamed out in a
customizable format
(Andres Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <link Add new <xref linkend="guc-wal-level"> setting <option>logical</>
linkend="app-pgrecvlogical"><application>pg_recvlogical</></link> to enable logical change-set encoding in <acronym>WAL</> (Andres
to receive logical decoding data (Andres Freund) Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add table-level parameter <link
linkend="test-decoding"><application>test_decoding</></link> linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
module to illustrate logical decoding at the <acronym>SQL</> to control logical replication (Andres Freund)
level (Andres Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow logical decoding via the walsender interface ? (Andres Add relation option <link
Freund) linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
to identify user-created tables involved in logical change-set
encoding (Andres Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add table-level parameter <link Add <xref linkend="app-pgrecvlogical"> application to receive
linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link> logical-decoding data (Andres Freund)
to control logical replication (Andres Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add relation option <link Add <xref linkend="test-decoding"> module to illustrate logical
linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link> decoding at the <acronym>SQL</> level (Andres Freund)
to identify user-created tables involved in logical change-set
encoding (Andres Freund)
</para> </para>
</listitem> </listitem>
...@@ -1034,19 +1017,12 @@ ...@@ -1034,19 +1017,12 @@
<itemizedlist> <itemizedlist>
<listitem>
<para>
Add <link linkend="queries-tablefunctions"><literal>ROWS
FROM()</></link> syntax to allow horizontal concatenation of
set-returning functions in the <literal>FROM</>-clause (Andrew Gierth)
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="queries-tablefunctions"><literal>WITH Add <link linkend="queries-tablefunctions"><literal>WITH
ORDINALITY</></link> syntax to number rows returned from ORDINALITY</></link> syntax to number rows returned from
<literal>FROM</>-clause functions (Andrew Gierth, David Fetter) set-returning functions in the <literal>FROM</> clause
(Andrew Gierth, David Fetter)
</para> </para>
<para> <para>
...@@ -1057,13 +1033,21 @@ ...@@ -1057,13 +1033,21 @@
<listitem> <listitem>
<para> <para>
Allow <link linkend="SQL-SELECT"><command>SELECT</></link> with Add <link linkend="queries-tablefunctions"><literal>ROWS
FROM()</></link> syntax to allow horizontal concatenation of
set-returning functions in the <literal>FROM</> clause (Andrew Gierth)
</para>
</listitem>
<listitem>
<para>
Allow <xref linkend="SQL-SELECT"> to have
an empty target list (Tom Lane) an empty target list (Tom Lane)
</para> </para>
<para> <para>
This was added so views that select from a table with zero columns This was added so that views that select from a table with zero
can be dumped correctly. columns can be dumped and restored correctly.
</para> </para>
</listitem> </listitem>
...@@ -1079,7 +1063,7 @@ ...@@ -1079,7 +1063,7 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="SQL-DISCARD"><command>DISCARD Add <link linkend="SQL-DISCARD"><command>DISCARD
SEQUENCES</></link> command to discard cached sequence information SEQUENCES</></link> command to discard cached sequence-related state
(Fabr&iacute;zio de Royes Mello, Robert Haas) (Fabr&iacute;zio de Royes Mello, Robert Haas)
</para> </para>
...@@ -1090,14 +1074,15 @@ ...@@ -1090,14 +1074,15 @@
<listitem> <listitem>
<para> <para>
Add <command>FORCE NULL</> option Add <literal>FORCE NULL</> option
to <link linkend="SQL-COPY"><command>COPY FROM</></link> which causes to <link linkend="SQL-COPY"><command>COPY FROM</></link>, which
quoted strings matching the null string to be converted to NULL in causes quoted strings matching the specified null string to be
<literal>CSV</> mode (Ian Barwick, Michael Paquier) converted to NULLs in <literal>CSV</> mode (Ian Barwick, Michael
Paquier)
</para> </para>
<para> <para>
Previously only unquoted matching strings would be imported Without this option, only unquoted matching strings will be imported
as null values. as null values.
</para> </para>
</listitem> </listitem>
...@@ -1105,41 +1090,41 @@ ...@@ -1105,41 +1090,41 @@
<listitem> <listitem>
<para> <para>
Issue warnings for commands used outside of transaction blocks Issue warnings for commands used outside of transaction blocks
because they have no effect (Bruce Momjian) when they can have no effect (Bruce Momjian)
</para> </para>
<para> <para>
The cases are <literal>SET New warnings are issued for <command>SET
LOCAL</>, <literal>SET CONSTRAINTS</>, <literal>SET TRANSACTION</> and LOCAL</>, <command>SET CONSTRAINTS</>, <command>SET TRANSACTION</> and
<literal>ABORT</>. <command>ABORT</> when used outside a transaction block.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title> <title><xref linkend="SQL-EXPLAIN"></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Have <command>EXPLAIN ANALYZE</> output planning time (Andreas Make <command>EXPLAIN ANALYZE</> show planning time (Andreas
Karlsson) Karlsson)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <command>EXPLAIN</> print the grouping columns in Agg and Make <command>EXPLAIN</> show the grouping columns in Agg and
Group nodes (Tom Lane) Group nodes (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <command>EXPLAIN ANALYZE</> show bitmap heap scan exact/lossy Make <command>EXPLAIN ANALYZE</> show exact and lossy
block information (Etsuro Fujita) block counts in bitmap heap scans (Etsuro Fujita)
</para> </para>
</listitem> </listitem>
...@@ -1154,7 +1139,8 @@ ...@@ -1154,7 +1139,8 @@
<listitem> <listitem>
<para> <para>
Allow materialized views to be refreshed without blocking reads Allow <link linkend="rules-materializedviews">materialized views</>
to be refreshed without blocking reads
(Kevin Grittner) (Kevin Grittner)
</para> </para>
...@@ -1174,7 +1160,7 @@ ...@@ -1174,7 +1160,7 @@
</para> </para>
<para> <para>
Previously the presence of non-updatable columns such as Previously the presence of non-updatable output columns such as
expressions, literals, and function calls prevented automatic expressions, literals, and function calls prevented automatic
updates. Now <command>INSERT</>s, <command>UPDATE</>s and updates. Now <command>INSERT</>s, <command>UPDATE</>s and
<command>DELETE</>s are supported, provided that they do not <command>DELETE</>s are supported, provided that they do not
...@@ -1186,12 +1172,12 @@ ...@@ -1186,12 +1172,12 @@
<para> <para>
Allow control over whether <command>INSERT</>s and Allow control over whether <command>INSERT</>s and
<command>UPDATE</>s can add rows to an auto-updatable view that <command>UPDATE</>s can add rows to an auto-updatable view that
would no longer appear in the view (Dean Rasheed) would not appear in the view (Dean Rasheed)
</para> </para>
<para> <para>
This is controlled with the new <link This is controlled with the new <xref linkend="SQL-CREATEVIEW">
linkend="SQL-CREATEVIEW"><literal>WITH CHECK OPTION</></link>. clause <literal>WITH CHECK OPTION</>.
</para> </para>
</listitem> </listitem>
...@@ -1215,96 +1201,89 @@ ...@@ -1215,96 +1201,89 @@
<listitem> <listitem>
<para> <para>
Allow triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign Support triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
tables</> (Ronan Dunklau) tables</> (Ronan Dunklau)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Fix <command>DROP IF EXISTS</> to more consistently not error Allow moving groups of objects from one tablespace to another
for non-existent objects (Pavel Stehule, Dean Rasheed) using <xref linkend="SQL-ALTERTABLESPACE"> ... <literal>MOVE</>
(Stephen Frost)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve how system-level relations are designated (Andres Freund, Allow changing foreign key constraint deferrability
Robert Haas) via <xref linkend="SQL-ALTERTABLE"> ... <literal>ALTER
CONSTRAINT</> (Simon Riggs)
</para> </para>
</listitem>
<listitem>
<para> <para>
Previously, relations once moved into the system catalog schema could Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
no longer be modified or dropped. commands
(Simon Riggs, Noah Misch, Robert Haas)
</para> </para>
</listitem>
<listitem>
<para> <para>
Allow <link linkend="SQL-ALTERTABLESPACE"><command>ALTER Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
TABLESPACE</></link> options to be also set by <link ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
linkend="SQL-CREATETABLESPACE"><command>CREATE TABLESPACE</></link> SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
(Vik Fearing) <option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
<option>(attribute_option)</> no longer require <literal>ACCESS
EXCLUSIVE</> locks.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <link linkend="SQL-CREATEAGGREGATE"><command>CREATE Allow tablespace options to be set
AGGREGATE</></link> to supply the size of the aggregate's in <xref linkend="SQL-CREATETABLESPACE"> (Vik Fearing)
transition state data (Hadi Moshayedi)
</para> </para>
<para> <para>
This allows the optimizer to better estimate how much memory will be Formerly these options could only be set
used by aggregates. via <xref linkend="SQL-ALTERTABLESPACE">.
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect4>
<title><command>ALTER</></title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Allow moving groups of objects from one tablespace to another Allow <xref linkend="SQL-CREATEAGGREGATE"> to define the estimated
using <link linkend="SQL-ALTERTABLESPACE"><command>ALTER size of the aggregate's transition state data (Hadi Moshayedi)
TABLESPACE</></link> ... <literal>MOVE</> (Stephen Frost) </para>
<para>
Proper use of this feature allows the planner to better estimate
how much memory will be used by aggregates.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow changing foreign key constraint deferrability via <link Fix <command>DROP IF EXISTS</> to avoid errors for non-existent
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> objects in more cases (Pavel Stehule, Dean Rasheed)
... <literal>ALTER CONSTRAINT</> (Simon Riggs)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce lock levels of some <link Improve how system relations are identified (Andres Freund,
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands Robert Haas)
(Simon Riggs, Noah Misch, Robert Haas)
</para> </para>
<para> <para>
Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER Previously, relations once moved into the <literal>pg_catalog</>
ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN schema could no longer be modified or dropped.
SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
<option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
<option>(attribute_option)</> no longer require <literal>ACCESS
EXCLUSIVE</> locks.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4>
</sect3> </sect3>
<sect3> <sect3>
...@@ -1321,7 +1300,7 @@ ...@@ -1321,7 +1300,7 @@
<para> <para>
The line <emphasis>segment</> data type (<link The line <emphasis>segment</> data type (<link
linkend="datatype-lseg"><type>LSEG</></link>) has always been linkend="datatype-lseg"><type>lseg</></link>) has always been
fully supported. The previous <type>line</> data type (enabled fully supported. The previous <type>line</> data type (enabled
only via a compile-time option) is not binary or dump-compatible. only via a compile-time option) is not binary or dump-compatible.
</para> </para>
...@@ -1329,7 +1308,7 @@ ...@@ -1329,7 +1308,7 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="datatype-pg-lsn"><type>PG_LSN</></link> Add <link linkend="datatype-pg-lsn"><type>pg_lsn</></link>
data type to represent a <acronym>WAL</> log sequence number data type to represent a <acronym>WAL</> log sequence number
(<acronym>LSN</>) (Robert Haas, Michael Paquier) (<acronym>LSN</>) (Robert Haas, Michael Paquier)
</para> </para>
...@@ -1338,8 +1317,8 @@ ...@@ -1338,8 +1317,8 @@
<listitem> <listitem>
<para> <para>
Allow single-point <link Allow single-point <link
linkend="datatype-polygon"><type>POLYGON</></link>s to be converted linkend="datatype-polygon"><type>polygon</></link>s to be converted
to <link linkend="datatype-circle"><type>CIRCLE</></link>s to <link linkend="datatype-circle"><type>circle</></link>s
(Bruce Momjian) (Bruce Momjian)
</para> </para>
</listitem> </listitem>
...@@ -1347,15 +1326,15 @@ ...@@ -1347,15 +1326,15 @@
<listitem> <listitem>
<para> <para>
Allow 5+ digit years for non-<acronym>ISO</> <link Allow 5+ digit years for non-<acronym>ISO</> <link
linkend="datatype-datetime"><type>TIMESTAMP</></link> and linkend="datatype-datetime"><type>timestamp</></link> and
<type>DATE</> strings, where appropriate (Bruce Momjian) <type>date</> strings, where appropriate (Bruce Momjian)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add checks for overflow/underflow of <link Add checks for overflow/underflow of <link
linkend="datatype-datetime"><type>INTERVAL</></link> values linkend="datatype-datetime"><type>interval</></link> values
(Bruce Momjian) (Bruce Momjian)
</para> </para>
</listitem> </listitem>
...@@ -1363,23 +1342,25 @@ ...@@ -1363,23 +1342,25 @@
</itemizedlist> </itemizedlist>
<sect4> <sect4>
<title><link linkend="datatype-json"><type>JSON</></link></title> <title><link linkend="datatype-json"><acronym>JSON</></link></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Add structured (non-text) data type (<link Add <link linkend="datatype-json"><type>jsonb</></link>, a more
linkend="datatype-json"><type>jsonb</></link>) for storing capable and efficient data type for for storing <acronym>JSON</> data
JSON data (Oleg Bartunov, Teodor Sigaev, Alexander (Oleg Bartunov, Teodor Sigaev, Alexander
Korotkov, Peter Geoghegan, and Andrew Dunstan) Korotkov, Peter Geoghegan, Andrew Dunstan)
</para> </para>
<para> <para>
This allows for faster access to values in the JSON This new type allows faster access to values in a JSON
document and faster and more useful indexing of JSON. document and faster and more useful indexing of JSON columns.
Scalar values in <type>jsonb</> documents are typed as appropriate Scalar values in <type>jsonb</> documents are stored as appropriate
scalar SQL types. scalar SQL types, and the JSON document structure is pre-parsed
rather than being stored as text as in the original <type>json</>
data type.
</para> </para>
</listitem> </listitem>
...@@ -1412,7 +1393,6 @@ ...@@ -1412,7 +1393,6 @@
</sect3> </sect3>
<sect3> <sect3>
<title>Functions</title> <title>Functions</title>
...@@ -1422,12 +1402,13 @@ ...@@ -1422,12 +1402,13 @@
<para> <para>
Add <link Add <link
linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</></link> linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</></link>
and <function>pg_sleep_until(timestamp)</> to specify sophisticated and <function>pg_sleep_until(timestamp)</> to specify
delays (Vik Fearing, Julien Rouhaud) delays more flexibly (Vik Fearing, Julien Rouhaud)
</para> </para>
<para> <para>
<function>pg_sleep()</> only supports delays specified in seconds. The existing <function>pg_sleep()</> function only supports delays
specified in seconds.
</para> </para>
</listitem> </listitem>
...@@ -1468,28 +1449,29 @@ ...@@ -1468,28 +1449,29 @@
</para> </para>
<para> <para>
These functions are prefixed with <literal>make_</>, These functions' names are prefixed with <literal>make_</>,
e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>. e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link Make <link
linkend="functions-formatting-table"><function>to_char(<literal>TZ</>)</></link> linkend="functions-formatting-table"><function>to_char()</></link>'s
return the proper value for constant time zone offsets (Tom Lane) <literal>TZ</> format specifier return a useful value for simple
numeric time zone offsets (Tom Lane)
</para> </para>
<para> <para>
Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</> returned Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</> returned
NULL if the <literal>TIME ZONE</> was set to a constant like an empty string if the <literal>timezone</> was set to a constant
<literal>-4</>. like <literal>-4</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add timezone offset output option <literal>OF</> to <link Add timezone offset format specifier <literal>OF</> to <link
linkend="functions-formatting-table"><function>to_char()</></link> linkend="functions-formatting-table"><function>to_char()</></link>
(Bruce Momjian) (Bruce Momjian)
</para> </para>
...@@ -1503,6 +1485,19 @@ ...@@ -1503,6 +1485,19 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Tighten validity checking for Unicode code points in <link
linkend="functions-string-other"><function>chr(int)</></link>
(Tom Lane)
</para>
<para>
This function now only accepts values that are valid UTF8 characters
according to RFC 3629.
</para>
</listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
...@@ -1514,7 +1509,7 @@ ...@@ -1514,7 +1509,7 @@
<para> <para>
Add functions for looking up objects in <structname>pg_class</>, Add functions for looking up objects in <structname>pg_class</>,
<structname>pg_proc</>, <structname>pg_type</>, and <structname>pg_proc</>, <structname>pg_type</>, and
<structname>pg_operator</> which do not generate errors for <structname>pg_operator</> that do not generate errors for
non-existent objects (Yugo Nagata, Nozomi Anzai, non-existent objects (Yugo Nagata, Nozomi Anzai,
Robert Haas) Robert Haas)
</para> </para>
...@@ -1522,8 +1517,9 @@ ...@@ -1522,8 +1517,9 @@
<para> <para>
For example, <link For example, <link
linkend="functions-info-catalog-table"><function>to_regclass()</></link> linkend="functions-info-catalog-table"><function>to_regclass()</></link>
does lookups of <structname>pg_class</> and returns NULL for does a lookup in <structname>pg_class</> similarly to
non-existent objects. the <type>regclass</> input function, but it returns NULL for a
non-existent object instead of failing.
</para> </para>
</listitem> </listitem>
...@@ -1531,30 +1527,28 @@ ...@@ -1531,30 +1527,28 @@
<para> <para>
Add function <link Add function <link
linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link> linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link>
to allow for more efficient lookup of relation names from filenodes (Andres to allow for more efficient lookup of relation names from filenodes
Freund) (Andres Freund)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add <structfield>parameter_default</> column to <link
linkend="information-schema"><structname>information_schema</></link> linkend="infoschema-parameters"><structname>information_schema.parameters</></link>
column <link view (Peter Eisentraut)
linkend="infoschema-parameters"><structfield>parameters.parameter_default</></link>
(Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link Make <link
linkend="infoschema-schemata"><structfield>information_schema.schemata</></link> linkend="infoschema-schemata"><structname>information_schema.schemata</></link>
show all accessible schema (Peter Eisentraut) show all accessible schemas (Peter Eisentraut)
</para> </para>
<para> <para>
Previously it only showed <emphasis>owned</> schemas. Previously it only showed schemas owned by the current user.
</para> </para>
</listitem> </listitem>
...@@ -1569,20 +1563,7 @@ ...@@ -1569,20 +1563,7 @@
<listitem> <listitem>
<para> <para>
Add aggregates <link Add control over which rows are passed
linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
<function>percentile_disc()</>, <link
linkend="functions-hypothetical-table"><function>rank()</></link>,
<function>dense_rank()</>, <function>percent_rank()</>,
<function>cume_dist()</>, and <link
linkend="functions-orderedset-table"><function>mode()</></link>
(Atri Sharma, Andrew Gierth)
</para>
</listitem>
<listitem>
<para>
Add control over which values are passed
into aggregate functions using the <link into aggregate functions using the <link
linkend="syntax-aggregates"><literal>FILTER</></link> clause linkend="syntax-aggregates"><literal>FILTER</></link> clause
(David Fetter) (David Fetter)
...@@ -1595,28 +1576,36 @@ ...@@ -1595,28 +1576,36 @@
linkend="syntax-aggregates"><literal>WITHIN GROUP</></link>) linkend="syntax-aggregates"><literal>WITHIN GROUP</></link>)
aggregates (Atri Sharma, Andrew Gierth, Tom Lane) aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
This allows aggregates that require sorted input. Add aggregates <link
linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
<function>percentile_disc()</>, <function>mode()</>, <link
linkend="functions-hypothetical-table"><function>rank()</></link>,
<function>dense_rank()</>, <function>percent_rank()</>, and
<function>cume_dist()</>
(Atri Sharma, Andrew Gierth)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow polymorphic aggregates to have non-polymorphic state data Support <link
types (Tom Lane) linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
</para> aggregate functions (Tom Lane)
<para>
This allows the declaration of aggregates like the built-in
aggregate <function>array_agg()</> in SQL.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <link Allow polymorphic aggregates to have non-polymorphic state data
linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link> types (Tom Lane)
aggregate functions (Tom Lane) </para>
<para>
This allows proper declaration of aggregates like the built-in
aggregate <function>array_agg()</> in SQL.
</para> </para>
</listitem> </listitem>
...@@ -1640,13 +1629,14 @@ ...@@ -1640,13 +1629,14 @@
<listitem> <listitem>
<para> <para>
Convert <link linkend="datatype-numeric"><type>NUMERIC</></link>s to Convert <link linkend="datatype-numeric"><type>numeric</></link>
<type>decimal</> values in <link linkend="plpython">PL/Python</link> values to <type>decimal</> in <link linkend="plpython">PL/Python</link>
(Szymon Guz, Ronan Dunklau) (Szymon Guz, Ronan Dunklau)
</para> </para>
<para> <para>
Previously these were converted to <type>float</>s. Previously such values were converted to Python <type>float</> values,
risking loss of precision.
</para> </para>
</listitem> </listitem>
...@@ -1711,27 +1701,19 @@ ...@@ -1711,27 +1701,19 @@
<para> <para>
Make libpq's <link Make libpq's <link
linkend="libpq-pqconndefaults"><function>PQconndefaults()</></link> linkend="libpq-pqconndefaults"><function>PQconndefaults()</></link>
ignore invalid service files (Steve Singer, Bruce Momjian) function ignore invalid service files (Steve Singer, Bruce Momjian)
</para> </para>
<para> <para>
Previously it returned NULL. Previously it returned NULL if an incorrect service file was
encountered.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow libpq to support <acronym>TLS</> versions beyond Accept <acronym>TLS</> protocol versions beyond <literal>TLSv1</>
<literal>TLSv1</> (Marko Kreen) in libpq (Marko Kreen)
</para>
</listitem>
<listitem>
<para>
Document that libpq's <link
linkend="libpq-pqclientencoding"><function>PQclientEncoding()</></link>
returns <literal>-1</> for an encoding lookup failure (Bruce
Momjian)
</para> </para>
</listitem> </listitem>
...@@ -1746,15 +1728,14 @@ ...@@ -1746,15 +1728,14 @@
<listitem> <listitem>
<para> <para>
Add <link Add <xref linkend="APP-CREATEUSER"> option <option>-g</>
linkend="APP-CREATEUSER"><application>createuser</></link> to specify role membership (Chistopher Browne)
<option>-g</> to specify role membership (Chistopher Browne)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="APP-VACUUMDB"><application>vacuumdb</></link> Add <xref linkend="APP-VACUUMDB">
option <option>--analyze-in-stages</> to analyze in stages of option <option>--analyze-in-stages</> to analyze in stages of
increasing granularity (Peter Eisentraut) increasing granularity (Peter Eisentraut)
</para> </para>
...@@ -1766,61 +1747,64 @@ ...@@ -1766,61 +1747,64 @@
<listitem> <listitem>
<para> <para>
Allow <link linkend="pgxlogdump"><application>pg_xlogdump</></link> Make <xref linkend="APP-PGRESETXLOG"> with option <option>-n</>
to report a live log stream with <option>--follow</> (Heikki output current and potentially changed values (Rajeev Rastogi)
Linnakangas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link linkend="APP-PGRESETXLOG"><command>pg_resetxlog Make <xref linkend="app-initdb"> throw error for incorrect locale
-n</></link> output current and potentially changed values settings, rather than silently falling back to a default choice
(Rajeev Rastogi) (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link> Make <xref linkend="app-pg-ctl"> return exit code <literal>4</> for
C array definitions (Michael Meskes) an inaccessible data directory (Amit Kapila, Bruce Momjian)
</para> </para>
</listitem>
<listitem>
<para> <para>
Have <link linkend="ecpg">ECPG</link> properly handle nesting This behavior more closely matches the Linux Standard Base
requirements in C and <acronym>SQL</> mode for C-style comments (<acronym>LSB</>) Core Specification.
(Michael Meskes)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link linkend="app-pg-ctl"><application>pg_ctl</></link> On Windows, ensure that a non-absolute <option>-D</> path
return <literal>4</> for an inaccessible data directory specification is interpreted relative
specification (Amit Kapila, Bruce Momjian) to <xref linkend="app-pg-ctl">'s current directory
(Kumar Rajeev Rastogi)
</para>
<para>
Previously it would be interpreted relative to whichever directory
the underlying Windows service was started in.
</para> </para>
</listitem>
<listitem>
<para> <para>
This more closely matches the Linux Standard Base (<acronym>LSB</>) Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
Core Specification. C array definitions (Michael Meskes)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
On Windows, interpret <link Make <link linkend="ecpg">ECPG</link> properly handle nesting
linkend="app-pg-ctl"><application>pg_ctl</></link>'s non-absolute of C-style comments in both C and <acronym>SQL</> text
path <option>-D</> directories relative to <application>pg_ctl</>'s (Michael Meskes)
current directory (Kumar Rajeev Rastogi)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
<title><link linkend="APP-PSQL"><application>psql</></link></title> <title><xref linkend="APP-PSQL"></title>
<itemizedlist> <itemizedlist>
...@@ -1834,7 +1818,7 @@ ...@@ -1834,7 +1818,7 @@
<listitem> <listitem>
<para> <para>
Suppress "No rows" in <application>psql</> <link Suppress <quote>No rows</quote> output in <application>psql</> <link
linkend="APP-PSQL-meta-commands"><option>expanded</></link> linkend="APP-PSQL-meta-commands"><option>expanded</></link>
mode when the footer is disabled (Bruce Momjian) mode when the footer is disabled (Bruce Momjian)
</para> </para>
...@@ -1842,7 +1826,7 @@ ...@@ -1842,7 +1826,7 @@
<listitem> <listitem>
<para> <para>
Allow Control-C to abort <application>psql</> hung at connection Allow Control-C to abort <application>psql</> when hung at connection
startup (Peter Eisentraut) startup (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
...@@ -1856,39 +1840,39 @@ ...@@ -1856,39 +1840,39 @@
<listitem> <listitem>
<para> <para>
Have <application>psql</> <command>\db+</> show tablespace options Make <application>psql</> <command>\db+</> show tablespace options
(Magnus Hagander) (Magnus Hagander)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <application>psql</> <command>\do+</> display the functions Make <application>psql</> <command>\do+</> display the functions
which implement the operators (Marko Tiikkaja) which implement the operators (Marko Tiikkaja)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <application>psql</> <command>\d+</> output an Make <application>psql</> <command>\d+</> output an
<literal>OID</> line only if an <literal>oid</literal> column exists in a table <literal>OID</> line only if an <literal>oid</literal> column
(Bruce Momjian) exists in a table (Bruce Momjian)
</para> </para>
<para> <para>
Previously, the presence or absence of an <literal>oid</literal> column was always Previously, the presence or absence of an <literal>oid</literal>
reported. column was always reported.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <command>\d</> show disabled system triggers (Bruce Make <command>\d</> show disabled system triggers (Bruce
Momjian) Momjian)
</para> </para>
<para> <para>
Previously if you disabled all triggers, only user triggers Previously, if you disabled all triggers, only user triggers
would show as disabled. would show as disabled.
</para> </para>
</listitem> </listitem>
...@@ -1902,9 +1886,9 @@ ...@@ -1902,9 +1886,9 @@
<listitem> <listitem>
<para> <para>
Output the row count at the end of Output the row count at the end
<application>psql</> <command>\copy</> just like <link of <application>psql</> <command>\copy</> just
linkend="SQL-COPY"><command>COPY</></link> (Kumar Rajeev Rastogi) like <xref linkend="SQL-COPY"> (Kumar Rajeev Rastogi)
</para> </para>
</listitem> </listitem>
...@@ -1944,12 +1928,13 @@ ...@@ -1944,12 +1928,13 @@
<listitem> <listitem>
<para> <para>
In <application>psql</>, output the written history file name In <application>psql</>, display the history file name written by
(<command>\s</>) without adding an absolute path prefix (Tom Lane) <command>\s</> without converting it to an absolute path (Tom Lane)
</para> </para>
<para> <para>
The previous output was inconsistent. The code previously attempted to convert a relative file name to
an absolute path for display, but frequently got it wrong.
</para> </para>
</listitem> </listitem>
...@@ -1960,36 +1945,35 @@ ...@@ -1960,36 +1945,35 @@
</sect4> </sect4>
<sect4> <sect4>
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title> <title><xref linkend="APP-PGDUMP"></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Allow <link Allow <xref linkend="APP-PGRESTORE"> options
linkend="APP-PGRESTORE"><application>pg_restore</></link> options
<option>-I</>, <option>-P</>, <option>-T</> and <option>-n</> <option>-I</>, <option>-P</>, <option>-T</> and <option>-n</>
to be specified multiple times (Heikki Linnakangas) to be specified multiple times (Heikki Linnakangas)
</para> </para>
<para> <para>
This allows multiple restore object to be specified. This allows multiple objects to be restored in one operation.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <literal>IF EXISTS</> clauses when removing old objects during Optionally add <literal>IF EXISTS</> clauses to the <command>DROP</>
dump and restore (Pavel Stehule) commands emitted when removing old objects during a restore (Pavel
Stehule)
</para> </para>
<para> <para>
This suppresses errors when removing old objects. This change prevents unnecessary errors when removing old objects.
The new <option>--if-exists</> option to <link The new <option>--if-exists</> option
linkend="APP-PGDUMP"><application>pg_dump</></link>, <link for <xref linkend="APP-PGDUMP">, <xref linkend="APP-PG-DUMPALL">,
linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, and and <xref linkend="APP-PGRESTORE"> is only available
<link linkend="APP-PGRESTORE"><application>pg_restore</></link> when <option>--clean</> is also specified.
is only available when <option>--clean</> is also specified.
</para> </para>
</listitem> </listitem>
...@@ -1998,7 +1982,7 @@ ...@@ -1998,7 +1982,7 @@
</sect4> </sect4>
<sect4> <sect4>
<title><link linkend="app-pgbasebackup"><application>pg_basebackup</></link></title> <title><xref linkend="app-pgbasebackup"></title>
<itemizedlist> <itemizedlist>
...@@ -2024,7 +2008,7 @@ ...@@ -2024,7 +2008,7 @@
<listitem> <listitem>
<para> <para>
Allow network-streams base backups to be throttled (Antonin Houska) Allow network-stream base backups to be throttled (Antonin Houska)
</para> </para>
<para> <para>
...@@ -2046,25 +2030,29 @@ ...@@ -2046,25 +2030,29 @@
<listitem> <listitem>
<para> <para>
Improve the way tuples are frozen, to preserve forensic information Improve the way tuples are frozen to preserve forensic information
(Robert Haas, Andres Freund) (Robert Haas, Andres Freund)
</para> </para>
<para> <para>
Code that inspects tuple flag bits will need to be modified. This change removes the main objection to freezing tuples as soon
as possible. Code that inspects tuple flag bits will need to be
modified.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
No longer require function prototypes for function marked with the No longer require function prototypes for functions marked with the
<link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></link> <link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></link>
macro (Peter Eisentraut) macro (Peter Eisentraut)
</para> </para>
<para> <para>
This eliminates needless boilerplate prototypes whose lack This change eliminates the need to write boilerplate prototypes.
generates compiler warnings. Note that the <function>PG_FUNCTION_INFO_V1</> macro must appear
before the corresponding function definition to avoid compiler
warnings.
</para> </para>
</listitem> </listitem>
...@@ -2082,8 +2070,8 @@ ...@@ -2082,8 +2070,8 @@
<listitem> <listitem>
<para> <para>
Add <acronym>API</> for memory allocations over one gigabyte (Noah Add an <acronym>API</> to allow memory allocations over one gigabyte
Misch) (Noah Misch)
</para> </para>
</listitem> </listitem>
...@@ -2096,8 +2084,8 @@ ...@@ -2096,8 +2084,8 @@
<listitem> <listitem>
<para> <para>
Add <function>printf()</> modifier "z" to specify <type>size_t</> Support <function>printf()</> size modifier <literal>z</> to
values (Andres Freund) print <type>size_t</> values (Andres Freund)
</para> </para>
</listitem> </listitem>
...@@ -2146,7 +2134,7 @@ ...@@ -2146,7 +2134,7 @@
<listitem> <listitem>
<para> <para>
Reduce the number of semaphores required by Reduce the number of semaphores required by
<option>--disable-spinlocks</> (Robert Haas) <option>--disable-spinlocks</> builds (Robert Haas)
</para> </para>
</listitem> </listitem>
...@@ -2167,8 +2155,8 @@ ...@@ -2167,8 +2155,8 @@
<listitem> <listitem>
<para> <para>
Add make targets <option>check-tests</> and Add make targets <option>check-tests</> and
<option>installcheck-tests</> which allow per-test specification <option>installcheck-tests</>, which allow selection of individual
(Andrew Dunstan) tests to be run (Andrew Dunstan)
</para> </para>
</listitem> </listitem>
...@@ -2178,7 +2166,7 @@ ...@@ -2178,7 +2166,7 @@
</para> </para>
<para> <para>
Its functionality is now done by the default build rules. The default build rules now include all the formerly-optional tests.
</para> </para>
</listitem> </listitem>
...@@ -2197,7 +2185,7 @@ ...@@ -2197,7 +2185,7 @@
<listitem> <listitem>
<para> <para>
Add configure flag that appends custom text to the Add a <application>configure</> flag that appends custom text to the
<envar>PG_VERSION</> string (Oskari Saarenmaa) <envar>PG_VERSION</> string (Oskari Saarenmaa)
</para> </para>
...@@ -2214,7 +2202,7 @@ ...@@ -2214,7 +2202,7 @@
<listitem> <listitem>
<para> <para>
Various security and sanity fixes reported by the Various minor security and sanity fixes reported by the
<productname>Coverity</> scanner (Stephen Frost) <productname>Coverity</> scanner (Stephen Frost)
</para> </para>
</listitem> </listitem>
...@@ -2228,7 +2216,7 @@ ...@@ -2228,7 +2216,7 @@
<listitem> <listitem>
<para> <para>
Improve <application>Emacs</> configuration file Improve sample <application>Emacs</> configuration file
<filename>emacs.samples</> (Peter Eisentraut) <filename>emacs.samples</> (Peter Eisentraut)
</para> </para>
...@@ -2239,26 +2227,28 @@ ...@@ -2239,26 +2227,28 @@
<listitem> <listitem>
<para> <para>
Allow <application>pgindent</> to be supplied a command-line list Allow <application>pgindent</> to accept a command-line list
of typedefs (Bruce Momjian) of typedefs (Bruce Momjian)
</para> </para>
<para> <para>
<application>Pgindent</> is also now smarter about blank lines <application>pgindent</> is also now smarter about blank lines
around preprocessor conditionals. around preprocessor conditionals.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Avoid most uses of <command>dlltool</command> in <productname>Cygwin</> and Avoid most uses of <command>dlltool</command>
in <productname>Cygwin</> and
<productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue) <productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow client-only installs for <acronym>MSVC</> (Windows) builds (MauMau) Support client-only installs in <acronym>MSVC</> (Windows) builds
(MauMau)
</para> </para>
</listitem> </listitem>
...@@ -2273,80 +2263,94 @@ ...@@ -2273,80 +2263,94 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="pgprewarm"><application>pg_prewarm</></link> Add <xref linkend="pgprewarm"> extension to preload relation data
extension to preload relation data into the shared buffer cache into the shared buffer cache at server start (Robert Haas)
(Robert Haas)
</para> </para>
<para> <para>
This is useful at server start to produce more consistent This allows reaching full operating performance more quickly.
performance.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <acronym>UUID</> random number generator Add <acronym>UUID</> random number generator
<function>gen_random_uuid()</> to <link <function>gen_random_uuid()</> to <xref linkend="pgcrypto">
linkend="pgcrypto"><application>pgcrypto</></link> (Oskari (Oskari Saarenmaa)
Saarenmaa)
</para> </para>
<para> <para>
This allows the creation of version 4 <acronym>UUID</>s without This allows creation of version 4 <acronym>UUID</>s without
requiring the installation of <literal>uuid-ossp</literal>. requiring installation of <xref linkend="uuid-ossp">.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add option to include trigger execution time to <link Allow <xref linkend="uuid-ossp"> to work with
linkend="auto-explain"><application>auto_explain</></link> the <systemitem>BSD</> or <systemitem>e2fsprogs</> UUID libraries,
(Horiguchi Kyotaro) not only the <systemitem>OSSP</> UUID library (Matteo Beccati)
</para>
<para>
This improves the <application>uuid-ossp</> module's portability
since it no longer has to have the increasingly-obsolete OSSP
library. The module's name is now rather a misnomer, but we won't
change it.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Fix <link linkend="pgstattuple"><application>pgstattuple</></link> Add option to <xref linkend="auto-explain"> to include trigger
to not report rows from uncommitted transactions as dead execution time (Horiguchi Kyotaro)
(Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link linkend="pgstattuple"><application>pgstattuple</></link> Fix <xref linkend="pgstattuple"> to not report rows from
functions use <type>regclass</type>-type arguments (Satoshi Nagayasu) uncommitted transactions as dead (Robert Haas)
</para>
</listitem>
<listitem>
<para>
Make <xref linkend="pgstattuple"> functions
use <type>regclass</type>-type arguments (Satoshi Nagayasu)
</para>
<para>
While <type>text</type>-type arguments are still supported, they
may be removed in a future major release.
</para> </para>
</listitem>
<listitem>
<para> <para>
While <type>text</type>-type arguments are still supported, they will be Improve consistency of <xref linkend="pgrowlocks"> output to honor
removed in a later major release. snapshot rules more consistently (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve consistency of <link Improve <xref linkend="pgtrgm">'s choice of trigrams for indexed
linkend="pgrowlocks"><application>pgrowlocks</></link> output to regular expression searches by discouraging the selection of
honor snapshot rules more consistently (Robert Haas) trigrams containing whitespace (Alexander Korotkov)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve <link linkend="pgtrgm"><application>pg_trgm</>'s</link> Allow <xref linkend="pgxlogdump"> to report a live log stream
generation of trigrams for indexed regular expression searches by with <option>--follow</> (Heikki Linnakangas)
discouraging the indexing of trigrams containing whitespace (Alexander
Korotkov)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Store <link linkend="cube"><type>cube</></link> data more compactly Store <xref linkend="cube"> data more compactly (Stas Kelvich)
(Stas Kelvich)
</para> </para>
<para> <para>
...@@ -2357,30 +2361,29 @@ ...@@ -2357,30 +2361,29 @@
<listitem> <listitem>
<para> <para>
Reduce <link linkend="vacuumlo"><application>vacuumlo</></link> Reduce <xref linkend="vacuumlo"> client-side memory usage by using
client-side memory usage by using a cursor (Andrew Dunstan) a cursor (Andrew Dunstan)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Dramatically reduce memory consumption in <link Dramatically reduce memory consumption
linkend="pgupgrade"><application>pg_upgrade</></link> (Bruce in <xref linkend="pgupgrade"> (Bruce Momjian)
Momjian)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Pass <link linkend="pgupgrade"><application>pg_upgrade</></link> Pass <xref linkend="pgupgrade"> user name (<option>-U</> option) to
user names (<option>-U</>) to analyze scripts (Bruce Momjian) analyze scripts (Bruce Momjian)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
<title><link linkend="pgbench"><application>pgbench</></link></title> <title><xref linkend="pgbench"></title>
<itemizedlist> <itemizedlist>
...@@ -2397,20 +2400,22 @@ ...@@ -2397,20 +2400,22 @@
<listitem> <listitem>
<para> <para>
Add <application>pgbench</> option (<option>--rate</>) to control Add long option names to <application>pgbench</> (Fabien Coelho)
the transaction rate (Fabien Coelho)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <option>--progress</> output option to <application>pgbench</> (Fabien Coelho) Add <application>pgbench</> option <option>--rate</> to control
the transaction rate (Fabien Coelho)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add long options to <application>pgbench</> (Fabien Coelho) Add <application>pgbench</> option <option>--progress</> to
print periodic progress reports
(Fabien Coelho)
</para> </para>
</listitem> </listitem>
...@@ -2419,19 +2424,19 @@ ...@@ -2419,19 +2424,19 @@
</sect4> </sect4>
<sect4> <sect4>
<title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title> <title><xref linkend="pgstatstatements"></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Have <application>pg_stat_statements</> use a flat file for query Make <application>pg_stat_statements</> use a file, rather than
text storage (Peter Geoghegan) shared memory, for query text storage (Peter Geoghegan)
</para> </para>
<para> <para>
This removes the limitation on query text length, and allows a This removes the previous limitation on query text length, and
higher default number of unique statements to be tracked. allows a higher number of unique statements to be tracked by default.
</para> </para>
</listitem> </listitem>
...@@ -2451,7 +2456,15 @@ ...@@ -2451,7 +2456,15 @@
<para> <para>
This allows monitoring tools to only fetch query text for newly This allows monitoring tools to only fetch query text for newly
created entries, as reported in <structfield>queryid</>. created entries, improving performance for repeated querying of the
statistics.
</para>
</listitem>
<listitem>
<para>
Save the statistics file into <filename>$PGDATA/pg_stat</> at server
shutdown, rather than <filename>$PGDATA/global</> (Fujii Masao)
</para> </para>
</listitem> </listitem>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment