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