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