Commit 979f8f04 authored by Tom Lane's avatar Tom Lane

Make an editorial pass over the 9.2 release notes.

A very large number of small improvements ...
parent 932a2719
...@@ -4196,7 +4196,9 @@ SET xmloption TO { DOCUMENT | CONTENT }; ...@@ -4196,7 +4196,9 @@ SET xmloption TO { DOCUMENT | CONTENT };
</indexterm> </indexterm>
<para> <para>
The <type>json</type> data type can be used to store JSON data. Such The <type>json</type> data type can be used to store JSON (JavaScript
Object Notation) data, as specified in <ulink
url="http://www.ietf.org/rfc/rfc4627.txt">RFC 4627</ulink>. Such
data can also be stored as <type>text</type>, but the data can also be stored as <type>text</type>, but the
<type>json</type> data type has the advantage of checking that each <type>json</type> data type has the advantage of checking that each
stored value is a valid JSON value. There are also related support stored value is a valid JSON value. There are also related support
......
...@@ -9620,7 +9620,7 @@ table2-mapping ...@@ -9620,7 +9620,7 @@ table2-mapping
<sect1 id="functions-json"> <sect1 id="functions-json">
<title>JSON Functions</title> <title>JSON Functions</title>
<indexterm zone="datatype-json"> <indexterm zone="functions-json">
<primary>JSON</primary> <primary>JSON</primary>
<secondary>Functions and operators</secondary> <secondary>Functions and operators</secondary>
</indexterm> </indexterm>
......
...@@ -45,92 +45,95 @@ ...@@ -45,92 +45,95 @@
</para> </para>
<sect3> <sect3>
<title>Functions</title> <title>System Catalogs</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Ensure that <link Remove the <structfield>spclocation</> field from <link
linkend="functions-xml-processing"><function>xpath()</></link> linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
escapes special characters in string values (Florian Pflug) (Magnus Hagander)
</para> </para>
<para> <para>
Without this it is possible to output illegal This field was duplicative of the symbolic links that actually define
<acronym>XML</acronym>. tablespace locations, and thus risked errors of omission when moving
a tablespace. This change allows tablespace directories to be moved
while the server is down, by manually adjusting the symbolic links.
To replace this field, we have added <link
linkend="functions-info-catalog-table"><function>pg_tablespace_location()</></link>
to allow querying of the symbolic links.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</> Move <type>tsvector</> most-common-element statistics to new
operator (Robert Haas) <link linkend="view-pg-stats"><structname>pg_stats</></link> columns
(Alexander Korotkov)
</para> </para>
<para> <para>
Users should now use hstore(text, text). Since Consult <structfield>most_common_elems</>
<productname>PostgreSQL</productname> 9.0, a warning message is and <structfield>most_common_elem_freqs</> for the data formerly
emitted when an operator named =&gt; is created because available in <structfield>most_common_vals</>
the <acronym>SQL</acronym> standard reserves that token for and <structfield>most_common_freqs</> for a <type>tsvector</> column.
another use.
</para> </para>
</listitem> </listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Functions</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Have <link Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</>
linkend="functions-admin-dbobject"><function>pg_relation_size()</></link> operator (Robert Haas)
and friends return NULL if the object does not exist (Phil Sorber)
</para> </para>
<para> <para>
This prevents queries that call these functions from returning Users should now use <function>hstore(text, text)</>. Since
errors during concurrent drop operations. <productname>PostgreSQL</productname> 9.0, a warning message has been
emitted when an operator named <literal>=&gt;</> is created because
the <acronym>SQL</acronym> standard reserves that token for
another use.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove the <link Ensure that <link
linkend="catalog-pg-tablespace"><structname>spclocation</></link> linkend="functions-xml-processing"><function>xpath()</></link>
field from <structname>pg_tablespace</> (Magnus Hagander) escapes special characters in string values (Florian Pflug)
</para> </para>
<para> <para>
This field was duplicative of the symbolic links already Without this it is possible to output invalid <acronym>XML</acronym>.
present in the data directory. This allows tablespace
directories to be moved while the server is down. Also add
<function>pg_tablespace_location()</> to allow querying of the
symbolic links.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Move <type>tsvector</> most-common-element statistics to new Make <link
<link linkend="view-pg-stats"><structname>pg_stats</></link> columns linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
(Alexander Korotkov) and friends return NULL if the object does not exist (Phil Sorber)
</para> </para>
<para> <para>
Consult <structname>most_common_elems</> This prevents queries that call these functions from returning
and <structname>most_common_elem_freqs</> for the data formerly errors immediately after a concurrent <command>DROP</>.
available in <structname>most_common_vals</>
and <structname>most_common_freqs</>.
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect4>
<title>Temporal Functions</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Have <link Make <link
linkend="functions-datetime-extract"><function>EXTRACT</></link> of linkend="functions-datetime-extract"><function>EXTRACT</></link> of
a non-timezone-aware value measure the epoch from local midnight, a non-timezone-aware value measure the epoch from local midnight,
not <acronym>UTC</acronym> midnight (Tom Lane) not <acronym>UTC</acronym> midnight (Tom Lane)
...@@ -150,9 +153,8 @@ ...@@ -150,9 +153,8 @@
</para> </para>
<para> <para>
Previously, <command>SELECT '04:00:00 Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
yesterday'::timestamp</command> returned yesterday's date at returned yesterday's date at midnight.
midnight.
</para> </para>
</listitem> </listitem>
...@@ -170,8 +172,7 @@ ...@@ -170,8 +172,7 @@
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4>
</sect3> </sect3>
...@@ -195,7 +196,7 @@ ...@@ -195,7 +196,7 @@
<listitem> <listitem>
<para> <para>
No longer auto-lowercase procedural language names (Robert Haas) No longer forcibly lowercase procedural language names (Robert Haas)
</para> </para>
<para> <para>
...@@ -207,6 +208,18 @@ ...@@ -207,6 +208,18 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Change system-generated names of foreign key enforcement triggers
(Tom Lane)
</para>
<para>
This change ensures that the triggers fire in the correct order in
some corner cases involving self-referential foreign key constraints.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</sect3> </sect3>
...@@ -225,9 +238,11 @@ ...@@ -225,9 +238,11 @@
</para> </para>
<para> <para>
Previously, such usage was only properly expanded when isolated by Previously, such references were treated oddly when not separated by
whitespace, e.g. <literal>'FOO'BAR</> was output as <literal>FOO whitespace from adjacent text. For example <literal>'FOO'BAR</> was
BAR</>. output as <literal>FOO BAR</> (unexpected insertion of a space) and
<literal>FOO'BAR'BAZ</> was output unchanged (not removing the quotes
as most would expect).
</para> </para>
</listitem> </listitem>
...@@ -241,40 +256,27 @@ ...@@ -241,40 +256,27 @@
</para> </para>
<para> <para>
Users must supply double-quotes in the command arguments to Users must now include double-quotes in the command arguments if
accomplish double-quoting behavior. quoting is wanted.
</para>
</listitem>
<listitem>
<para>
Disable prompting for the user name in <link
linkend="APP-DROPDB"><application>dropdb</></link> unless
<option>--interactive</> is specified (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
No longer have <link <link linkend="APP-CREATEUSER"><application>createuser</></link>
linkend="APP-CREATEUSER"><application>createuser</></link> prompt no longer prompts for option settings by default (Peter Eisentraut)
for settings (Peter Eisentraut)
</para> </para>
<para> <para>
Previously <application>createuser</> prompted regarding various Use <option>--interactive</> to obtain the old behavior.
user settings.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove <link linkend="APP-INITDB"><application>initdb</></link> Disable prompting for the user name in <link
support for the crypt authentication method (Peter Eisentraut) linkend="APP-DROPUSER"><application>dropuser</></link> unless
</para> <option>--interactive</> is specified (Peter Eisentraut)
<para>
This was removed from the backend years ago.
</para> </para>
</listitem> </listitem>
...@@ -286,50 +288,51 @@ ...@@ -286,50 +288,51 @@
<title>Server Settings</title> <title>Server Settings</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Remove the <filename>postgresql.conf</filename> setting Add server parameters for specifying the <link
<varname>silent_mode</> (Heikki Linnakangas) linkend="guc-ssl-ca-file">locations of server-side
<acronym>SSL</acronym> files</link> (Peter Eisentraut)
</para> </para>
<para> <para>
This behavior could already be accomplished with <command>pg_ctl This allows changing the names and locations of the files that were
-l postmaster.log</>. previously hard-coded as <filename>server.crt</>,
<filename>server.key</>, <filename>root.crt</>, and
<filename>root.crl</> in the data directory.
<emphasis>The server will no longer examine <filename>root.crt</> or
<filename>root.crl</> by default</emphasis>; to load these files, the
associated parameters must be set to non-default values.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove <acronym>GUC</acronym> <varname>wal_sender_delay</>, Remove the <varname>silent_mode</> parameter (Heikki Linnakangas)
as it is no longer needed (Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Remove the <varname>custom_variable_classes</> Similar behavior can be obtained with <command>pg_ctl start
<filename>postgresql.conf</filename> parameter (Tom Lane) -l postmaster.log</>.
</para> </para>
</listitem>
<listitem>
<para> <para>
The checking provided by this setting was dubious. Now any Remove the <varname>wal_sender_delay</> parameter,
setting can be prefixed by any class name. as it is no longer needed (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add GUC <link linkend="guc-ssl-key-file">parameters</link> for Remove the <varname>custom_variable_classes</> parameter (Tom Lane)
specifying the locations of server-side <acronym>SSL</acronym>
files (Peter Eisentraut)
</para> </para>
<para> <para>
This allows changing the location of the files that were previously The checking provided by this setting was dubious. Now any
hard-coded to <filename>server.crt</>, <filename>server.key</>, setting can be prefixed by any class name.
<filename>root.crt</>, <filename>root.crl</>. <acronym>CA</>
(crt) and <acronym>CRL</acronym> files no longer have default
names, and if specified, these files must exist.
</para> </para>
</listitem> </listitem>
...@@ -344,26 +347,28 @@ ...@@ -344,26 +347,28 @@
<listitem> <listitem>
<para> <para>
Rename <link Rename <link
linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structname>.procpid</> linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structfield>.procpid</>
to <structname>pid</>, to match other system tables (Magnus Hagander) to <structfield>pid</>, to match other system tables (Magnus Hagander)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Create a separate <structname>pg_stat_activity</> column to Create a separate <structfield>pg_stat_activity</> column to
report state information, e.g. idle (Scott Mead, Magnus Hagander) report process state (Scott Mead, Magnus Hagander)
</para> </para>
<para> <para>
The last query values are preserved, allowing for enhanced analysis. The previous <structfield>query</> and <structfield>query_start</>
values now remain available for an idle session, allowing enhanced
analysis.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Rename <structname>pg_stat_activity.current_query</> to Rename <structname>pg_stat_activity</>.<structfield>current_query</> to
<structname>query</> because it is not cleared when the query <structfield>query</> because it is not cleared when the query
completes (Magnus Hagander) completes (Magnus Hagander)
</para> </para>
</listitem> </listitem>
...@@ -371,22 +376,23 @@ ...@@ -371,22 +376,23 @@
<listitem> <listitem>
<para> <para>
Change all <acronym>SQL</acronym>-level statistics timing values Change all <acronym>SQL</acronym>-level statistics timing values
to float8-stored milliseconds (Tom Lane) to be <type>float8</> columns measured in milliseconds (Tom Lane)
</para> </para>
<para> <para>
The columns affected are: The columns affected are
<structname>pg_stat_user_functions.total_time</>, <structname>pg_stat_user_functions</>.<structfield>total_time</>,
<structname>pg_stat_user_functions.self_time</>, <structname>pg_stat_user_functions</>.<structfield>self_time</>,
<structname>pg_stat_xact_user_functions.total_time</>, <structname>pg_stat_xact_user_functions</>.<structfield>total_time</>,
<structname>pg_stat_xact_user_functions.self_time</>. and
<structname>pg_stat_xact_user_functions</>.<structfield>self_time</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Change <application>pg_stat_statements</>' Change <application>pg_stat_statements</>'
<structname>total_time</> column to be measured in milliseconds <structfield>total_time</> column to be measured in milliseconds
(Tom Lane) (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -420,83 +426,95 @@ ...@@ -420,83 +426,95 @@
</para> </para>
<para> <para>
This is often called "index-only scans", a feature which now enables This feature is often called <firstterm>index-only scans</>.
the use of indexes with additional columns, or "covering indexes". Heap access can be skipped for heap pages containing only tuples that
This is possible for heap pages with exclusively all-visible are visible to all sessions, as reported by the visibility map; so
tuples, as reported by the visibility map. The visibility map was the benefit applies mainly to mostly-static data. The visibility map
made crash-safe as a necessary part of implementing this feature. was made crash-safe as a necessary part of implementing this feature.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow frequently uncontended locks to be recorded using a new Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
fast-path lock mechanism (Robert Haas) GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
Lane)
</para>
<para>
SP-GiST is comparable to GiST in flexibility, but supports
unbalanced partitioned search structures rather than balanced
trees. For suitable problems, SP-GiST can be faster than GiST in both
index build time and search time.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Move the frequently accessed members of the <structname>PGPROC</> Allow group commit to work effectively under heavy load (Peter
shared memory array to a separate section, for performance (Pavan Geoghegan, Simon Riggs, Heikki Linnakangas)
Deolasee, Heikki Linnakangas, Robert Haas) </para>
<para>
Previously, batching of commits became ineffective as the write
workload increased, because of internal lock contention.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce overhead of creating virtual transaction id locks (Robert Allow uncontended locks to be managed using a new
Haas) fast-path lock mechanism (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce overhead for shared invalidation cache messages (Robert Reduce overhead of creating virtual transaction id locks (Robert
Haas) Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve <command>COPY</command> performance by adding tuples to Reduce the overhead of serializable isolation level locks (Dan
the heap in batches (Heikki Linnakangas) Ports)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve GiST geometric type index performance by producing better Improve PowerPC and Itanium spinlock performance (Manabu Ori,
trees with less memory allocation overhead (Alexander Korotkov) Robert Haas, Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow hint bits to be set sooner for temporary and unlogged tables Reduce overhead for shared invalidation cache messages (Robert
(Robert Haas) Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow sorting to be performed by inlined and faster, Move the frequently accessed members of the <structname>PGPROC</>
non-<acronym>SQL</acronym>-callable comparison functions (Peter shared memory array to a separate array (Pavan
Geoghegan, Robert Haas, Tom Lane) Deolasee, Heikki Linnakangas, Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned Improve <command>COPY</command> performance by adding tuples to
GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom the heap in batches (Heikki Linnakangas)
Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
SP-GiST is comparable to GiST in flexibility, but supports Improve GiST index performance for geometric data types by producing
non-balanced partitioned search structures rather than balanced better trees with less memory allocation overhead (Alexander Korotkov)
trees. CLARIFY?
</para> </para>
</listitem> </listitem>
...@@ -509,56 +527,56 @@ ...@@ -509,56 +527,56 @@
<listitem> <listitem>
<para> <para>
Take fewer <acronym>MVCC</acronym> snapshots, for performance Allow hint bits to be set sooner for temporary and unlogged tables
(Robert Haas) (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have the number of clog buffers scale based on <link Allow sorting to be performed by inlined,
linkend="guc-shared-buffers"><varname>shared_buffers</></link> non-<acronym>SQL</acronym>-callable comparison functions (Peter
(Robert Haas, Simon Riggs, Tom Lane) Geoghegan, Robert Haas, Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Reduce the overhead of serializable isolation level locks (Dan Take fewer <acronym>MVCC</acronym> snapshots
Ports) (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow group commit to work effectively under heavy load (Peter Make the number of CLOG buffers scale based on <link
Geoghegan, Simon Riggs, Heikki Linnakangas) linkend="guc-shared-buffers"><varname>shared_buffers</></link>
(Robert Haas, Simon Riggs, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Previously, batching of commits became ineffective as the write Improve performance of buffer pool scans that occur when tables or
workload increased because of internal lock contention. databases are dropped (Jeff Janes, Simon Riggs)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve PowerPC and Itanium spinlock performance (Manabu Ori, Improve performance of checkpointer's fsync-request queue
Robert Haas, Tom Lane) when many tables are being dropped or truncated (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve performance of buffer pool scans that occur when tables or Pass the safe number of file descriptors to child processes on Windows
databases are dropped (Jeff Janes, Simon Riggs) (Heikki Linnakangas)
</para> </para>
</listitem>
<listitem>
<para> <para>
Improve performance of checkpoint process's fsync-request queue This allows Windows sessions to use more open file descriptors.
when many tables are being dropped or truncated (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -573,20 +591,21 @@ ...@@ -573,20 +591,21 @@
<listitem> <listitem>
<para> <para>
Create a dedicated worker process to perform checkpoints (Simon Create a dedicated background process to perform checkpoints (Simon
Riggs) Riggs)
</para> </para>
<para> <para>
Formerly the background writer did dirty page writing and Formerly the background writer did both dirty-page writing and
checkpointing. checkpointing. Separating this into two processes allows each goal
to be accomplished more predictably.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve asynchronous commit behavior by waking up sooner (Simon Improve asynchronous commit behavior by waking the walwriter sooner
Riggs) (Simon Riggs)
</para> </para>
<para> <para>
...@@ -600,9 +619,8 @@ ...@@ -600,9 +619,8 @@
<listitem> <listitem>
<para> <para>
Allow the bgwriter, walwriter, checkpointer, <link Allow the bgwriter, walwriter, checkpointer, statistics collector,
linkend="monitoring-stats">statistics collector</link>, log log collector, and archiver background processes to sleep more
collector, and archiver background processes to sleep more
efficiently during periods of inactivity (Peter Geoghegan, Tom Lane) efficiently during periods of inactivity (Peter Geoghegan, Tom Lane)
</para> </para>
...@@ -613,17 +631,6 @@ ...@@ -613,17 +631,6 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Pass the safe number of file descriptors to Windows processes
(Heikki Linnakangas)
</para>
<para>
This allows Windows sessions to cache more open file descriptors.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</sect4> </sect4>
...@@ -635,57 +642,72 @@ ...@@ -635,57 +642,72 @@
<listitem> <listitem>
<para> <para>
Improve the ability of the planner to choose parameterized plans Allow the planner to generate custom plans for specific parameter
values even when using prepared statements
(Tom Lane) (Tom Lane)
</para> </para>
<para> <para>
A prepared statement is now parsed, analyzed, and rewritten, In the past, a prepared statement always had a single
but not necessarily planned. When the prepared plan is executed <quote>generic</> plan that was used for all parameter values, which
with parameters, the planner might replan it for every constant, was frequently much inferior to the plans used for non-prepared
or it might execute a generic plan if its cost is close to that statements containing explicit constant values. Now, the planner
of a constant-specific plan. CLARIFY attempts to generate custom plans for specific parameter values.
A generic plan will only be used after custom plans have repeatedly
proven to provide no benefit. This change should eliminate the
performance penalties formerly seen from use of prepared statements
(including non-dynamic statements in PL/pgSQL).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow the optimizer to use <literal>CHECK</> constraints defined Improve the planner's ability to use nested loops with inner
on tables referenced in subqueries in planning decisions (Tom Lane) index scans (Tom Lane)
</para> </para>
<para> <para>
This is only enabled when <link The new <quote>parameterized path</> mechanism allows inner
linkend="guc-constraint-exclusion"><literal>constraint_exclusion indexscans to use values from relations that are more than one join
= on</></link>. level up from the scan. This can greatly improve performance in
situations where semantic restrictions (such as outer joins) limit
the allowed join orderings.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <literal>indexedcol op ANY(ARRAY[...])</> conditions to be Improve the planning <acronym>API</acronym> for foreign data wrappers
used in plain indexscans (Tom Lane) (Etsuro Fujita, Shigeru Hanada, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Improve heuristics for determining the type of unknown values by Wrappers can now provide multiple access <quote>paths</> for their
considering other data types involved in the operation (Tom Lane) tables, allowing more flexibility in join planning.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow better matching of index columns with non-default operator Recognize self-contradictory restriction clauses for non-table
qualifications (Tom Lane) relations (Tom Lane)
</para>
<para>
This is only enabled when <link
linkend="guc-constraint-exclusion"><varname>constraint_exclusion</></link>
is <literal>on</literal>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve the planner's ability to use nested loops with inner Allow <literal>indexed_col op ANY(ARRAY[...])</> conditions to be
index scans (Tom Lane) used in plain indexscans and index-only scans (Tom Lane)
</para>
<para>
Formerly such conditions could only be used in bitmap index scans.
</para> </para>
</listitem> </listitem>
...@@ -703,55 +725,55 @@ ...@@ -703,55 +725,55 @@
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect5>
<title>Optimizer Statistics</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Improve the ability to use statistics on columns referenced in Fix planner to handle indexes with duplicated columns more reliably
subqueries (Tom Lane) (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve optimizer estimation for subqueries using Collect and use element-frequency statistics for arrays (Alexander
<literal>DISTINCT</> (Tom Lane) Korotkov, Tom Lane)
</para>
<para>
This change improves selectivity estimation for the array
<literal>&lt;@</literal>, <literal>&amp;&amp;</literal>, and
<literal>@&gt;</literal> (containment and overlaps) array operators.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Collect and use element-frequency statistics for arrays (Alexander Allow statistics to be collected for foreign tables
Korotkov, Tom Lane) (Etsuro Fujita)
</para> </para>
</listitem>
<listitem>
<para> <para>
This patch improves selectivity estimation for the array &lt;@, Improve cost estimates for use of partial indexes (Tom Lane)
&amp;&amp;, and @&gt; (containment and overlaps) array operators.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve costing of partial indexes (Tom Lane) Improve the planner's ability to use statistics for columns
referenced in subqueries (Tom Lane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow analyze statistics to be collected for foreign tables Improve statistical estimates for subqueries using
(Etsuro Fujita) <literal>DISTINCT</> (Tom Lane)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect5>
</sect4> </sect4>
<sect4> <sect4>
...@@ -761,41 +783,40 @@ ...@@ -761,41 +783,40 @@
<listitem> <listitem>
<para> <para>
Do not assume roles and <literal>samerole</> specified in <link Do not treat role names and <literal>samerole</> specified in <link
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link> linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
include superusers (Andrew Dunstan) as automatically including superusers (Andrew Dunstan)
</para> </para>
<para> <para>
This makes it easier to use reject lines with group roles. This makes it easier to use <literal>reject</> lines with group roles.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Make superuser imply replication privilege (Noah Misch) Adjust <filename>pg_hba.conf</filename> processing to handle token
parsing more consistently (Brendan Jurd, &Aacute;lvaro Herrera)
</para> </para>
</listitem>
<listitem>
<para> <para>
This avoids the need to explicitly assign such privileges. Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Adjust <filename>pg_hba.conf</filename> processing to more This was done to more quickly detect misconfiguration.
consistently handle token parsing (Brendan Jurd, &Aacute;lvaro
Herrera)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane) Make superuser privilege imply replication privilege (Noah Misch)
</para> </para>
<para> <para>
This was done to more quickly report misconfiguration. This avoids the need to explicitly assign such privileges.
</para> </para>
</listitem> </listitem>
...@@ -810,7 +831,7 @@ ...@@ -810,7 +831,7 @@
<listitem> <listitem>
<para> <para>
Attempt to log the current query string before a backend crash Attempt to log the current query string during a backend crash
(Marti Raudsepp) (Marti Raudsepp)
</para> </para>
</listitem> </listitem>
...@@ -829,7 +850,7 @@ ...@@ -829,7 +850,7 @@
<listitem> <listitem>
<para> <para>
Have <acronym>WAL</acronym> replay report failures sooner Make <acronym>WAL</acronym> replay report failures sooner
(Fujii Masao) (Fujii Masao)
</para> </para>
...@@ -843,7 +864,7 @@ ...@@ -843,7 +864,7 @@
<para> <para>
Add <link Add <link
linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link> linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link>
to simplify xlog comparisons (Euler Taveira de Oliveira) to simplify WAL location comparisons (Euler Taveira de Oliveira)
</para> </para>
<para> <para>
...@@ -861,14 +882,14 @@ ...@@ -861,14 +882,14 @@
This allows different instances to use the eventlog This allows different instances to use the eventlog
with different identifiers, by setting the <link with different identifiers, by setting the <link
linkend="guc-event-source"><varname>event_source</></link> linkend="guc-event-source"><varname>event_source</></link>
<acronym>GUC</acronym>, which is similar to how <link server parameter, which is similar to how <link
linkend="guc-syslog-ident"><varname>syslog_ident</></link> works. linkend="guc-syslog-ident"><varname>syslog_ident</></link> works.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Change "unexpected EOF" message to <literal>DEBUG1</> level, Change <quote>unexpected EOF</> messages to <literal>DEBUG1</> level,
except when there is an open transaction (Magnus Hagander) except when there is an open transaction (Magnus Hagander)
</para> </para>
</listitem> </listitem>
...@@ -885,7 +906,7 @@ ...@@ -885,7 +906,7 @@
<listitem> <listitem>
<para> <para>
Track temporary file sizes and file counts in the <link Track temporary file sizes and file counts in the <link
linkend="monitoring-stats-views"><structname>pg_stat_database</></link> linkend="pg-stat-database-view"><structname>pg_stat_database</></link>
system view (Tomas Vondra) system view (Tomas Vondra)
</para> </para>
</listitem> </listitem>
...@@ -899,7 +920,7 @@ ...@@ -899,7 +920,7 @@
<listitem> <listitem>
<para> <para>
Add a <acronym>GUC</acronym> setting <link Add a server parameter <link
linkend="guc-track-io-timing"><varname>track_io_timing</></link> linkend="guc-track-io-timing"><varname>track_io_timing</></link>
to track I/O timings (Ants Aasma, Robert Haas) to track I/O timings (Ants Aasma, Robert Haas)
</para> </para>
...@@ -924,36 +945,35 @@ ...@@ -924,36 +945,35 @@
<listitem> <listitem>
<para> <para>
Allow <link Silently ignore nonexistent schemas specified in <link
linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Allow superusers to set <link
linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link> linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link>
to be set per-session by superusers, not just per-cluster (Noah per-session, not just per-cluster (Noah Misch)
Misch)
</para> </para>
<para> <para>
This allows <varname>deadlock_timeout</> to be reduced for This allows <varname>deadlock_timeout</> to be reduced for
transactions that are likely to be involved in a deadlock, transactions that are likely to be involved in a deadlock, thus
thus detecting it more quickly. It can also be used to reduce detecting the failure more quickly. Alternatively, increasing the
the chances of a session being chosen for cancellation due to value can be used to reduce the chances of a session being chosen for
a deadlock. cancellation due to a deadlock.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <acronym>GUC</acronym> parameter <link Add a server parameter <link
linkend="guc-temp-file-limit"><varname>temp_file_limit</></link> linkend="guc-temp-file-limit"><varname>temp_file_limit</></link>
to constrain temporary file space usage per session (Mark Kirkwood) to constrain temporary file space usage per session (Mark Kirkwood)
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Add <filename>postgresql.conf</filename> category "Replication /
Sending Servers" (Fujii Masao)
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Allow a superuser to <command>SET</command> an extension's Allow a superuser to <command>SET</command> an extension's
...@@ -974,15 +994,24 @@ ...@@ -974,15 +994,24 @@
</para> </para>
<para> <para>
This allows <application>pg_ctl</> to better handle This allows <application>pg_ctl</> to better handle cases where
configuration-only directory installations. <envar>PGDATA</> or <option>-D</> points to a configuration-only
directory.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Force the locale to be recorded more specifically, rather than Replace an empty locale name with the implied value in
using the empty string to mean the default (Tom Lane) <command>CREATE DATABASE</>
(Tom Lane)
</para>
<para>
This prevents cases where
<structname>pg_database</>.<structfield>datcollate</> or
<structfield>datctype</> could be interpreted differently after a
server restart.
</para> </para>
</listitem> </listitem>
...@@ -1004,13 +1033,13 @@ ...@@ -1004,13 +1033,13 @@
<listitem> <listitem>
<para> <para>
Allow a reload of <filename>postgresql.conf</filename> to be Allow a reload of <filename>postgresql.conf</filename> to be
processed by all backends even if there are some settings that processed by all sessions, even if there are some settings that
are invalid for that session (Alexey Klyukin) are invalid for particular sessions (Alexey Klyukin)
</para> </para>
<para> <para>
Previously, such not-valid-for-session errors would cause all Previously, such not-valid-within-session values would cause all
setting changes to be ignored by that backend. setting changes to be ignored by that session.
</para> </para>
</listitem> </listitem>
...@@ -1028,8 +1057,8 @@ ...@@ -1028,8 +1057,8 @@
<listitem> <listitem>
<para> <para>
Check the server time zone during initdb, and set Identify the server time zone during <application>initdb</>, and set
<filename>postgresql.conf</filename> values <filename>postgresql.conf</filename> entries
<link linkend="guc-timezone"><varname>timezone</></link> and <link linkend="guc-timezone"><varname>timezone</></link> and
<link linkend="guc-log-timezone"><varname>log_timezone</></link> <link linkend="guc-log-timezone"><varname>log_timezone</></link>
accordingly (Tom Lane) accordingly (Tom Lane)
...@@ -1042,9 +1071,9 @@ ...@@ -1042,9 +1071,9 @@
<listitem> <listitem>
<para> <para>
Allow Windows to report Fix <link
<filename>postgresql.conf</filename> line numbers in <link linkend="view-pg-settings"><structname>pg_settings</></link> to
linkend="view-pg-settings"><structname>pg_settings</></link> report <filename>postgresql.conf</filename> line numbers on Windows
(Tom Lane) (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -1060,21 +1089,18 @@ ...@@ -1060,21 +1089,18 @@
<sect3> <sect3>
<title>Replication and Recovery</title> <title>Replication and Recovery</title>
<sect4> <itemizedlist>
<title>Streaming Replication</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Allow streaming replications slaves to serve other slaves (Fujii Allow streaming replication slaves to forward data to other slaves
Masao) (<link linkend="cascading-replication"><firstterm>cascading
replication</></link>) (Fujii Masao)
</para> </para>
<para> <para>
Previously, only the master server could supply streaming Previously, only the master server could supply streaming
replication log files to standby servers. Slaves can also now replication log files to standby servers.
do continuous archiving. (?)
</para> </para>
</listitem> </listitem>
...@@ -1082,12 +1108,13 @@ ...@@ -1082,12 +1108,13 @@
<para> <para>
Add new <link Add new <link
linkend="guc-synchronous-commit"><varname>synchronous_commit</></link> linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
replication mode <literal>remote_write</> (Fujii Masao, Simon Riggs) mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
</para> </para>
<para> <para>
This waits for the remote server to acknowledge that it has received This mode waits for the standby server to write transaction data to
the data, but does not wait for it to be written to the remote disk. its own operating system, but does not wait for the data to be
flushed to the standby's disk.
</para> </para>
</listitem> </listitem>
...@@ -1095,37 +1122,19 @@ ...@@ -1095,37 +1122,19 @@
<para> <para>
Add a <link Add a <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></link> linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
tool to archive xlog file changes as they are written, rather tool to archive WAL file changes as they are written, rather
than waiting for completed xlog files (Magnus Hagander) than waiting for completed WAL files (Magnus Hagander)
</para>
</listitem>
<listitem>
<para>
Send keepalive messages to standby servers (Simon Riggs)
</para>
<para>
This allows administrators to accurately calculate streaming
replication transfer and application latency.
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect5>
<title><link linkend="app-pgbasebackup"><application>pg_basebackup</></link></title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Allow streaming of xlog files while <application>pg_basebackup</> Allow streaming of WAL files while <link linkend="app-pgbasebackup"><application>pg_basebackup</></link>
is performing a backup (Magnus Hagander) is performing a backup (Magnus Hagander)
</para> </para>
<para> <para>
This allows passing of xlog files to the standby before they are This allows passing of WAL files to the standby before they are
discarded on the primary. discarded on the primary.
</para> </para>
</listitem> </listitem>
...@@ -1137,17 +1146,7 @@ ...@@ -1137,17 +1146,7 @@
</para> </para>
</listitem> </listitem>
<listitem> </itemizedlist>
<para>
Exclude the postmaster.opts file from <application>pg_basebackup</>
backups (Magnus Hagander)
</para>
</listitem>
</itemizedlist>
</sect5>
</sect4>
</sect3> </sect3>
...@@ -1158,30 +1157,45 @@ ...@@ -1158,30 +1157,45 @@
<listitem> <listitem>
<para> <para>
Improve columns labels produced by subqueries (Marti Raudsepp) Cancel queries if clients get disconnected (Florian Pflug)
</para> </para>
</listitem>
<listitem>
<para> <para>
Previously, the generic label <literal>?column?</> was used. Retain column names at runtime for row expressions
(Andrew Dunstan, Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Preserve column names in row expressions (Andrew Dunstan, Tom Lane) This change allows better results when a row value is converted to
<type>hstore</> or <type>json</> type: the fields of the resulting
value will now have the expected names.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Cancel queries if clients get disconnected (Florian Pflug) Improve column labels used for sub-<command>SELECT</> results
(Marti Raudsepp)
</para>
<para>
Previously, the generic label <literal>?column?</> was used.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Silently ignore nonexistent schemas specified in <link Improve heuristics for determining the types of unknown values
linkend="guc-search-path"><varname>search_path</></link> (Tom Lane) (Tom Lane)
</para>
<para>
The longstanding rule that an unknown constant might have the
same type as the value on the other side of the operator using it
is now applied when considering polymorphic operators, not only
for simple operator matches.
</para> </para>
</listitem> </listitem>
...@@ -1198,7 +1212,7 @@ ...@@ -1198,7 +1212,7 @@
<listitem> <listitem>
<para> <para>
When a row fails a <literal>CHECK</> or <literal>NOT NULL</> When a row fails a <literal>CHECK</> or <literal>NOT NULL</>
constraint, show the row's contents in errdetail (Jan constraint, show the row's contents as error detail (Jan
Kundr&aacute;t) Kundr&aacute;t)
</para> </para>
...@@ -1224,18 +1238,18 @@ ...@@ -1224,18 +1238,18 @@
</para> </para>
<para> <para>
This eliminates "cache lookup failed" errors in many scenarios. This change adds locking that should eliminate <quote>cache lookup
Also, it is no longer possible to add relations to a schema which failed</> errors in many scenarios. Also, it is no longer possible
is being concurrently dropped, a scenario that formerly led to to add relations to a schema that is being concurrently dropped, a
inconsistent system catalog contents. scenario that formerly led to inconsistent system catalog contents.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <literal>CONCURRENTLY</> option to <link Add <literal>CONCURRENTLY</> option to <link
linkend="SQL-DROPINDEX"><command>DROP INDEX linkend="SQL-DROPINDEX"><command>DROP INDEX</command></link>
CONCURRENTLY</command></link> (Simon Riggs) (Simon Riggs)
</para> </para>
<para> <para>
...@@ -1243,6 +1257,18 @@ ...@@ -1243,6 +1257,18 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Allow foreign data wrappers to have per-column options (Shigeru Hanada)
</para>
</listitem>
<listitem>
<para>
Improve pretty printing of view definitions (Andrew Dunstan)
</para>
</listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
...@@ -1258,18 +1284,18 @@ ...@@ -1258,18 +1284,18 @@
</para> </para>
<para> <para>
A <literal>NOT VALID</> <literal>CHECK</> constraint can be added Adding a <literal>NOT VALID</> constraint does not cause the table to
to a table without the table's data being verified against the be scanned to verify that existing rows meet the constraint.
constraint. New rows are verified. Subsequently, newly added or updated rows are checked.
Such constraints are ignored by the planner when considering
<varname>constraint_exclusion</>, since it is not certain that all
rows meet the constraint.
</para> </para>
<para> <para>
Such constraints are ignored by the planner when considering The new <command>ALTER TABLE VALIDATE</> command allows <literal>NOT
<varname>constraint_exclusion</>. <command>ALTER TABLE</command> / VALID</> constraints to be checked for existing rows, after which
<literal>VALIDATE</> allows <literal>NOT VALID</> <literal>CHECK</> they are converted into ordinary constraints.
check constraints to be fully validated and considered for
<varname>constraint_exclusion</>, including re-planning of
cached plans.
</para> </para>
</listitem> </listitem>
...@@ -1302,19 +1328,19 @@ ...@@ -1302,19 +1328,19 @@
<listitem> <listitem>
<para> <para>
Reduce need to rebuild tables and indexes for various <link Reduce need to rebuild tables and indexes for certain <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link> linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link>
operations (Noah Misch) operations (Noah Misch)
</para> </para>
<para> <para>
Increasing the length constraint on a <type>varchar</> or Increasing the length limit for a <type>varchar</> or <type>varbit</>
<type>varbit</> column, or removing it altogether, no longer column, or removing it altogether, no longer requires a table
requires a table rewrite. Increasing the allowable precision of rewrite. Similarly, increasing the allowable precision of a
a <type>numeric</> constraint, or changing a column from constrained <type>numeric</> column, or changing a column from constrained
<type>numeric</> to unconstrained numeric, no longer requires a <type>numeric</> to unconstrained <type>numeric</>, no longer
table rewrite. Table rewrites are also avoided in similar cases requires a table rewrite. Table rewrites are also avoided in similar
involving the <type>interval</>, <type>timestamp</>, and cases involving the <type>interval</>, <type>timestamp</>, and
<type>timestamptz</> types. <type>timestamptz</> types.
</para> </para>
</listitem> </listitem>
...@@ -1329,7 +1355,7 @@ ...@@ -1329,7 +1355,7 @@
<listitem> <listitem>
<para> <para>
Add <literal>IF EXISTS</> clause to <command>ALTER</command> Add <literal>IF EXISTS</> clause to some <command>ALTER</command>
commands (Pavel Stehule) commands (Pavel Stehule)
</para> </para>
...@@ -1342,16 +1368,16 @@ ...@@ -1342,16 +1368,16 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="SQL-ALTERFOREIGNDATAWRAPPER"><command>ALTER Add <link linkend="SQL-ALTERFOREIGNDATAWRAPPER"><command>ALTER
FOREIGN DATA WRAPPER</command></link> / <literal>RENAME</> FOREIGN DATA WRAPPER</command></link> ... <literal>RENAME</>
and <link linkend="SQL-ALTERSERVER"><command>ALTER and <link linkend="SQL-ALTERSERVER"><command>ALTER
SERVER</command></link> / <literal>RENAME</> (Peter Eisentraut) SERVER</command></link> ... <literal>RENAME</> (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="SQL-ALTERDOMAIN"><command>ALTER Add <link linkend="SQL-ALTERDOMAIN"><command>ALTER
DOMAIN</command></link> / <literal>RENAME</> (Peter Eisentraut) DOMAIN</command></link> ... <literal>RENAME</> (Peter Eisentraut)
</para> </para>
<para> <para>
...@@ -1362,12 +1388,12 @@ ...@@ -1362,12 +1388,12 @@
<listitem> <listitem>
<para> <para>
Throw an error for <command>ALTER DOMAIN</command> / <literal>DROP Throw an error for <command>ALTER DOMAIN</command> ... <literal>DROP
CONSTRAINT</> on a nonexistent constraint (Peter Eisentraut) CONSTRAINT</> on a nonexistent constraint (Peter Eisentraut)
</para> </para>
<para> <para>
An <literal>IF EXISTS</> option has been added to enable the An <literal>IF EXISTS</> option has been added to provide the
previous behavior. previous behavior.
</para> </para>
</listitem> </listitem>
...@@ -1377,43 +1403,37 @@ ...@@ -1377,43 +1403,37 @@
</sect4> </sect4>
<sect4> <sect4>
<title><link linkend="SQL-CREATETABLE"><command>CREATE/ALTER <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
TABLE</></link></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</> Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
to handle <literal>WITH NO DATA</> and column name specification tables, views, and composite types (Peter Eisentraut)
(Tom Lane)
</para> </para>
</listitem>
<listitem>
<para> <para>
Support <command>CREATE TABLE (LIKE ...)</command> from foreign For example, this allows a table to be created whose schema matches a
tables and views (Peter Eisentraut) view.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <command>CREATE TABLE (LIKE ...)</command> from composite Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
type (Peter Eisentraut) conflicts when copying index comments (Tom Lane)
</para>
<para>
This also allows a table to be created whose schema matches a view.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</>
conflicts when copying index comments (Tom Lane) to handle <literal>WITH NO DATA</> and column name specifications
(Tom Lane)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4> </sect4>
...@@ -1431,9 +1451,11 @@ ...@@ -1431,9 +1451,11 @@
</para> </para>
<para> <para>
This prevents <literal>security_barrier</> views from being moved This option prevents optimizations that might allow view-protected
into other scopes, preventing possible leakage of view-prohibited data to be exposed to users, for example pushing a clause involving
data. Such views might perform more poorly. an insecure function into the <literal>WHERE</> clause of the view.
Such views can be expected to perform more poorly than ordinary
views.
</para> </para>
</listitem> </listitem>
...@@ -1441,7 +1463,7 @@ ...@@ -1441,7 +1463,7 @@
<para> <para>
Add a new <link Add a new <link
linkend="SQL-CREATEFUNCTION"><literal>LEAKPROOF</></link> function linkend="SQL-CREATEFUNCTION"><literal>LEAKPROOF</></link> function
specification to mark functions that can be safely pushed down attribute to mark functions that can safely be pushed down
into <literal>security_barrier</> views (KaiGai Kohei) into <literal>security_barrier</> views (KaiGai Kohei)
</para> </para>
</listitem> </listitem>
...@@ -1466,11 +1488,11 @@ ...@@ -1466,11 +1488,11 @@
</para> </para>
<para> <para>
Because the object is being created by <command>SELECT Because the object is being created by <command>SELECT INTO</command>
INTO</command> or <command>CREATE TABLE AS</command>, it will or <command>CREATE TABLE AS</command>, the creator would ordinarily
have default insert permissions, except if <literal>ALTER DEFAULT have insert permissions; but there are corner cases where this is not
PRIVILEGES</> has removed such permissions, hence the need for true, such as when <literal>ALTER DEFAULT PRIVILEGES</> has removed
a permission check. such permissions.
</para> </para>
</listitem> </listitem>
...@@ -1493,46 +1515,37 @@ ...@@ -1493,46 +1515,37 @@
<para> <para>
This change should greatly reduce the incidence of vacuum getting This change should greatly reduce the incidence of vacuum getting
"stuck". <quote>stuck</>.
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect4>
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Make <command>EXPLAIN (BUFFERS)</command> track blocks dirtied Make <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
and written (Robert Haas) <literal>(BUFFERS)</> count blocks dirtied and written (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <command>EXPLAIN ANALYZE</command> report the number of rows Make <command>EXPLAIN ANALYZE</command> report the number of rows
rejected by filter steps (Marko Tiikkaja) rejected by filter steps (Marko Tiikkaja)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <command>EXPLAIN</command> to avoid timing overhead when Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
time values are unwanted (Tomas Vondra) time values are not wanted (Tomas Vondra)
</para> </para>
<para> <para>
This is accomplished by setting <literal>TIMING</> to This is accomplished by setting the new <literal>TIMING</> option to
<literal>FALSE</>. <literal>FALSE</>.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4>
</sect3> </sect3>
...@@ -1543,45 +1556,46 @@ ...@@ -1543,45 +1556,46 @@
<listitem> <listitem>
<para> <para>
Add a <link linkend="datatype-json"><type>JSON</type></link> Add support for <link linkend="rangetypes">range data types</link>
data type (Robert Haas) (Jeff Davis, Tom Lane, Alexander Korotkov)
</para> </para>
<para> <para>
This stores <acronym>JSON</acronym> data as text after proper A range data type stores a lower and upper bound belonging to its
validation. base data type. It supports operations like contains, overlaps, and
intersection.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add a <link linkend="datatype-json"><type>JSON</type></link>
linkend="functions-json"><function>array_to_json()</></link> data type (Robert Haas)
and <function>row_to_json()</> (Andrew Dunstan)
</para> </para>
</listitem>
<listitem>
<para> <para>
Add support for <link linkend="rangetypes">range data types</link> This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
(Jeff Davis, Tom Lane, Alexander Korotkov) data with proper validation.
</para> </para>
</listitem>
<listitem>
<para> <para>
The range data type records a lower and upper bound, and supports Add <link
operations like contains, overlaps, and intersection. linkend="functions-json"><function>array_to_json()</></link>
and <function>row_to_json()</> (Andrew Dunstan)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link linkend="datatype-serial"><type>SMALLSERIAL</></link> Add a <link linkend="datatype-serial"><type>SMALLSERIAL</></link>
data type (Mike Pultz) data type (Mike Pultz)
</para> </para>
<para> <para>
This is like <type>SERIAL</>, except it stores the sequence in This is like <type>SERIAL</>, except it stores the sequence in
a two-byte integer column (int2). a two-byte integer column (<type>int2</>).
</para> </para>
</listitem> </listitem>
...@@ -1592,45 +1606,40 @@ ...@@ -1592,45 +1606,40 @@
</para> </para>
<para> <para>
This can be set at domain creation time, or via This option can be set at domain creation time, or via <command>ALTER
<command>ALTER DOMAIN</command> / <literal>ADD CONSTRAINT / NOT DOMAIN</command> ... <literal>ADD CONSTRAINT</> ... <literal>NOT
VALID</>. <command>ALTER DOMAIN</command> / <literal>VALIDATE VALID</>. <command>ALTER DOMAIN</command> ... <literal>VALIDATE
CONSTRAINT</> fully validates the domain. CONSTRAINT</> fully validates the constraint.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Support more locale-specific formatting options for the <link Support more locale-specific formatting options for the <link
linkend="datatype-money">MONEY</link> data type (Tom Lane) linkend="datatype-money"><type>money</></link> data type (Tom Lane)
</para> </para>
<para> <para>
Specifically, display the plus/minus sign, currency symbol, Specifically, honor all the POSIX options for ordering of the value,
and separators in a locale-specific order. CORRECT? sign, and currency symbol in monetary output. Also, make sure that
the thousands separator is only inserted to the left of the decimal
point, as required by POSIX.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add bitwise "and", "or", and "not" <link Add bitwise <quote>and</>, <quote>or</>, and <quote>not</>
linkend="macaddr-functions-table">operators</link> for the macaddr operators for the <type>macaddr</> data type (Brendan Jurd)
data type (Brendan Jurd)
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect4>
<title><link linkend="functions-xml"><acronym>XML</></link></title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Allow <function>xpath()</> to return a single-element Allow <link
<acronym>XML</acronym> array when supplied a scalar value (Florian linkend="functions-xml-processing"><function>xpath()</></link> to
Pflug) return a single-element <acronym>XML</acronym> array when supplied a
scalar value (Florian Pflug)
</para> </para>
<para> <para>
...@@ -1647,9 +1656,7 @@ ...@@ -1647,9 +1656,7 @@
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4>
</sect3> </sect3>
...@@ -1663,8 +1670,8 @@ ...@@ -1663,8 +1670,8 @@
Allow non-superusers to use <link Allow non-superusers to use <link
linkend="functions-admin-signal"><function>pg_cancel_backend()</></link> linkend="functions-admin-signal"><function>pg_cancel_backend()</></link>
and <link and <link
linkend="functions-admin-signal"><function>pg_terminate_backend()()</></link> linkend="functions-admin-signal"><function>pg_terminate_backend()</></link>
on other sessions for the same user on other sessions belonging to the same user
(Magnus Hagander, Josh Kupershmidt, Dan Farina) (Magnus Hagander, Josh Kupershmidt, Dan Farina)
</para> </para>
...@@ -1673,24 +1680,6 @@ ...@@ -1673,24 +1680,6 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Allow <link
linkend="functions-aggregate-table"><function>string_agg()</></link>
to process bytea values (Pavel Stehule)
</para>
</listitem>
<listitem>
<para>
Allow regular expressions to use back-references (Tom Lane)
</para>
<para>
For example, '^(\w+)( \1)+$'.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Allow importing and exporting of transaction snapshots (Joachim Allow importing and exporting of transaction snapshots (Joachim
...@@ -1698,10 +1687,13 @@ ...@@ -1698,10 +1687,13 @@
</para> </para>
<para> <para>
This allows multiple transactions to share identical views of the
database state.
Snapshots are exported via <link Snapshots are exported via <link
linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</></link>, linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</></link>
and imported via <command>SET TRANSACTION SNAPSHOT</command>. and imported via <link linkend="SQL-SET-TRANSACTION"><command>SET
Only snapshots of currently-running transactions can be imported. TRANSACTION SNAPSHOT</command></link>. Only snapshots from
currently-running transactions can be imported.
</para> </para>
</listitem> </listitem>
...@@ -1719,27 +1711,17 @@ ...@@ -1719,27 +1711,17 @@
<listitem> <listitem>
<para> <para>
Add a <type>NUMERIC</> variant of <link Add <link
linkend="functions-admin-dbsize"><function>pg_size_pretty()</></link> linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
for use with <function>pg_xlog_location_diff()</> (Fujii Masao) (Josh Kupershmidt)
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect4>
<title>Function and Trigger Creation</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Change default names of triggers to fire "action" triggers before Add a <type>numeric</> variant of <link
"check" triggers (Tom Lane) linkend="functions-admin-dbsize"><function>pg_size_pretty()</></link>
</para> for use with <function>pg_xlog_location_diff()</> (Fujii Masao)
<para>
This allows default-named check triggers to check post-action rows.
</para> </para>
</listitem> </listitem>
...@@ -1755,53 +1737,38 @@ ...@@ -1755,53 +1737,38 @@
</para> </para>
</listitem> </listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Object Information Functions</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Add <link Allow <link
linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link> linkend="functions-aggregate-table"><function>string_agg()</></link>
(Josh Kupershmidt) to process <type>bytea</> values (Pavel Stehule)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow per-column foreign data wrapper options and Fix regular expressions in which a back-reference occurs within
<literal>force_not_null</> (Shigeru Hanada) a larger quantified subexpression (Tom Lane)
</para> </para>
<para> <para>
This allows <acronym>SQL</acronym> specification of per-column For example, <literal>^(\w+)( \1)+$</>. Previous releases did not
information useful to foreign data sources. Includes check that the back-reference actually matched the first occurrence.
<application>psql</> option display support.
</para>
</listitem>
<listitem>
<para>
Improve pretty printing of view definitions (Andrew Dunstan)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4> </sect3>
<sect4> <sect3>
<title><link linkend="information-schema">Information Schema</link></title> <title><link linkend="information-schema">Information Schema</link></title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Add <structname>information_schema</> views Add information schema views
<structname>role_udt_grants</>, <structname>udt_privileges</>, <structname>role_udt_grants</>, <structname>udt_privileges</>,
and <structname>user_defined_types</> (Peter Eisentraut) and <structname>user_defined_types</> (Peter Eisentraut)
</para> </para>
...@@ -1810,60 +1777,60 @@ ...@@ -1810,60 +1777,60 @@
<listitem> <listitem>
<para> <para>
Add composite-type attributes to the Add composite-type attributes to the
<varname>information_schema</>.<varname>element_types</> view information schema <structname>element_types</> view
(Peter Eisentraut) (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Implement information schema <varname>interval_type</> columns Implement <structfield>interval_type</> columns in the information
(Peter Eisentraut) schema (Peter Eisentraut)
</para> </para>
</listitem>
<listitem>
<para> <para>
Add collation columns to various information schema views (Peter Formerly these columns read as nulls.
Eisentraut)
</para> </para>
</listitem>
<listitem>
<para> <para>
Specifically, provide collation columns for views referencing Implement collation-related columns in the information schema
attributes, columns, domains, and <varname>element_types</>. <structname>attributes</>, <structname>columns</>,
<structname>domains</>, and <structname>element_types</>
views (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add display of sequence <literal>USAGE</> privileges to information Implement the <structfield>with_hierarchy</> column in the
schema (Peter Eisentraut) information schema <structname>table_privileges</> view (Peter
Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add a <varname>with_hierarchy</> column to the information schema Add display of sequence <literal>USAGE</> privileges to information
privileges display (Peter Eisentraut) schema (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have the information schema show default privileges (Peter Make the information schema show default privileges (Peter
Eisentraut) Eisentraut)
</para> </para>
<para> <para>
Previously, default permissions generated <literal>NULL</> fields. Previously, non-empty default permissions were not represented in the
(WAS IT NULL?) views.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect4>
</sect3> </sect3>
<sect3> <sect3>
...@@ -1897,7 +1864,7 @@ ...@@ -1897,7 +1864,7 @@
<listitem> <listitem>
<para> <para>
Improve performance and memory consumption of the PL/pgSQL Improve performance and memory consumption for long chains of
<literal>ELSIF</> clauses (Tom Lane) <literal>ELSIF</> clauses (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -1935,8 +1902,9 @@ ...@@ -1935,8 +1902,9 @@
</para> </para>
<para> <para>
Specifically, this adds result object functions .colnames, Specifically, this adds result object functions
.coltypes, and .coltypmods. <literal>.colnames</literal>, <literal>.coltypes</literal>, and
<literal>.coltypmods</literal>.
</para> </para>
</listitem> </listitem>
...@@ -1961,7 +1929,7 @@ ...@@ -1961,7 +1929,7 @@
</para> </para>
<para> <para>
To use this, simply name the function arguments and reference To use this, simply name the function arguments and then reference
the argument names in the <acronym>SQL</acronym> function body. the argument names in the <acronym>SQL</acronym> function body.
</para> </para>
</listitem> </listitem>
...@@ -1984,7 +1952,7 @@ ...@@ -1984,7 +1952,7 @@
</para> </para>
<para> <para>
This allows individual control of <literal>local</> and This allows separate control of <literal>local</> and
<literal>host</> <filename>pg_hba.conf</filename> authentication <literal>host</> <filename>pg_hba.conf</filename> authentication
settings. <option>--auth</> still controls both. settings. <option>--auth</> still controls both.
</para> </para>
...@@ -2010,7 +1978,7 @@ ...@@ -2010,7 +1978,7 @@
<listitem> <listitem>
<para> <para>
Give command-line tools the ability to specify the name of the Give command-line tools the ability to specify the name of the
database to connect to, and fall back to <varname>template1</> database to connect to, and fall back to <literal>template1</>
if a <literal>postgres</> database connection fails (Robert Haas) if a <literal>postgres</> database connection fails (Robert Haas)
</para> </para>
</listitem> </listitem>
...@@ -2024,7 +1992,7 @@ ...@@ -2024,7 +1992,7 @@
<listitem> <listitem>
<para> <para>
Add <application>psql</> mode to auto-expand output based on the Add a display mode to auto-expand output based on the
display width (Peter Eisentraut) display width (Peter Eisentraut)
</para> </para>
...@@ -2037,13 +2005,12 @@ ...@@ -2037,13 +2005,12 @@
<listitem> <listitem>
<para> <para>
Allow inclusion of <application>psql</> files relative to the Allow inclusion of a script file relative to the directory of the
directory of the input file from which it was invoked (Gurjeet file from which it was invoked (Gurjeet Singh)
Singh)
</para> </para>
<para> <para>
The <application>psql</> command is <command>\ir</>. This is done with a new command <command>\ir</>.
</para> </para>
</listitem> </listitem>
...@@ -2062,8 +2029,7 @@ ...@@ -2062,8 +2029,7 @@
<para> <para>
<application>psql</> already supported minor-version-specific <application>psql</> already supported minor-version-specific
<filename>.psqlrc</> <filename>.psqlrc</> files.
files.
</para> </para>
</listitem> </listitem>
...@@ -2075,59 +2041,59 @@ ...@@ -2075,59 +2041,59 @@
<para> <para>
Specifically, <envar>PSQL_HISTORY</envar> and Specifically, <envar>PSQL_HISTORY</envar> and
<envar>PSQLRC</envar>. <envar>PSQLRC</envar> determine these file names if set.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add a <application>psql</> <command>\setenv</> command to modify Add a <command>\setenv</> command to modify
the environment variables used by child processes (Andrew Dunstan) the environment variables passed to child processes (Andrew Dunstan)
</para>
<para>
This is useful in <filename>.psqlrc</> files.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <application>psql</> temporary editor files use a Make <application>psql</>'s temporary editor files use a
<filename>.sql</> extension (Peter Eisentraut) <filename>.sql</> extension (Peter Eisentraut)
</para> </para>
<para>
This allows extension-sensitive editors to select the right mode.
</para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allows <application>psql</> to use zero-byte field and record Allow <application>psql</> to use zero-byte field and record
separators (Peter Eisentraut) separators (Peter Eisentraut)
</para> </para>
<para> <para>
Various shell tools use zero/null-byte separators, e.g. find. Various shell tools use zero-byte (NUL) separators, e.g. find.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <application>psql</> <command>\timing</> report times for Make the <command>\timing</> option report times for
failed queries (Magnus Hagander) failed queries (Magnus Hagander)
</para> </para>
<para> <para>
Previously only successful query times were reported. Previously times were reported only for successful queries.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Unify and tighten <application>psql</> treatment of <command>\copy</> Unify and tighten <application>psql</>'s treatment of <command>\copy</>
and plain <command>COPY</> (Noah Misch) and SQL <command>COPY</> (Noah Misch)
</para> </para>
<para> <para>
This makes failure behavior more predictable and honors <command>\set This fix makes failure behavior more predictable and honors
ON_ERROR_ROLLBACK</>. <command>\set ON_ERROR_ROLLBACK</>.
</para> </para>
</listitem> </listitem>
...@@ -2141,74 +2107,59 @@ ...@@ -2141,74 +2107,59 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Make <application>psql</> <command>\d</> on a sequence show the Make <command>\d</> on a sequence show the
table/column name owning it (Magnus Hagander) table/column name owning it (Magnus Hagander)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Show statistics target for columns in <application>psql</> Show statistics target for columns in <command>\d+</> (Magnus
<command>\d+</> (Magnus Hagander) Hagander)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Show role password expiration dates in <application>psql</> Show role password expiration dates in <command>\du</>
<command>\du</> (Fabr&iacute;zio de Royes Mello) (Fabr&iacute;zio de Royes Mello)
</para> </para>
</listitem> </listitem>
</itemizedlist>
<sect5>
<title>Comments</title>
<itemizedlist>
<listitem> <listitem>
<para> <para>
Allow <application>psql</> to display comments for languages and Display comments for casts, conversions, domains, and languages
casts (Josh Kupershmidt) (Josh Kupershmidt)
</para> </para>
<para> <para>
These are output via <command>\dL</> and <command>\dC</>. These are included in the output of <command>\dC+</>,
<command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <application>psql</> to display comments for conversions Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
and domains (Josh Kupershmidt) objects (Josh Kupershmidt)
</para> </para>
<para> <para>
This is accomplished with the addition of <literal>+</> to These are included in the output of <command>\des+</>,
<command>\dc</> and <command>\dD</> commands. <command>\det+</>, and <command>\dew+</> for foreign servers, foreign
tables, and foreign data wrappers respectively.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <application>psql</> to display the comments on Change <command>\dd</> to display comments only for object types
<acronym>SQL</acronym>/<acronym>MED</acronym> objects in verbose without their own backslash command (Josh Kupershmidt)
mode (Josh Kupershmidt)
</para>
</listitem>
<listitem>
<para>
Change <application>psql</>'s <command>\dd</> command to display
only objects without their own backslash command (Josh Kupershmidt)
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect5>
</sect4> </sect4>
<sect4> <sect4>
...@@ -2218,16 +2169,16 @@ ...@@ -2218,16 +2169,16 @@
<listitem> <listitem>
<para> <para>
In <application>psql</> tab completion, In <application>psql</> tab completion, complete <acronym>SQL</>
complete <acronym>SQL</acronym> keywords based on keywords in either upper or lower case according to the new <link
<varname>COMP_KEYWORD_CASE</> setting and the perhaps case of linkend="APP-PSQL-variables"><literal>COMP_KEYWORD_CASE</></link>
the partially-supplied word (Peter Eisentraut) setting (Peter Eisentraut)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <application>psql</> tab completion support for Add tab completion support for
<command>EXECUTE</command> (Andreas Karlsson) <command>EXECUTE</command> (Andreas Karlsson)
</para> </para>
</listitem> </listitem>
...@@ -2249,8 +2200,8 @@ ...@@ -2249,8 +2200,8 @@
<listitem> <listitem>
<para> <para>
Change <application>psql</> tab completion support for Change tab completion support for
<command>TABLE</command> to also display views (Magnus Hagander) <command>TABLE</command> to also include views (Magnus Hagander)
</para> </para>
</listitem> </listitem>
...@@ -2284,22 +2235,19 @@ ...@@ -2284,22 +2235,19 @@
<para> <para>
Valid values are <literal>pre-data</>, <literal>data</>, Valid values are <literal>pre-data</>, <literal>data</>,
and <literal>post-data</>. The option can be and <literal>post-data</>. The option can be
given more than once. <option>--schema-only</> given more than once to select two or more sections.
is equivalent to <literal>--section=pre-data
--section=post-data</>. <option>--data-only</> is equivalent to
<literal>--section=data</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <link Make <link
linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all
roles first, then all configuration settings on roles (Phil Sorber) roles first, then all configuration settings on roles (Phil Sorber)
</para> </para>
<para> <para>
This allows a role's configuration settings to rely on other This allows a role's configuration settings to mention other
roles without generating an error. roles without generating an error.
</para> </para>
</listitem> </listitem>
...@@ -2370,18 +2318,21 @@ ...@@ -2370,18 +2318,21 @@
<listitem> <listitem>
<para> <para>
Add <acronym>URI</acronym>s support to libpq connection functions Allow connection strings to have the format of a <link
(Alexander Shulgin) linkend="libpq-connstring"><acronym>URI</acronym></link> (Alexander
Shulgin)
</para> </para>
<para> <para>
The syntax begins with <literal>postgres://</>. The syntax begins with <literal>postgres://</>. This can allow
applications to avoid implementing their own parser for URIs
representing database connections.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add a libpq <link linkend="libpq-connect-sslcompression">connection Add a <link linkend="libpq-connect-sslcompression">connection
option</link> to disable <acronym>SSL</acronym> compression option</link> to disable <acronym>SSL</acronym> compression
(Laurenz Albe) (Laurenz Albe)
</para> </para>
...@@ -2395,50 +2346,44 @@ ...@@ -2395,50 +2346,44 @@
<listitem> <listitem>
<para> <para>
Add a <link linkend="libpq-single-row-mode">single-row processing Add a <link linkend="libpq-single-row-mode">single-row processing
mode</link> to libpq for better handling of large result sets mode</link> for better handling of large result sets
(Kyotaro Horiguchi, Marko Kreen) (Kyotaro Horiguchi, Marko Kreen)
</para> </para>
<para> <para>
Previously, libpq always collected the entire query result in memory Previously, <application>libpq</> always collected the entire query
before passing it back to the application. result in memory before passing it back to the application.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Enhance <literal>const</> qualifiers in the libpq functions Add <literal>const</> qualifiers to the declarations of the functions
PQconnectdbParams, PQconnectStartParams, and PQpingParams (Lionel <function>PQconnectdbParams</>, <function>PQconnectStartParams</>,
Elie Mamane) and <function>PQpingParams</> (Lionel Elie Mamane)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow libpq's <filename>.pgpass</> file to process escaped characters Allow the <filename>.pgpass</> file to include escaped characters
in the password field (Robert Haas) in the password field (Robert Haas)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have library functions use <function>abort()</> instead of Make library functions use <function>abort()</> instead of
<function>exit()</> to terminate the executable (Peter Eisentraut) <function>exit()</> when it is necessary to terminate the process
(Peter Eisentraut)
</para> </para>
<para> <para>
This does not interfere with the normal exit codes used by the This choice does not interfere with the normal exit codes used by the
program, and generates a signal that can be caught by the caller. program, and generates a signal that can be caught by the caller.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Fix a libpq memory leak by freeing client encoding connection
parameters (Peter Eisentraut)
</para>
</listitem>
</itemizedlist> </itemizedlist>
</sect3> </sect3>
...@@ -2454,7 +2399,7 @@ ...@@ -2454,7 +2399,7 @@
</para> </para>
<para> <para>
The following platforms are no longer considered supported: dgux, The following platforms are no longer supported: dgux,
nextstep, sunos4, svr4, ultrix4, univel, bsdi. nextstep, sunos4, svr4, ultrix4, univel, bsdi.
</para> </para>
</listitem> </listitem>
...@@ -2500,14 +2445,14 @@ ...@@ -2500,14 +2445,14 @@
<listitem> <listitem>
<para> <para>
Improve the concurrent transaction regression tests Improve the concurrent transaction regression tests
(isolationtester) (Noah Misch) (<application>isolationtester</>) (Noah Misch)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Modify <application>thread_test</> to create its test files in Modify <application>thread_test</> to create its test files in
the current directory, rather than /tmp (Bruce Momjian) the current directory, rather than <filename>/tmp</> (Bruce Momjian)
</para> </para>
</listitem> </listitem>
...@@ -2611,9 +2556,8 @@ ...@@ -2611,9 +2556,8 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="tcn">tcn</link> (triggered change notification) Support <literal>force_not_null</> option in <link
to generate <command>NOTIFY</command> events on table changes linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
(Kevin Grittner)
</para> </para>
</listitem> </listitem>
...@@ -2637,18 +2581,6 @@ ...@@ -2637,18 +2581,6 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Have <link linkend="vacuumlo">vacuumlo</link> remove large objects
in batches, to reduce locking (Tim Lewis, Tom Lane)
</para>
<para>
The new <option>-l</> option allows changing the number of large
objects removed per transaction.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Change <link Change <link
...@@ -2672,6 +2604,14 @@ ...@@ -2672,6 +2604,14 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Add a <link linkend="tcn">tcn</link> (triggered change notification)
module to generate <command>NOTIFY</command> events on table changes
(Kevin Grittner)
</para>
</listitem>
</itemizedlist> </itemizedlist>
<sect4> <sect4>
...@@ -2681,86 +2621,86 @@ ...@@ -2681,86 +2621,86 @@
<listitem> <listitem>
<para> <para>
Allow <application>pg_upgrade</> to upgrade an old cluster that Adjust <application>pg_upgrade</> environment variables (Bruce
does not have a <literal>postgres</> database (Bruce Momjian) Momjian)
</para>
<para>
Rename data, bin, and port environment
variables to begin with <literal>PG</>, and support
<envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
<envar>PGPORT</envar>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow <application>pg_upgrade</> to handle cases where some Overhaul <application>pg_upgrade</> logging and failure reporting
old or new databases are missing, as long as they are empty
(Bruce Momjian) (Bruce Momjian)
</para> </para>
</listitem>
<listitem>
<para> <para>
Allow <application>pg_upgrade</> to handle configuration-only Create four append-only log files, and delete them on success.
directory installations (Bruce Momjian) Add <option>-r</>/<option>--retain</> option to unconditionally
retain these files. Also remove <application>pg_upgrade</> options
<option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
and tighten log file permissions.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
In <application>pg_upgrade</>, add <option>-o</>/<option>-O</> Make <application>pg_upgrade</> create a script to incrementally
options to pass parameters to the servers (Bruce Momjian) generate more accurate optimizer statistics (Bruce Momjian)
</para> </para>
<para> <para>
This is useful for configuration-only directory installs. This reduces the time needed to generate minimal cluster statistics
after an upgrade.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Change <application>pg_upgrade</> to use port 50432 by default Allow <application>pg_upgrade</> to upgrade an old cluster that
(Bruce Momjian) does not have a <literal>postgres</> database (Bruce Momjian)
</para>
<para>
This helps avoid unintended client connections during the upgrade.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Overhaul <application>pg_upgrade</> logging and failure reporting Allow <application>pg_upgrade</> to handle cases where some
old or new databases are missing, as long as they are empty
(Bruce Momjian) (Bruce Momjian)
</para> </para>
</listitem>
<listitem>
<para> <para>
Create four append-only log files, and delete them on success. Allow <application>pg_upgrade</> to handle configuration-only
Add <option>-r</>/<option>--retain</> option to unconditionally directory installations (Bruce Momjian)
retain these files. Also remove <application>pg_upgrade</> options
<option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
and tighten log file permissions.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Adjust <application>pg_upgrade</> environment variables (Bruce In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
Momjian) options to pass parameters to the servers (Bruce Momjian)
</para> </para>
<para> <para>
Rename data, bin, and port environment This is useful for configuration-only directory installs.
variables to begin with <literal>PG</>, and support
<envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
<envar>PGPORT</envar>. INCOMPATIBILITY?
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Have <application>pg_upgrade</> create a script to incrementally Change <application>pg_upgrade</> to use port 50432 by default
generate more accurate optimizer statistics (Bruce Momjian) (Bruce Momjian)
</para> </para>
<para> <para>
This reduces the time needed to generate minimal cluster statistics This helps avoid unintended client connections during the upgrade.
after an upgrade.
</para> </para>
</listitem> </listitem>
...@@ -2788,13 +2728,12 @@ ...@@ -2788,13 +2728,12 @@
<listitem> <listitem>
<para> <para>
Allow <application>pg_stat_statements</> to aggregate similar Allow <application>pg_stat_statements</> to aggregate similar
queries via SQL text normalisation (Peter Geoghegan, Tom Lane) queries via SQL text normalization (Peter Geoghegan, Tom Lane)
</para> </para>
<para> <para>
Users with applications that use non-parameterized SQL will now Users with applications that use non-parameterized SQL will now
be able to monitor query performance without using log file be able to monitor query performance without detailed log analysis.
analysis.
</para> </para>
</listitem> </listitem>
...@@ -2828,7 +2767,7 @@ ...@@ -2828,7 +2767,7 @@
</para> </para>
<para> <para>
Specifically, add <literal>SECURITY LABEL</>s to databases, Specifically, add security labels to databases,
tablespaces, and roles. tablespaces, and roles.
</para> </para>
</listitem> </listitem>
...@@ -2872,12 +2811,12 @@ ...@@ -2872,12 +2811,12 @@
<listitem> <listitem>
<para> <para>
Add a rule to optionally build docs with the stylesheet from the Add a rule to optionally build HTML documentation using the
website (Magnus Hagander) stylesheet from the website (Magnus Hagander)
</para> </para>
<para> <para>
Use <command>make STYLE=website draft</>. Use <command>gmake STYLE=website draft</>.
</para> </para>
</listitem> </listitem>
...@@ -2895,13 +2834,6 @@ ...@@ -2895,13 +2834,6 @@
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Improve the foreign data wrapper <acronym>API</acronym> and
documentation (Hanada Shigeru)
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Document the actual string returned by the client for MD5 Document the actual string returned by the client for MD5
......
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