mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-02 11:21:16 +02:00
3157 lines
84 KiB
Plaintext
3157 lines
84 KiB
Plaintext
<!-- doc/src/sgml/release-9.2.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-9-2-1">
|
|
<title>Release 9.2.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2012-09-24</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.2.0.
|
|
For information about new features in the 9.2 major release, see
|
|
<xref linkend="release-9-2">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.2.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.2.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, you may need to perform <command>REINDEX</> and/or
|
|
<command>VACUUM</> operations to recover from the effects of the data
|
|
corruption bug described in the first changelog item below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix persistence marking of shared buffers during WAL replay
|
|
(Jeff Davis)
|
|
</para>
|
|
|
|
<para>
|
|
This mistake can result in buffers not being written out during
|
|
checkpoints, resulting in data corruption if the server later crashes
|
|
without ever having written those buffers. Corruption can occur on
|
|
any server following crash recovery, but it is significantly more
|
|
likely to occur on standby slave servers since those perform much
|
|
more WAL replay. There is a low probability of corruption of btree
|
|
and GIN indexes. There is a much higher probability of corruption
|
|
of table <quote>visibility maps</>, which might lead to wrong answers
|
|
from index-only scans. Table data proper cannot be corrupted by this
|
|
bug.
|
|
</para>
|
|
|
|
<para>
|
|
While no index corruption due to this bug is known to have occurred
|
|
in the field, as a precautionary measure it is recommended that
|
|
production installations <command>REINDEX</> all btree and GIN
|
|
indexes at a convenient time after upgrading to 9.2.1.
|
|
</para>
|
|
|
|
<para>
|
|
Also, it is recommended to perform a <command>VACUUM</> of all tables
|
|
while having <link
|
|
linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
|
|
set to zero. This will fix any incorrect visibility map data. <link
|
|
linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</></link>
|
|
can be adjusted to reduce the performance impact of vacuuming, while
|
|
causing it to take longer to finish.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible incorrect sorting of output from queries involving
|
|
<literal>WHERE <replaceable>indexed_column</> IN
|
|
(<replaceable>list_of_values</>)</literal> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner failure for queries involving <literal>GROUP BY</>
|
|
expressions along with window functions and aggregates (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner's assignment of executor parameters (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This error could result in wrong answers from queries that scan the
|
|
same <literal>WITH</> subquery multiple times.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve planner's handling of join conditions in index scans (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve selectivity estimation for text search queries involving
|
|
prefixes, i.e. <replaceable>word</><literal>:*</> patterns (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix delayed recognition of permissions changes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A command that needed no locks other than ones its transaction already
|
|
had might fail to notice a concurrent <command>GRANT</> or
|
|
<command>REVOKE</> that committed since the start of its transaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>ANALYZE</> to not fail when a column is a domain over an
|
|
array type (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent PL/Perl from crashing if a recursive PL/Perl function is
|
|
redefined while being executed (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Work around possible misoptimization in PL/Perl (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Some Linux distributions contain an incorrect version of
|
|
<filename>pthread.h</> that results in incorrect compiled code in
|
|
PL/Perl, leading to crashes if a PL/Perl function calls another one
|
|
that throws an error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove unnecessary dependency on <application>pg_config</> from
|
|
<application>pg_upgrade</> (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2012f
|
|
for DST law changes in Fiji
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-2">
|
|
<title>Release 9.2</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2012-09-10</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
This release has been largely focused on performance improvements, though
|
|
new SQL features are not lacking. Work also continues in the area of
|
|
replication support. Major enhancements include:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<!-- This list duplicates items below, but without authors or details-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow queries to retrieve data only from indexes, avoiding heap
|
|
access (<firstterm>index-only scans</>)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the planner to generate custom plans for specific parameter
|
|
values even when using prepared statements
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the planner's ability to use nested loops with inner
|
|
index scans
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow streaming replication slaves to forward data to other slaves
|
|
(<link linkend="cascading-replication"><firstterm>cascading
|
|
replication</></link>)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="app-pgbasebackup"><application>pg_basebackup</></link>
|
|
to make base backups from standby servers
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
|
|
tool to archive WAL file changes as they are written
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
|
|
GiST) index access method
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="rangetypes">range data types</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="datatype-json"><type>JSON</type></link>
|
|
data type
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
|
|
option for views
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>libpq</> connection strings to have the format of a
|
|
<link linkend="libpq-connstring"><acronym>URI</acronym></link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="libpq-single-row-mode">single-row processing
|
|
mode</link> to <application>libpq</> for better handling of large
|
|
result sets
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 9.2</title>
|
|
|
|
<para>
|
|
A dump/restore using <application>pg_dump</application>, or use of
|
|
<application>pg_upgrade</application>, is required for those wishing
|
|
to migrate data from any previous release.
|
|
</para>
|
|
|
|
<para>
|
|
Version 9.2 contains a number of changes that may affect compatibility
|
|
with previous releases. Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>System Catalogs</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the <structfield>spclocation</> field from <link
|
|
linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
Move <type>tsvector</> most-common-element statistics to new
|
|
<link linkend="view-pg-stats"><structname>pg_stats</></link> columns
|
|
(Alexander Korotkov)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
Remove <link linkend="hstore">hstore</link>'s <literal>=></>
|
|
operator (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
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>=></> is created because
|
|
the <acronym>SQL</acronym> standard reserves that token for
|
|
another use.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <link
|
|
linkend="functions-xml-processing"><function>xpath()</></link>
|
|
escapes special characters in string values (Florian Pflug)
|
|
</para>
|
|
|
|
<para>
|
|
Without this it is possible for the result not to be valid
|
|
<acronym>XML</acronym>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
This prevents queries that call these functions from returning
|
|
errors immediately after a concurrent <command>DROP</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link
|
|
linkend="functions-datetime-extract"><function>EXTRACT(EPOCH FROM
|
|
<replaceable>timestamp without time zone</>)</function></link>
|
|
measure the epoch from local midnight, not <acronym>UTC</acronym>
|
|
midnight (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change reverts an ill-considered change made in release 7.3.
|
|
Measuring from <acronym>UTC</acronym> midnight was inconsistent
|
|
because it made the result dependent on the <link
|
|
linkend="guc-timezone"><varname>timezone</></link> setting, which
|
|
computations for <type>timestamp without time zone</> should not be.
|
|
The previous behavior remains available by casting the input value
|
|
to <type>timestamp with time zone</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly parse time strings with trailing <literal>yesterday</>,
|
|
<literal>today</>, and <literal>tomorrow</> (Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
|
|
returned yesterday's date at midnight.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link
|
|
linkend="functions-formatting"><function>to_date()</></link> and
|
|
<function>to_timestamp()</> to wrap incomplete dates toward 2020
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, supplied years and year masks of less than four digits
|
|
wrapped inconsistently.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Modification</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <link linkend="SQL-ALTERDOMAIN"><command>ALTER
|
|
DOMAIN</command></link> from working on non-domain types (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Owner and schema changes were previously possible on non-domain
|
|
types.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
No longer forcibly lowercase procedural language names in <link
|
|
linkend="SQL-CREATEFUNCTION"><command>CREATE FUNCTION</></link>
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
While unquoted language identifiers are still lowercased, strings
|
|
and quoted identifiers are no longer forcibly down-cased.
|
|
Thus for example <literal>CREATE FUNCTION ... LANGUAGE 'C'</>
|
|
will no longer work; it must be spelled <literal>'c'</>, or better
|
|
omit the quotes.
|
|
</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>
|
|
|
|
<sect3>
|
|
<title>Command-Line Tools</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide consistent backquote, variable
|
|
expansion, and quoted substring behavior in <link
|
|
linkend="APP-PSQL"><application>psql</></link> meta-command
|
|
arguments (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
|
|
<listitem>
|
|
<para>
|
|
No longer treat <link
|
|
linkend="APP-CLUSTERDB"><application>clusterdb</></link>
|
|
table names as double-quoted; no longer treat <link
|
|
linkend="APP-REINDEXDB"><application>reindexdb</></link> table
|
|
and index names as double-quoted (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Users must now include double-quotes in the command arguments if
|
|
quoting is wanted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="APP-CREATEUSER"><application>createuser</></link>
|
|
no longer prompts for option settings by default (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Use <option>--interactive</> to obtain the old behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disable prompting for the user name in <link
|
|
linkend="APP-DROPUSER"><application>dropuser</></link> unless
|
|
<option>--interactive</> is specified (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 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 the <varname>silent_mode</> parameter (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Similar behavior can be obtained with <command>pg_ctl start
|
|
-l postmaster.log</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the <varname>wal_sender_delay</> parameter,
|
|
as it is no longer needed (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the <varname>custom_variable_classes</> parameter (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The checking provided by this setting was dubious. Now any
|
|
setting can be prefixed by any class name.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename <link
|
|
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 <structfield>pg_stat_activity</> column to
|
|
report process state (Scott Mead, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
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</>.<structfield>current_query</> to
|
|
<structfield>query</> because it is not cleared when the query
|
|
completes (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change all <acronym>SQL</acronym>-level statistics timing values
|
|
to be <type>float8</> columns measured in milliseconds (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change eliminates the designed-in assumption that the values
|
|
are accurate to microseconds and no more (since the <type>float8</>
|
|
values can be fractional).
|
|
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</>.
|
|
The statistics functions underlying these columns now also return
|
|
<type>float8</> milliseconds, rather than <type>bigint</>
|
|
microseconds.
|
|
<filename>contrib/pg_stat_statements</>'
|
|
<structfield>total_time</> column is now also measured in
|
|
milliseconds.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the changes between
|
|
<productname>PostgreSQL</productname> 9.2 and the previous major
|
|
release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
|
|
<sect4>
|
|
<title>Performance</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Allow queries to retrieve data only from indexes, avoiding heap
|
|
access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
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>
|
|
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>
|
|
Allow uncontended locks to be managed using a new
|
|
fast-path lock mechanism (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce overhead of creating virtual transaction ID locks (Robert
|
|
Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce the overhead of serializable isolation level locks (Dan
|
|
Ports)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve PowerPC and Itanium spinlock performance (Manabu Ori,
|
|
Robert Haas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce overhead for shared invalidation cache messages (Robert
|
|
Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Improve <command>COPY</command> performance by adding tuples to
|
|
the heap in batches (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve GiST index performance for geometric data types by producing
|
|
better trees with less memory allocation overhead (Alexander Korotkov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve GiST index build times (Alexander Korotkov, Heikki
|
|
Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow hint bits to be set sooner for temporary and unlogged tables
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow sorting to be performed by inlined,
|
|
non-<acronym>SQL</acronym>-callable comparison functions (Peter
|
|
Geoghegan, Robert Haas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Take fewer <acronym>MVCC</acronym> snapshots
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Improve performance of buffer pool scans that occur when tables or
|
|
databases are dropped (Jeff Janes, Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of checkpointer's fsync-request queue
|
|
when many tables are being dropped or truncated (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Pass the safe number of file descriptors to child processes on Windows
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows Windows sessions to use more open file descriptors than
|
|
before.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Process Management</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a dedicated background process to perform checkpoints (Simon
|
|
Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
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 the walwriter sooner
|
|
(Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, only <link
|
|
linkend="guc-wal-writer-delay"><varname>wal_writer_delay</></link>
|
|
triggered <acronym>WAL</acronym> flushing to disk; now filling a
|
|
<acronym>WAL</acronym> buffer also triggers <acronym>WAL</acronym>
|
|
writes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
|
|
<para>
|
|
This series of changes reduces the frequency of process wake-ups when
|
|
there is nothing to do, dramatically reducing power consumption on
|
|
idle servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Optimizer</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the planner to generate custom plans for specific parameter
|
|
values even when using prepared statements
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
Improve the planner's ability to use nested loops with inner
|
|
index scans (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The new <quote>parameterized path</> mechanism allows inner
|
|
index scans 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>
|
|
Improve the planning <acronym>API</acronym> for foreign data wrappers
|
|
(Etsuro Fujita, Shigeru Hanada, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Wrappers can now provide multiple access <quote>paths</> for their
|
|
tables, allowing more flexibility in join planning.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Recognize self-contradictory restriction clauses for non-table
|
|
relations (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This check is only performed when <link
|
|
linkend="guc-constraint-exclusion"><varname>constraint_exclusion</></link>
|
|
is <literal>on</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>indexed_col op ANY(ARRAY[...])</> conditions to be
|
|
used in plain index scans and index-only scans (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly such conditions could only be used in bitmap index scans.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <function>MIN</>/<function>MAX</> index optimizations on
|
|
<type>boolean</type> columns (Marti Raudsepp)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Account for set-returning functions in <command>SELECT</> target
|
|
lists when setting row count estimates (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner to handle indexes with duplicated columns more reliably
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Collect and use element-frequency statistics for arrays (Alexander
|
|
Korotkov, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change improves selectivity estimation for the array
|
|
<literal><@</literal>, <literal>&&</literal>, and
|
|
<literal>@></literal> operators (array containment and overlaps).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow statistics to be collected for foreign tables
|
|
(Etsuro Fujita)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve cost estimates for use of partial indexes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the planner's ability to use statistics for columns
|
|
referenced in subqueries (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve statistical estimates for subqueries using
|
|
<literal>DISTINCT</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Authentication</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not treat role names and <literal>samerole</> specified in <link
|
|
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
|
|
as automatically including superusers (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This makes it easier to use <literal>reject</> lines with group roles.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Adjust <filename>pg_hba.conf</filename> processing to handle token
|
|
parsing more consistently (Brendan Jurd, Álvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This was done to more quickly detect misconfiguration.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make superuser privilege imply replication privilege (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids the need to explicitly assign such privileges.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Attempt to log the current query string during a backend crash
|
|
(Marti Raudsepp)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make logging of autovacuum I/O activity more verbose (Greg
|
|
Smith, Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This logging is triggered by <link
|
|
linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <acronym>WAL</acronym> replay report failures sooner
|
|
(Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
There were some cases where failures were only reported once the
|
|
server went into master mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link>
|
|
to simplify WAL location comparisons (Euler Taveira de Oliveira)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for computing replication lag.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support configurable event log application names on Windows
|
|
(MauMau, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This allows different instances to use the event log
|
|
with different identifiers, by setting the <link
|
|
linkend="guc-event-source"><varname>event_source</></link>
|
|
server parameter, which is similar to how <link
|
|
linkend="guc-syslog-ident"><varname>syslog_ident</></link> works.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <quote>unexpected EOF</> messages to <literal>DEBUG1</> level,
|
|
except when there is an open transaction (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This change reduces log chatter caused by applications that close
|
|
database connections ungracefully.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Statistical Views</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Track temporary file sizes and file counts in the <link
|
|
linkend="pg-stat-database-view"><structname>pg_stat_database</></link>
|
|
system view (Tomas Vondra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a deadlock counter to the <structname>pg_stat_database</>
|
|
system view (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Report checkpoint timing information in <link
|
|
linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</></link>
|
|
(Greg Smith, Peter Geoghegan)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Silently ignore nonexistent schemas specified in <link
|
|
linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This makes it more convenient to use generic path settings, which
|
|
might include some schemas that don't exist in all databases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow superusers to set <link
|
|
linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link>
|
|
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 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 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>
|
|
Allow a superuser to <command>SET</command> an extension's
|
|
superuser-only custom variable before loading the associated
|
|
extension (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The system now remembers whether a <command>SET</command> was
|
|
performed by a superuser, so that proper privilege checking can be
|
|
done when the extension is loaded.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="app-postmaster">postmaster</link> <option>-C</>
|
|
option to query configuration parameters (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
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>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title><filename>postgresql.conf</filename></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow multiple errors in <filename>postgresql.conf</filename>
|
|
to be reported, rather than just the first one (Alexey Klyukin,
|
|
Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow a reload of <filename>postgresql.conf</filename> to be
|
|
processed by all sessions, even if there are some settings that
|
|
are invalid for particular sessions (Alexey Klyukin)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, such not-valid-within-session values would cause all
|
|
setting changes to be ignored by that session.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <literal>include_if_exists</> facility for configuration
|
|
files (Greg Smith)
|
|
</para>
|
|
|
|
<para>
|
|
This works the same as <literal>include</>, except that an error
|
|
is not thrown if the file is missing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids expensive time zone probes during server start.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link
|
|
linkend="view-pg-settings"><structname>pg_settings</></link> to
|
|
report <filename>postgresql.conf</filename> line numbers on Windows
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Replication and Recovery</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <link
|
|
linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
|
|
mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
|
|
tool to archive WAL file changes as they are written, rather
|
|
than waiting for completed WAL files (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="app-pgbasebackup"><application>pg_basebackup</></link>
|
|
to make base backups from standby servers (Jun Ishizuka, Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This feature lets the work of making new base backups be off-loaded
|
|
from the primary server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow streaming of WAL files while <application>pg_basebackup</>
|
|
is performing a backup (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This allows passing of WAL files to the standby before they are
|
|
discarded on the primary.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Cancel the running query if the client gets disconnected
|
|
(Florian Pflug)
|
|
</para>
|
|
|
|
<para>
|
|
If the backend detects loss of client connection during a query, it
|
|
will now cancel the query rather than attempting to finish it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Retain column names at run time for row expressions
|
|
(Andrew Dunstan, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
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>
|
|
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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Warn about creating casts to or from domain types (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Such casts have no effect.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When a row fails a <literal>CHECK</> or <literal>NOT NULL</>
|
|
constraint, show the row's contents as error detail (Jan
|
|
Kundrát)
|
|
</para>
|
|
|
|
<para>
|
|
This should make it easier to identify which row is problematic
|
|
when an insert or update is processing many rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide more reliable operation during concurrent
|
|
<acronym>DDL</acronym> (Robert Haas, Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
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</command></link>
|
|
(Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This allows index removal without blocking other sessions.
|
|
</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>
|
|
<title>Constraints</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="ddl-constraints"><literal>CHECK</></link>
|
|
constraints to be declared <literal>NOT VALID</> (Álvaro
|
|
Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>CHECK</> constraints to be declared <literal>NO
|
|
INHERIT</> (Nikhil Sontakke, Alex Hunsaker, Álvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This makes them enforceable only on the parent table, not on
|
|
child tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to <link linkend="SQL-ALTERTABLE">rename</link>
|
|
constraints (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><command>ALTER</></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce need to rebuild tables and indexes for certain <link
|
|
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link>
|
|
... <literal>ALTER COLUMN TYPE</> operations (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
Increasing the length limit for a <type>varchar</> or <type>varbit</>
|
|
column, or removing the limit 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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid having <link linkend="SQL-ALTERTABLE"><command>ALTER
|
|
TABLE</command></link> revalidate foreign key constraints in some
|
|
cases where it is not necessary (Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>IF EXISTS</> options to some <command>ALTER</command>
|
|
commands (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <command>ALTER FOREIGN TABLE IF EXISTS foo RENAME
|
|
TO bar</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-ALTERFOREIGNDATAWRAPPER"><command>ALTER
|
|
FOREIGN DATA WRAPPER</command></link> ... <literal>RENAME</>
|
|
and <link linkend="SQL-ALTERSERVER"><command>ALTER
|
|
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)
|
|
</para>
|
|
|
|
<para>
|
|
You could already rename domains using <command>ALTER
|
|
TYPE</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 provide the
|
|
previous behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
|
|
tables, views, and composite types (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
For example, this allows a table to be created whose schema matches a
|
|
view.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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</command> ... <literal>AS EXECUTE</>
|
|
to handle <literal>WITH NO DATA</> and column name specifications
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Object Permissions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
|
|
option for views (KaiGai Kohei, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a new <link
|
|
linkend="SQL-CREATEFUNCTION"><literal>LEAKPROOF</></link> function
|
|
attribute to mark functions that can safely be pushed down
|
|
into <literal>security_barrier</> views (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for privileges on data types (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This adds support for the <acronym>SQL</>-conforming
|
|
<literal>USAGE</> privilege on types and domains. The intent is
|
|
to be able to restrict which users can create dependencies on types,
|
|
since such dependencies limit the owner's ability to alter the type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Check for <command>INSERT</command> privileges in <command>SELECT
|
|
INTO</command> / <command>CREATE TABLE AS</command> (KaiGai Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Operations</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link> to more
|
|
easily skip pages that cannot be locked (Simon Riggs, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This change should greatly reduce the incidence of <command>VACUUM</>
|
|
getting <quote>stuck</> waiting for other sessions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
|
|
<literal>(BUFFERS)</> count blocks dirtied and written (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>EXPLAIN ANALYZE</command> report the number of rows
|
|
rejected by filter steps (Marko Tiikkaja)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
|
|
time values are not wanted (Tomas Vondra)
|
|
</para>
|
|
|
|
<para>
|
|
This is accomplished by setting the new <literal>TIMING</> option to
|
|
<literal>FALSE</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="rangetypes">range data types</link>
|
|
(Jeff Davis, Tom Lane, Alexander Korotkov)
|
|
</para>
|
|
|
|
<para>
|
|
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 a <link linkend="datatype-json"><type>JSON</type></link>
|
|
data type (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
|
|
data with proper validation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-json"><function>array_to_json()</></link>
|
|
and <function>row_to_json()</> (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 (<type>int2</>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
|
|
declared <literal>NOT VALID</> (Álvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
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"><type>money</></link> data type (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
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 <quote>and</>, <quote>or</>, and <quote>not</>
|
|
operators for the <type>macaddr</> data type (Brendan Jurd)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Previously, it returned an empty array. This change will also
|
|
cause <function>xpath_exists()</> to return true, not false,
|
|
for such expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <acronym>XML</acronym> error handling to be more robust
|
|
(Florian Pflug)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 belonging to the same user
|
|
(Magnus Hagander, Josh Kupershmidt, Dan Farina)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only superusers were allowed to use these functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow importing and exporting of transaction snapshots (Joachim
|
|
Wieland, Tom Lane)
|
|
</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 <link linkend="SQL-SET-TRANSACTION"><command>SET
|
|
TRANSACTION SNAPSHOT</command></link>. Only snapshots from
|
|
currently-running transactions can be imported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <link
|
|
linkend="functions-info-catalog-table"><literal>COLLATION
|
|
FOR</></link> on expressions (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This returns a string representing the collation of the expression.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
|
|
(Josh Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<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)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="functions-info-session-table"><function>pg_trigger_depth()</></link>
|
|
function (Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
This reports the current trigger call depth.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="functions-aggregate-table"><function>string_agg()</></link>
|
|
to process <type>bytea</> values (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix regular expressions in which a back-reference occurs within
|
|
a larger quantified subexpression (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>^(\w+)( \1)+$</>. Previous releases did not
|
|
check that the back-reference actually matched the first occurrence.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="information-schema">Information Schema</link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add information schema views
|
|
<structname>role_udt_grants</>, <structname>udt_privileges</>,
|
|
and <structname>user_defined_types</> (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add composite-type attributes to the
|
|
information schema <structname>element_types</> view
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <structfield>interval_type</> columns in the information
|
|
schema (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly these columns read as nulls.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Implement the <structfield>with_hierarchy</> column in the
|
|
information schema <structname>table_privileges</> view (Peter
|
|
Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add display of sequence <literal>USAGE</> privileges to information
|
|
schema (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the information schema show default privileges (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, non-empty default permissions were not represented in the
|
|
views.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the PL/pgSQL <command>OPEN</> cursor command to supply
|
|
parameters by name (Yeb Havinga)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <command>GET STACKED DIAGNOSTICS</command> PL/pgSQL command
|
|
to retrieve exception info (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up PL/pgSQL array assignment by caching type information
|
|
(Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance and memory consumption for long chains of
|
|
<literal>ELSIF</> clauses (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Output the function signature, not just the name, in PL/pgSQL
|
|
error messages (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add PL/Python <acronym>SPI</acronym> cursor support (Jan
|
|
Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
This allows PL/Python to read partial result sets.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add result metadata functions to PL/Python (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically, this adds result object functions
|
|
<literal>.colnames</literal>, <literal>.coltypes</literal>, and
|
|
<literal>.coltypmods</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove support for Python 2.2 (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="xfunc-sql">SQL</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Allow <acronym>SQL</acronym>-language functions to reference
|
|
parameters by name (Matthew Draper)
|
|
</para>
|
|
|
|
<para>
|
|
To use this, simply name the function arguments and then reference
|
|
the argument names in the <acronym>SQL</acronym> function body.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="APP-INITDB"><application>initdb</></link>
|
|
options <option>--auth-local</> and <option>--auth-host</>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows separate control of <literal>local</> and
|
|
<literal>host</> <filename>pg_hba.conf</filename> authentication
|
|
settings. <option>--auth</> still controls both.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>--replication</>/<option>--no-replication</> flags to
|
|
<link linkend="APP-CREATEUSER"><application>createuser</></link>
|
|
to control replication permission (Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <option>--if-exists</> option to <link
|
|
linkend="APP-DROPDB"><application>dropdb</></link> and <link
|
|
linkend="APP-DROPUSER"><application>dropuser</></link> (Josh
|
|
Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Give command-line tools the ability to specify the name of the
|
|
database to connect to, and fall back to <literal>template1</>
|
|
if a <literal>postgres</> database connection fails (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a display mode to auto-expand output based on the
|
|
display width (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This adds the <literal>auto</> option to the <command>\x</>
|
|
command, which switches to the expanded mode when the normal
|
|
output would be wider than the screen.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow inclusion of a script file that is named relative to the
|
|
directory of the file from which it was invoked (Gurjeet Singh)
|
|
</para>
|
|
|
|
<para>
|
|
This is done with a new command <command>\ir</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for non-<acronym>ASCII</acronym> characters in
|
|
<application>psql</> variable names (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for major-version-specific <filename>.psqlrc</> files
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
<application>psql</> already supported minor-version-specific
|
|
<filename>.psqlrc</> files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide environment variable overrides for <application>psql</>
|
|
history and startup file locations (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
<envar>PSQL_HISTORY</envar> and <envar>PSQLRC</envar> now
|
|
determine these file names if set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <command>\setenv</> command to modify
|
|
the environment variables passed to child processes (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Name <application>psql</>'s temporary editor files with a
|
|
<filename>.sql</> extension (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows extension-sensitive editors to select the right mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</> to use zero-byte field and record
|
|
separators (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Various shell tools use zero-byte (NUL) separators,
|
|
e.g. <application>find</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the <command>\timing</> option report times for
|
|
failed queries (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Previously times were reported only for successful queries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Unify and tighten <application>psql</>'s treatment of <command>\copy</>
|
|
and SQL <command>COPY</> (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This fix makes failure behavior more predictable and honors
|
|
<command>\set ON_ERROR_ROLLBACK</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Informational Commands</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
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 <command>\d+</> (Magnus
|
|
Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show role password expiration dates in <command>\du</>
|
|
(Fabrízio de Royes Mello)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Display comments for casts, conversions, domains, and languages
|
|
(Josh Kupershmidt)
|
|
</para>
|
|
|
|
<para>
|
|
These are included in the output of <command>\dC+</>,
|
|
<command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
|
|
objects (Josh Kupershmidt)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
Change <command>\dd</> to display comments only for object types
|
|
without their own backslash command (Josh Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Tab Completion</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 tab completion support for
|
|
<command>EXECUTE</command> (Andreas Karlsson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow tab completion of role references in
|
|
<command>GRANT</command>/<command>REVOKE</command> (Peter
|
|
Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow tab completion of file names to supply quotes, when necessary
|
|
(Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change tab completion support for
|
|
<command>TABLE</command> to also include views (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <option>--exclude-table-data</> option to
|
|
<application>pg_dump</> (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows dumping of a table's definition but not its data,
|
|
on a per-table basis.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <option>--section</> option to <application>pg_dump</>
|
|
and <application>pg_restore</> (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Valid values are <literal>pre-data</>, <literal>data</>,
|
|
and <literal>post-data</>. The option can be
|
|
given more than once to select two or more sections.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 mention other
|
|
roles without generating an error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_dumpall</> to avoid errors if the
|
|
<literal>postgres</> database is missing in the new cluster
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Dump foreign server user mappings in user name order (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This helps produce deterministic dump files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Dump operators in a predictable order (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten rules for when extension configuration tables are dumped
|
|
by <application>pg_dump</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_dump</> emit more useful dependency
|
|
information (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The dependency links included in archive-format dumps were formerly
|
|
of very limited use, because they frequently referenced objects that
|
|
appeared nowhere in the dump. Now they represent actual dependencies
|
|
(possibly indirect) among the dumped objects.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</>'s performance when dumping many
|
|
database objects (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>libpq</> 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://</>. This can allow
|
|
applications to avoid implementing their own parser for URIs
|
|
representing database connections.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="libpq-connect-sslcompression">connection
|
|
option</link> to disable <acronym>SSL</acronym> compression
|
|
(Laurenz Albe)
|
|
</para>
|
|
|
|
<para>
|
|
This can be used to remove the overhead of <acronym>SSL</acronym>
|
|
compression on fast networks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="libpq-single-row-mode">single-row processing
|
|
mode</link> for better handling of large result sets
|
|
(Kyotaro Horiguchi, Marko Kreen)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <application>libpq</> always collected the entire query
|
|
result in memory before passing it back to the application.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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 the <filename>.pgpass</> file to include escaped characters
|
|
in the password field (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make library functions use <function>abort()</> instead of
|
|
<function>exit()</> when it is necessary to terminate the process
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
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>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove dead ports (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The following platforms are no longer supported: dgux,
|
|
nextstep, sunos4, svr4, ultrix4, univel, bsdi.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for building with <link linkend="install-windows">MS
|
|
Visual Studio 2010</link> (Brar Piening)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Install <filename>plpgsql.h</> into <filename>include/server</> during installation
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the latch facility to include detection of postmaster death
|
|
(Peter Geoghegan, Heikki Linnakangas, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This eliminates one of the main reasons that background processes
|
|
formerly had to wake up to poll for events.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use C flexible array members, where supported (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the concurrent transaction regression tests
|
|
(<application>isolationtester</>) (Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Modify <application>thread_test</> to create its test files in
|
|
the current directory, rather than <filename>/tmp</> (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve flex and bison warning and error reporting (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add memory barrier support (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This is currently unused.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Modify pgindent to use a typedef file (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a hook for processing messages due to be sent to the server
|
|
log (Martin Pihlak)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add object access hooks for <command>DROP</command> commands
|
|
(KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Centralize <command>DROP</command> handling for some object types
|
|
(KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <application>pg_upgrade</> test suite (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Sync regular expression code with <acronym>TCL</acronym> 8.5.11
|
|
and improve internal processing (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Move <acronym>CRC</acronym> tables to libpgport, and provide them
|
|
in a separate include file (Daniel Farina)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add options to <application>git_changelog</> for use in major
|
|
release note creation (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support Linux's <filename>/proc/self/oom_score_adj</> API (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Additional Modules</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve efficiency of <link linkend="dblink">dblink</link> by using
|
|
libpq's new single-row processing mode (Kyotaro Horiguchi, Marko
|
|
Kreen)
|
|
</para>
|
|
|
|
<para>
|
|
This improvement does not apply to
|
|
<function>dblink_send_query()</>/<function>dblink_get_result()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <literal>force_not_null</> option in <link
|
|
linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement dry-run mode for <link
|
|
linkend="pgarchivecleanup"><application>pg_archivecleanup</></link>
|
|
(Gabriele Bartolini)
|
|
</para>
|
|
|
|
<para>
|
|
This only outputs the names of files to be deleted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <link linkend="pgbench">pgbench</link> switches
|
|
<option>--unlogged-tables</>, <option>--tablespace</>, and
|
|
<option>--index-tablespace</> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link
|
|
linkend="pgtestfsync"><application>pg_test_fsync</></link> to test
|
|
for a fixed amount of time, rather than a fixed number of cycles
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The <option>-o</>/cycles option was removed, and
|
|
<option>-s</>/seconds added.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link
|
|
linkend="pgtesttiming"><application>pg_test_timing</></link>
|
|
utility to measure clock monotonicity and timing overhead (Ants
|
|
Aasma, Greg Smith)
|
|
</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>
|
|
<title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Overhaul <application>pg_upgrade</> logging and failure reporting
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_upgrade</> create a script to incrementally
|
|
generate more accurate optimizer statistics (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the time needed to generate minimal cluster statistics
|
|
after an upgrade.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_upgrade</> to upgrade an old cluster that
|
|
does not have a <literal>postgres</> database (Bruce Momjian)
|
|
</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
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_upgrade</> to handle configuration-only
|
|
directory installations (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
|
|
options to pass parameters to the servers (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for configuration-only directory installs.
|
|
</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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce cluster locking in <application>pg_upgrade</> (Bruce
|
|
Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically, only lock the old cluster if link mode is used,
|
|
and do it right after the schema is restored.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_stat_statements</> to aggregate similar
|
|
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 detailed log analysis.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add dirtied and written block counts and read/write times to
|
|
<application>pg_stat_statements</> (Robert Haas, Ants Aasma)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <application>pg_stat_statements</> from double-counting
|
|
<command>PREPARE</command> and <command>EXECUTE</command> commands
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="sepgsql">sepgsql</link></title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Support <literal>SECURITY LABEL</> on global objects (KaiGai
|
|
Kohei, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically, add security labels to databases,
|
|
tablespaces, and roles.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow sepgsql to honor database labels (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Perform sepgsql permission checks during the creation of various
|
|
objects (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>sepgsql_setcon()</> and related functions to control
|
|
the sepgsql security domain (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a user space access cache to sepgsql to improve performance
|
|
(KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Documentation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a rule to optionally build HTML documentation using the
|
|
stylesheet from the website (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Use <command>gmake STYLE=website draft</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <command>EXPLAIN</command> documentation (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Document that user/database names are preserved with double-quoting
|
|
by command-line tools like <application>vacuumdb</> (Bruce
|
|
Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Document the actual string returned by the client for MD5
|
|
authentication (Cyan Ogilvie)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Deprecate use of <literal>GLOBAL</> and <literal>LOCAL</> in
|
|
<command>CREATE TEMP TABLE</> (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</> has long treated these keyword as no-ops,
|
|
and continues to do so; but in future they might mean what the SQL
|
|
standard says they mean, so applications should avoid using them.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
</sect1>
|