</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>=></>
- 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 => 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>=></>
+ 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>=></> 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)
</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>
</para>
</listitem>
- </itemizedlist>
- </sect4>
+ </itemizedlist>
</sect3>
<listitem>
<para>
- No longer auto-lowercase procedural language names (Robert Haas)
+ No longer forcibly lowercase procedural language names (Robert Haas)
</para>
<para>
</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>
</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>
</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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
</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>
<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>
</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><@</literal>, <literal>&&</literal>, and
+ <literal>@></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 <@,
- &&, and @> (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>
<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, Á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, Á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>
<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>
<listitem>
<para>
- Have <acronym>WAL</acronym> replay report failures sooner
+ Make <acronym>WAL</acronym> replay report failures sooner
(Fujii Masao)
</para>
<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>
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>
<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>
<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>
<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
</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>
<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>
<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)
<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>
<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>
<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>
<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>
</para>
</listitem>
- <listitem>
- <para>
- Exclude the postmaster.opts file from <application>pg_basebackup</>
- backups (Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
- </sect4>
+ </itemizedlist>
</sect3>
<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>
<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át)
</para>
</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>
</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>
</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>
<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>
<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>
<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>
<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>
</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>
</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>
<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>
</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>
<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>
<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>
</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>
</para>
</listitem>
- </itemizedlist>
-
- </sect4>
+ </itemizedlist>
</sect3>
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>
</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
</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>
<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>
</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>
<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>
<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>
</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>
</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>
</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>
<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>
<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>
<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>
<para>
<application>psql</> already supported minor-version-specific
- <filename>.psqlrc</>
- files.
+ <filename>.psqlrc</> files.
</para>
</listitem>
<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>
<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ízio de Royes Mello)
+ Show role password expiration dates in <command>\du</>
+ (Fabrí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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
</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
</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>
<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>
<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>
</para>
<para>
- Specifically, add <literal>SECURITY LABEL</>s to databases,
+ Specifically, add security labels to databases,
tablespaces, and roles.
</para>
</listitem>
<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>
</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