<note>
<title>Release Date</title>
<simpara>2014-??-??</simpara>
- <simpara>Current as of 2014-05-10</simpara>
+ <simpara>Current as of 2014-08-17</simpara>
</note>
<sect2>
<listitem>
<para>
- Allow materialized views to be refreshed without blocking reads
+ Allow <link linkend="rules-materializedviews">materialized views</>
+ to be refreshed without blocking reads
</para>
</listitem>
<listitem>
<para>
- <link linkend="logicaldecoding">Logical decoding</link> allows database
- changes to be streamed out in a customizable format
+ Add support for <link linkend="logicaldecoding">logical decoding</>
+ of WAL data, to allow database changes to be streamed out in a
+ customizable format
</para>
</listitem>
<listitem>
<para>
- Allow <link linkend="bgworker">background workers</link>
+ Allow <link linkend="bgworker">background worker processes</>
to be dynamically registered, started and terminated
</para>
</listitem>
<listitem>
<para>
- Add structured (non-text) data type (<link
- linkend="datatype-json"><type>JSONB</></link>) for storing
- <type>JSON</> data
+ Add <link linkend="datatype-json"><type>jsonb</></link>, a more
+ capable and efficient data type for for storing <acronym>JSON</> data
</para>
</listitem>
<listitem>
<para>
- Add <acronym>SQL</>-level command <link
- linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link>
- to edit the <filename>postgresql.conf</> configuration file
+ Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
+ for updating <filename>postgresql.conf</> configuration file entries
</para>
</listitem>
<listitem>
<para>
- Reduce lock levels of some <link
- linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands
+ Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
+ commands
</para>
</listitem>
<title>Migration to Version 9.4</title>
<para>
- A dump/restore using <link
- linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
- of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
- required for those wishing to migrate data from any previous release.
+ A dump/restore using <xref linkend="app-pg-dumpall">, or use
+ of <xref linkend="pgupgrade">, is required for those wishing to migrate
+ data from any previous release.
</para>
<para>
<listitem>
<para>
- Cause consecutive whitespace in <link
- linkend="functions-formatting-table"><function>to_timestamp()</></link>
- and <function>to_date()</> format strings to consume a corresponding
- number of characters in the input string (whitespace or not), then
- conditionally consume adjacent whitespace, if not in <literal>FX</>
- mode (Jeevan Chalke)
+ Tighten checks for multidimensional <link
+ linkend="arrays">array</link> input (Bruce Momjian)
</para>
<para>
- Previously consecutive whitespace characters in a non-<literal>FX</>
- format string behaved like a single whitespace character and consumed
- all adjacent whitespace in the input string. For example, previously
- format string space-space-space would consume only the first space in
- ' 12', while it will now consume all three characters.
+ Previously, an input array string that started with a single-element
+ array dimension could later contain multidimensional segments,
+ e.g. <literal>'{{1}, {2,3}}'::int[]</>.
</para>
</listitem>
<listitem>
<para>
- Tighten checks for multidimensional <link
- linkend="arrays">array</link> input (Bruce Momjian)
+ Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
+ text values are no longer rendered with the backslash escaped
+ (Andrew Dunstan)
</para>
<para>
- Previously an input array string that started with a single-element
- array dimension could later contain multidimensional segments,
- e.g. <literal>'{{1}, {2,3}}'::int[]</>.
+ Previously, all backslashes in text values being formed into JSON
+ were escaped. Now a backslash followed by <literal>u</> and four
+ hexadecimal digits is not escaped, as this is a legal sequence in a
+ JSON string value, and escaping the backslash led to some perverse
+ results.
</para>
</listitem>
<listitem>
<para>
- Change empty arrays returned by <application>intarray</> to be
- zero-dimensional arrays (Bruce Momjian)
+ When converting values of type <type>timestamp</>
+ or <type>timestamptz</>
+ to <link linkend="datatype-json"><type>JSON</type></link>, render the
+ values in a format compliant with ISO 8601 (Andrew Dunstan)
</para>
<para>
- Previously, empty arrays were returned as one-dimensional empty arrays
- whose text representation looked the same as zero-dimensional arrays
- (<literal>{}</>). <application>intarray</>'s behavior in this area
- now matches the built-in array operators.
+ Previously such values were rendered according to the current
+ <xref linkend="guc-datestyle"> setting; but many JSON processors
+ require timestamps to be in ISO 8601 format.
</para>
</listitem>
<listitem>
<para>
- Disallow NULL <link
- linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
- function arguments (Pavel Stehule)
+ Cause consecutive whitespace in <link
+ linkend="functions-formatting-table"><function>to_timestamp()</></link>
+ and <function>to_date()</> format strings to consume a corresponding
+ number of characters in the input string (whitespace or not), then
+ conditionally consume adjacent whitespace, if not in <literal>FX</>
+ mode (Jeevan Chalke)
</para>
<para>
- Such arguments must be cast to an array data type.
+ Previously, consecutive whitespace characters in a non-<literal>FX</>
+ format string behaved like a single whitespace character and consumed
+ all adjacent whitespace in the input string. For example, previously
+ a format string of three spaces would consume only the first space in
+ <literal>' 12'</>, but it will now consume all three characters.
</para>
</listitem>
<listitem>
<para>
- <link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
- outputs constant time zone offsets in <acronym>POSIX</>-style zone
- format (Tom Lane)
+ Fix <link
+ linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
+ to ignore stripped lexemes (Alex Hill)
</para>
<para>
- Previously it was returned in <link
- linkend="datatype-interval-output"><type>INTERVAL</></link> format.
- The new format can be passed to <command>SET TIME ZONE</>.
+ Previously, stripped lexemes were treated as if they had a default
+ location, producing a rank of dubious usefulness.
</para>
</listitem>
<listitem>
<para>
- Values of type
- <link linkend="datatype-datetime"><type>timestamp</></link> and
- <link linkend="datatype-datetime"><type>timestamptz</></link> are now
- rendered in a string format compliant with ISO 8601 rather than the
- default output format when converting to or used in
- <link linkend="datatype-json"><type>JSON</type></link>.
- (Andrew Dunstan)
+ For functions declared to
+ take <link linkend="xfunc-sql-variadic-functions"><literal>VARIADIC
+ "any"</></link>, an actual parameter marked as <literal>VARIADIC</>
+ must be of a determinable array type (Pavel Stehule)
</para>
<para>
- Previously these were rendered in the default text output format
- for the type, but many JSON processors require timestamps in ISO 8601
- format.
+ Such parameters can no longer be written as an undecorated string
+ literal or <literal>NULL</>; a cast to an appropriate array data type
+ will now be required. Note that this does not affect parameters not
+ marked <literal>VARIADIC</>.
</para>
</listitem>
<listitem>
<para>
- Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
- text values are no longer rendered with the backslash escaped.
- (Andrew Dunstan)
- </para>
-
- <para>
- Previously all backslashes in text values being formed into JSON were
- escaped. Now a backslash followed by "u" and four hexadecimal digits is
- not escaped, as this is a legal sequence in a JSON string value, and
- escaping the backslash led to some perverse results.
+ <xref linkend="sql-discard"> now also discards sequence-related state
+ (Fabrízio de Royes Mello, Robert Haas)
</para>
</listitem>
<listitem>
<para>
Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN
- ANALYZE</></link>'s <quote>total runtime</quote> output to <quote>execution time</quote>
- (Tom Lane)
+ ANALYZE</></link>'s <quote>total runtime</quote> output
+ to <quote>execution time</quote> (Tom Lane)
</para>
<para>
- This was required now that planning time is also reported.
+ Now that planning time is also reported, the previous name was
+ confusing.
</para>
</listitem>
<listitem>
<para>
- Fix <link
- linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
- to ignore stripped lexemes (Alex Hill)
+ <link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
+ outputs simple numeric UTC offsets in <acronym>POSIX</> timezone
+ format (Tom Lane)
</para>
<para>
- Previously stripped lexemes got a default location and could be
- considered if mixed with non-stripped lexemes.
+ Previously, such timezone settings were displayed as <link
+ linkend="datatype-interval-output"><type>interval</></link> values.
+ The new output is properly interpreted by <command>SET TIME ZONE</>
+ when passed as a simple string, whereas the old output required
+ special treatment to be re-parsed correctly.
</para>
</listitem>
</para>
<para>
- Restoring such check constraints will lead to restore errors.
+ Previously such check constraints were allowed, but they would often
+ cause errors during restores.
</para>
</listitem>
<listitem>
<para>
- Use the last specified <link
- linkend="recovery-target"><varname>recovery_target</></link> if
- multiple are specified (Heikki Linnakangas)
+ Use the last specified <xref linkend="recovery-target"> if multiple
+ values are specified (Heikki Linnakangas)
</para>
</listitem>
<para>
User commands that did their own quote preservation might need
- adjustment, e.g. <link
- linkend="guc-archive-command">archive_command</link>, <link
- linkend="restore-command">restore_command</link>, <command>COPY TO/FROM
- PROGRAM</>.
+ adjustment. This is likely to be an issue for commands used in
+ <xref linkend="guc-archive-command">, <xref linkend="restore-command">,
+ and <link linkend="sql-copy"><command>COPY TO/FROM PROGRAM</></link>.
</para>
</listitem>
<listitem>
<para>
- Remove system column <link
+ Remove catalog column <link
linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</></link>
(Michael Paquier)
</para>
<listitem>
<para>
- Remove support for native <application>krb5</> authentication
- (Magnus Hagander)
+ Remove catalog column <link
+ linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
+ (Kevin Grittner)
</para>
<para>
- The proper way to use <application>Kerberos</> authentication is
- with <acronym>GSSAPI</>.
+ Per-column rules have not been supported since
+ <application>PostgreSQL</> 7.3.
</para>
</listitem>
<listitem>
<para>
- Handle domains over arrays like plain arrays in PL/Python
- (Rodolfo Campero)
+ Remove native support for <application>Kerberos</> authentication
+ (<option>--with-krb5</>, etc)
+ (Magnus Hagander)
</para>
<para>
- Previously they were treated as strings.
+ The supported way to use <application>Kerberos</> authentication is
+ with <acronym>GSSAPI</>. The native code has been deprecated since
+ <productname>PostgreSQL</> 8.3.
</para>
</listitem>
<listitem>
<para>
- Have libpq's <link
- linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
- and <link
- linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
- functions process zero-length strings as defaults (Adrian
- Vondendriesch)
+ In <application>PL/Python</>, handle domains over arrays like the
+ underlying array type (Rodolfo Campero)
</para>
<para>
- Previously, these functions treated zero-length string values as
- defaults only in some cases.
+ Previously such values were treated as strings.
</para>
</listitem>
<listitem>
<para>
- Remove system column <link
- linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
- (Kevin Grittner)
+ Make libpq's <link
+ linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
+ and <link
+ linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
+ functions process zero-length strings as defaults (Adrian
+ Vondendriesch)
</para>
<para>
- Per-column rules have not been supported since
- <application>PostgreSQL</> 7.3.
+ Previously, these functions treated zero-length string values as
+ selecting the default in only some cases.
</para>
</listitem>
<listitem>
<para>
- <link linkend="pgupgrade"><application>pg_upgrade</></link> now
- uses <option>-U</> to specify the user name (Bruce Momjian)
- </para>
-
- <para>
- Previously <option>-u</> was used to specify the user name.
- Also spell the long option as <option>--username</>, again for
- consistency with other tools.
+ Change empty arrays returned by the <xref linkend="intarray"> module
+ to be zero-dimensional arrays (Bruce Momjian)
</para>
- </listitem>
- <listitem>
<para>
- The maximum number of <link linkend="bgworker">background workers</link>
- that can be registered
- by <function>RegisterBackgroundWorker()</function> is now limited to
- <link linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
+ Previously, empty arrays were returned as zero-length one-dimensional
+ arrays, whose text representation looked the same as zero-dimensional
+ arrays (<literal>{}</>), but they acted differently in array
+ operations. <application>intarray</>'s behavior in this area now
+ matches the built-in array operators.
</para>
</listitem>
<listitem>
<para>
- <link linkend="bgworker">background workers</link> registered at
- postmaster startup time should set
- <structfield>bgw_notify_pid</structfield> to 0.
- <command></>
+ <xref linkend="pgupgrade"> now uses <option>-U</>
+ or <option>--username</> to specify the user name (Bruce Momjian)
</para>
- </listitem>
- <listitem>
<para>
- <command>DISCARD ALL</> now also discards sequence state.
+ Previously this option was spelled <option>-u</> or <option>--user</>,
+ but that was inconsistent with other tools.
</para>
</listitem>
<listitem>
<para>
- Have <link linkend="SQL-VACUUM"><command>VACUUM</></link> properly
- report dead but not removable rows to the statistics collector
- (Hari Babu)
+ Allow <link linkend="bgworker">background worker processes</link>
+ to be dynamically registered, started and terminated (Robert Haas)
</para>
<para>
- Previously these were reported as live rows.
+ The <filename>contrib/worker_spi</> module shows an example of use
+ of this feature.
</para>
</listitem>
+
<listitem>
<para>
- Allow <link linkend="bgworker">background workers</link> to be
- dynamically registered, started and terminated (Robert Haas)
+ Allow dynamic allocation of shared memory segments (Robert Haas,
+ Amit Kapila)
</para>
<para>
- <function>worker_spi_launch()</> in <application>worker_spi</>
- shows an example of its use.
+ This feature is illustrated in <xref linkend="test-shm-mq">.
</para>
</listitem>
<listitem>
<para>
- Allow dynamic allocation of shared memory segments (Robert Haas,
- Amit Kapila)
+ During crash recovery or immediate shutdown, send uncatchable
+ termination signals (<systemitem>SIGKILL</>) to child processes
+ that do not shut down promptly (MauMau, Álvaro Herrera)
</para>
<para>
- This is illustrated in <link
- linkend="test-shm-mq"><application>test_shm_mq</></link>.
+ This reduces the likelihood of leaving orphaned child processes
+ behind after <xref linkend="app-postmaster"> shutdown, as well
+ as ensuring that crash recovery can proceed if some child processes
+ have become <quote>stuck</>.
</para>
</listitem>
<listitem>
<para>
- Improve <acronym>SSL</> renegotiation handling (Álvaro
- Herrera)
+ Improve randomness of the database system identifier (Tom Lane)
</para>
</listitem>
<listitem>
<para>
- During immediate shutdown send uncatchable termination signals
- to child processes that have not already shutdown (MauMau,
- Álvaro Herrera)
+ Make <xref linkend="SQL-VACUUM"> properly report dead but
+ not-yet-removable rows to the statistics collector (Hari Babu)
</para>
<para>
- This reduces the likelihood of orphaned child processes after
- <link linkend="app-postmaster"><application>postmaster</></link>
- shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve randomness of the database system identifier (Tom Lane)
+ Previously these were reported as live rows.
</para>
</listitem>
<listitem>
<para>
- Improve speed of multi-key <link
- linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
- Heikki Linnakangas)
+ Reduce <link linkend="GIN"><acronym>GIN</></link> index size
+ (Alexander Korotkov, Heikki Linnakangas)
</para>
- </listitem>
- <listitem>
<para>
- Reduce <link linkend="GIN"><acronym>GIN</></link> index size
- (Alexander Korotkov, Heikki Linnakangas)
+ Indexes upgraded via <xref linkend="pgupgrade"> will work fine
+ but will still be in the old, larger <acronym>GIN</> format.
+ Use <xref linkend="SQL-REINDEX"> to recreate such an index in the
+ new format.
</para>
+ </listitem>
+ <listitem>
<para>
- Indexes upgraded via <link
- linkend="pgupgrade"><application>pg_upgrade</></link> will work
- fine but will use the old larger <acronym>GIN</> format; <link
- linkend="SQL-REINDEX"><command>REINDEX</></link> will recreate
- the index in the new format.
+ Improve speed of multi-key <link
+ linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
+ Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Add <link linkend="GiST"><acronym>GiST</></link> index support
- for <link linkend="datatype-inet"><type>INET</></link> and
- <link linkend="datatype-cidr"><type>CIDR</></link> data types
+ for <link linkend="datatype-inet"><type>inet</></link> and
+ <link linkend="datatype-cidr"><type>cidr</></link> data types
(Emre Hasegeli)
</para>
<para>
Such indexes improve <link
- linkend="cidr-inet-operators-table">subnet</link> and supernet
+ linkend="cidr-inet-operators-table">subnet and supernet</link>
lookups and ordering comparisons.
</para>
</listitem>
<listitem>
<para>
- Fix race condition in B-tree page deletion (Heikki Linnakangas)
+ Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
- Allow multiple backends to simultaneously insert into <link
- linkend="wal"><acronym>WAL</></link> buffers (Heikki Linnakangas)
+ Allow multiple backends to insert
+ into <link linkend="wal"><acronym>WAL</></link> buffers
+ concurrently (Heikki Linnakangas)
</para>
<para>
<listitem>
<para>
- Improve performance of <link
- linkend="syntax-window-functions"><literal>WINDOW</></link>
- aggregate functions (David Rowley, Florian Pflug, Tom Lane)
+ Improve performance of aggregate functions used as <link
+ linkend="syntax-window-functions">window functions</link>
+ (David Rowley, Florian Pflug, Tom Lane)
</para>
</listitem>
<listitem>
<para>
- Improve speed of aggregates which use <link
- linkend="datatype-numeric"><type>NUMERIC</></link>s (Hadi
- Moshayedi)
- </para>
-
- <para>
- These include <function>SUM()</>, <function>AVG()</>, <link
- linkend="functions-aggregate-statistics-table"><function>STDDEV()</></link>,
- and <function>VARIANCE()</>.
+ Improve speed of aggregates that
+ use <link linkend="datatype-numeric"><type>numeric</></link> state
+ values (Hadi Moshayedi)
</para>
</listitem>
<listitem>
<para>
Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
- tuples when tables are rewritten with <link
- linkend="SQL-CLUSTER"><command>CLUSTER</></link> or <link
+ tuples when tables are rewritten with <xref
+ linkend="SQL-CLUSTER"> or <link
linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas,
Andres Freund)
</para>
<listitem>
<para>
- Improve speed of <link linkend="SQL-COPY"><command>COPY</></link>
+ Improve speed of <xref linkend="SQL-COPY">
with <literal>DEFAULT</> <link
linkend="functions-sequence-table"><function>nextval()</></link>
columns (Simon Riggs)
<listitem>
<para>
Raise hard limit on the number of tuples held in memory during sorting
- and B-tree <link linkend="SQL-CREATEINDEX">index builds</link> (Noah
- Misch)
+ and B-tree index builds (Noah Misch)
</para>
</listitem>
<listitem>
<para>
- Reduce memory allocated by <link
- linkend="SQL-DO"><literal>DO</></link> blocks (Tom Lane)
+ Reduce memory allocated by <application>PL/pgSQL</>
+ <xref linkend="SQL-DO"> blocks (Tom Lane)
</para>
</listitem>
<listitem>
<para>
- Have the optimizer be more aggressive in creating restrictions
+ Make the planner more aggressive in extracting restriction clauses
from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane)
</para>
</listitem>
<listitem>
<para>
- Auto-resize the catalog cache (Heikki Linnakangas)
+ Disallow pushing volatile <literal>WHERE</> clauses down
+ into <literal>DISTINCT</> subqueries (Tom Lane)
+ </para>
+
+ <para>
+ Pushing down a <literal>WHERE</> clause can produce a more
+ efficient plan overall, but at the cost of evaluating the clause
+ more often than is implied by the text of the query; so don't do it
+ if the clause contains any volatile functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Auto-resize the catalog caches (Heikki Linnakangas)
</para>
<para>
- This reduces memory consumption for backends accessing only a few
- tables, and improves performance for backend accessing many tables.
+ This reduces memory consumption for sessions accessing only a few
+ tables, and improves performance for sessions accessing many tables.
</para>
</listitem>
<listitem>
<para>
- Expose the estimation of number of changed tuples since last <link
- linkend="vacuum-for-statistics">ANALYZE</link> (Mark Kirkwood)
+ Add <xref linkend="pg-stat-archiver-view"> system view to
+ report <link linkend="wal"><acronym>WAL</></link> archiver activity
+ (Gabriele Bartolini)
</para>
+ </listitem>
+ <listitem>
<para>
- This appears in <link
- linkend="pg-stat-all-tables-view"><structfield>pg_stat_all_tables.n_mod_since_analyze</></link>.
+ Add <structfield>n_mod_since_analyze</> columns to
+ <xref linkend="pg-stat-all-tables-view"> and related system views
+ (Mark Kirkwood)
</para>
- </listitem>
- <listitem>
<para>
- Add <link
- linkend="pg-stat-archiver-view"><structname>pg_stat_archiver</></link>
- system view to report <link linkend="wal"><acronym>WAL</></link>
- archiver activity (Gabriele Bartolini)
+ These columns expose the system's estimate of the number of changed
+ tuples since the table's last <xref linkend="sql-analyze">. This
+ estimate drives decisions about when to auto-analyze.
</para>
</listitem>
<listitem>
<para>
- Add <varname>backend_xid</> and <varname>backend_xmin</> columns to
- the system view <link linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link>
- and <varname>backend_xmin</> to <link linkend="pg-stat-replication-view"><structname>pg_stat_replication</></link>
- (Christian Kruse)
+ Add <structfield>backend_xid</> and <structfield>backend_xmin</>
+ columns to the system view <xref linkend="pg-stat-activity-view">,
+ and a <structfield>backend_xmin</> column to
+ <xref linkend="pg-stat-replication-view"> (Christian Kruse)
</para>
</listitem>
<para>
This allows use of Elliptic Curve keys for server authentication.
- Such keys are faster and have improved security over <acronym>RSA</> keys.
- The new configuration parameter
- <link linkend="guc-ssl-ecdh-curve"><varname>ssl_ecdh_curve</></link>
+ Such keys are faster and have better security than <acronym>RSA</>
+ keys. The new configuration parameter
+ <xref linkend="guc-ssl-ecdh-curve">
controls which curve is used for <acronym>ECDH</>.
</para>
</listitem>
<listitem>
<para>
- Improve the default <link
- linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> value
+ Improve the default <xref linkend="guc-ssl-ciphers"> setting
(Marko Kreen)
</para>
</listitem>
<listitem>
<para>
- Allow the server to specify the preferred <acronym>SSL</> cipher
- order (Marko Kreen)
+ By default, the server not the client now controls the preference
+ order of <acronym>SSL</> ciphers
+ (Marko Kreen)
+ </para>
+
+ <para>
+ Previously, the order specified by <xref linkend="guc-ssl-ciphers">
+ was usually ignored in favor of client-side defaults, which are not
+ configurable in most <productname>PostgreSQL</> clients. If
+ desired, the old behavior can be restored via the new configuration
+ parameter <xref linkend="guc-ssl-prefer-server-ciphers">.
</para>
+ </listitem>
+ <listitem>
<para>
- This is controlled by the new configuration parameter <link
- linkend="guc-ssl-prefer-server-ciphers"><varname>ssl_prefer_server_ciphers</></link>.
+ Make <xref linkend="guc-log-connections"> show <acronym>SSL</>
+ encryption information (Andreas Kunert)
</para>
</listitem>
<listitem>
<para>
- Have <link
- linkend="guc-log-connections"><varname>log_connections</></link>
- show <acronym>SSL</> encryption information (Andreas Kunert)
+ Improve <acronym>SSL</> renegotiation handling (Álvaro
+ Herrera)
</para>
</listitem>
<listitem>
<para>
- Add <acronym>SQL</>-level <link
- linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link> command
- to adjust server-wide settings (Amit Kapila)
+ Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
+ for updating <filename>postgresql.conf</> configuration file entries
+ (Amit Kapila)
</para>
<para>
- Previously such settings could only be changed by
- editing <filename>postgresql.conf</> at the file system level.
+ Previously such settings could only be changed by manually
+ editing <filename>postgresql.conf</>.
</para>
</listitem>
<listitem>
<para>
- Add <link linkend="guc-huge-pages"><varname>huge_pages</></link>
- configuration parameter to use huge memory pages on Linux
- (Christian Kruse, Richard Poole, Abhijit Menon-Sen)
- </para>
-
- <para>
- This can improve performance on large memory systems.
+ Add <xref linkend="guc-autovacuum-work-mem"> configuration parameter
+ to control the amount of memory used by autovacuum workers
+ (Peter Geoghegan)
</para>
</listitem>
<listitem>
<para>
- Show <acronym>PID</>s of lock holders and
- waiters and improve relation information in <link
- linkend="guc-log-lock-waits"><varname>log_lock_waits</></link>
- log messages (Christian Kruse)
+ Add <xref linkend="guc-huge-pages"> parameter to allow using huge
+ memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
+ Menon-Sen)
</para>
- </listitem>
- <listitem>
<para>
- Add parameter <link
- linkend="guc-autovacuum-work-mem"><varname>autovacuum_work_mem</></link>
- to control the amount of memory used by autovacuum workers
- (Peter Geoghegan)
+ This can improve performance on large-memory systems.
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
+ Add <xref linkend="guc-max-worker-processes"> parameter
to limit the number of background workers (Robert Haas)
</para>
<para>
- This is helpful in configuring the standby server to have the
- required same number of worker processes as the primary.
+ This is helpful in configuring a standby server to have the
+ required number of worker processes (the same as the primary).
</para>
</listitem>
<listitem>
<para>
- Add configuration parameter <link
- linkend="guc-wal-log-hints"><varname>wal_log_hints</></link>
- to enable logging of hint bits (Sawada Masahiko)
+ Add superuser-only <xref linkend="guc-session-preload-libraries">
+ parameter to load libraries at session start (Peter Eisentraut)
</para>
<para>
- Hint bits are not normally logged, except when checksums are enabled.
- This is useful for external tools like <application>pg_rewind</>.
+ In contrast to <xref linkend="guc-local-preload-libraries">, this
+ parameter can load any shared library, not just those in
+ the <filename>$libdir/plugins</> directory.
</para>
</listitem>
<listitem>
<para>
- Allow <function>printf</function>-style space padding to be specified in <link
- linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
- (David Rowley)
+ Add <xref linkend="guc-wal-log-hints"> parameter to enable WAL
+ logging of hint-bit changes (Sawada Masahiko)
+ </para>
+
+ <para>
+ Hint bit changes are not normally logged, except when checksums are
+ enabled. This is useful for external tools
+ like <application>pg_rewind</>.
</para>
</listitem>
<listitem>
<para>
- Add superuser-only <link
- linkend="guc-session-preload-libraries"><varname>session_preload_libraries</></link>
- configuration parameter to load libraries at session start
- (Peter Eisentraut)
+ Increase the default settings of <xref linkend="guc-work-mem">
+ and <xref linkend="guc-maintenance-work-mem"> by four times (Bruce
+ Momjian)
</para>
<para>
- In contrast
- to <link linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
- this parameter can load any shared library, not just those in
- the <filename>$libdir/plugins</> directory.
+ The new defaults are 4MB and 64MB respectively.
</para>
</listitem>
<listitem>
<para>
- Reduce server logging level when loading shared libraries (Peter
- Geoghegan)
+ Increase the default setting of <xref
+ linkend="guc-effective-cache-size">
+ to 4GB (Bruce Momjian, Tom Lane)
</para>
+ </listitem>
+ <listitem>
<para>
- The previous level was <literal>LOG</>, which was too verbose
- for per-session libraries.
+ Allow <function>printf</function>-style space padding to be
+ specified in <xref linkend="guc-log-line-prefix"> (David Rowley)
</para>
</listitem>
<listitem>
<para>
- Increase <link
- linkend="guc-work-mem"><varname>work_mem</></link> and <link
- linkend="guc-maintenance-work-mem"><varname>maintenance_work_mem</></link>
- defaults by four times (Bruce Momjian)
+ Allow terabyte units (<literal>TB</>) to be used when specifying
+ configuration variable values (Simon Riggs)
</para>
+ </listitem>
+ <listitem>
<para>
- The new defaults are 4MB and 64MB respectively.
+ Show <acronym>PID</>s of lock holders and waiters and improve
+ information about relations in <xref linkend="guc-log-lock-waits">
+ log messages (Christian Kruse)
</para>
</listitem>
<listitem>
<para>
- Increase the default setting of <link
- linkend="guc-effective-cache-size"><varname>effective_cache_size</></link>
- to 4GB (Bruce Momjian, Tom Lane)
+ Reduce server logging level when loading shared libraries (Peter
+ Geoghegan)
</para>
- </listitem>
- <listitem>
<para>
- Allow terabyte units to be specified for configuration variable
- values (Simon Riggs)
+ The previous level was <literal>LOG</>, which was too verbose
+ for per-session libraries.
</para>
</listitem>
<listitem>
<para>
- Have Windows <literal>SQL_ASCII</>-encoded databases and server
- process (e.g. <link linkend="app-postmaster">postmaster</>) emit
- messages in the character encoding of the server's Windows user locale
+ On Windows, make <literal>SQL_ASCII</>-encoded databases and server
+ processes (e.g., <xref linkend="app-postmaster">) emit messages in
+ the character encoding of the server's Windows user locale
(Alexander Law, Noah Misch)
</para>
<itemizedlist>
+ <listitem>
+ <para>
+ Add <link linkend="streaming-replication-slots">replication
+ slots</link> to coordinate activity on streaming standbys with the
+ node they are streaming from (Andres Freund, Robert Haas)
+ </para>
+
+ <para>
+ Replication slots allow preservation of resources like
+ <acronym>WAL</> files on the primary until they are no longer
+ needed by standby servers.
+ </para>
+ </listitem>
+
<listitem>
<para>
Add <link linkend="recovery-config"><filename>recovery.conf</></link>
- parameter <link linkend="recovery-min-apply-delay"><varname>recovery_min_apply_delay</></link>
+ parameter <xref linkend="recovery-min-apply-delay">
to delay replication (Robert Haas, Fabrízio de Royes Mello,
Simon Riggs)
</para>
<para>
- This is useful for delaying the replay of user errors on standby
- servers.
+ Delaying replay on standby servers can be useful for recovering
+ from user errors.
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="recovery-target"><varname>recovery_target</></link>
+ Add <xref linkend="recovery-target">
option <option>immediate</> to stop <link
linkend="wal"><acronym>WAL</></link> recovery as soon as a
consistent state is reached (MauMau, Heikki Linnakangas)
<para>
The timestamp reported
by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
- now shows information about already-committed records, not of transactions
- about to be committed. Recovering to a restore point now replays the
- restore point, rather than stopping just before the restore point.
+ now reflects already-committed records, not transactions about to
+ be committed. Recovering to a restore point now replays the restore
+ point, rather than stopping just before the restore point.
</para>
</listitem>
<para>
<link
linkend="functions-admin-backup-table"><function>pg_switch_xlog()</></link>
- now clears the trailing unused space in the <acronym>WAL</> file
+ now clears any unused trailing space in the old <acronym>WAL</> file
(Heikki Linnakangas)
</para>
<listitem>
<para>
- Add <link linkend="streaming-replication-slots">replication
- slots</link> to coordinate activity on streaming standbys with the
- node they are streaming from (Andres Freund, Robert Haas)
- </para>
-
- <para>
- Replication slots allow preservation of resources like
- <acronym>WAL</> files on the primary that are needed by standby
- servers.
+ Report failure return codes from <link
+ linkend="archive-recovery-settings">external recovery commands</>
+ (Peter Eisentraut)
</para>
</listitem>
</para>
</listitem>
- <listitem>
- <para>
- Report failure return codes from <link
- linkend="archive-recovery-settings">external recovery commands</>
- (Peter Eisentraut)
- </para>
- </listitem>
-
<listitem>
<para>
Write <acronym>WAL</> records of running transactions more
</para>
<para>
- This allows standby servers to start faster and cleanup resources
+ This allows standby servers to start faster and clean up resources
more aggressively.
</para>
</listitem>
<title><link linkend="logicaldecoding">Logical Decoding</></title>
<para>
- Logical decoding allows database changes to be optionally streamed in a
+ Logical decoding allows database changes to be streamed in a
configurable format. The data is read from
the <link linkend="wal"><acronym>WAL</></link> and transformed into the
desired target format. To implement this feature, the following changes
</para>
<itemizedlist>
- <!-- FIXME: This imo needs a pretty fundamental rewrite -->
- <listitem>
- <para>
- Add new <option>logical</> <link
- linkend="guc-wal-level"><varname>wal_level</></link> to enable
- logical change-set encoding in <acronym>WAL</> (Andres Freund)
- </para>
+ <listitem>
<para>
- This interacts with <link
- linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>.
+ Add support for <link linkend="logicaldecoding">logical decoding</>
+ of WAL data, to allow database changes to be streamed out in a
+ customizable format
+ (Andres Freund)
</para>
</listitem>
<listitem>
<para>
- Allow <link
- linkend="app-pgrecvlogical"><application>pg_recvlogical</></link>
- to receive logical decoding data (Andres Freund)
+ Add new <xref linkend="guc-wal-level"> setting <option>logical</>
+ to enable logical change-set encoding in <acronym>WAL</> (Andres
+ Freund)
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="test-decoding"><application>test_decoding</></link>
- module to illustrate logical decoding at the <acronym>SQL</>
- level (Andres Freund)
+ Add table-level parameter <link
+ linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
+ to control logical replication (Andres Freund)
</para>
</listitem>
<listitem>
<para>
- Allow logical decoding via the walsender interface ? (Andres
- Freund)
+ Add relation option <link
+ linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
+ to identify user-created tables involved in logical change-set
+ encoding (Andres Freund)
</para>
</listitem>
<listitem>
<para>
- Add table-level parameter <link
- linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
- to control logical replication (Andres Freund)
+ Add <xref linkend="app-pgrecvlogical"> application to receive
+ logical-decoding data (Andres Freund)
</para>
</listitem>
<listitem>
<para>
- Add relation option <link
- linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
- to identify user-created tables involved in logical change-set
- encoding (Andres Freund)
+ Add <xref linkend="test-decoding"> module to illustrate logical
+ decoding at the <acronym>SQL</> level (Andres Freund)
</para>
</listitem>
<itemizedlist>
- <listitem>
- <para>
- Add <link linkend="queries-tablefunctions"><literal>ROWS
- FROM()</></link> syntax to allow horizontal concatenation of
- set-returning functions in the <literal>FROM</>-clause (Andrew Gierth)
- </para>
- </listitem>
-
<listitem>
<para>
Add <link linkend="queries-tablefunctions"><literal>WITH
ORDINALITY</></link> syntax to number rows returned from
- <literal>FROM</>-clause functions (Andrew Gierth, David Fetter)
+ set-returning functions in the <literal>FROM</> clause
+ (Andrew Gierth, David Fetter)
</para>
<para>
<listitem>
<para>
- Allow <link linkend="SQL-SELECT"><command>SELECT</></link> with
+ Add <link linkend="queries-tablefunctions"><literal>ROWS
+ FROM()</></link> syntax to allow horizontal concatenation of
+ set-returning functions in the <literal>FROM</> clause (Andrew Gierth)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <xref linkend="SQL-SELECT"> to have
an empty target list (Tom Lane)
</para>
<para>
- This was added so views that select from a table with zero columns
- can be dumped correctly.
+ This was added so that views that select from a table with zero
+ columns can be dumped and restored correctly.
</para>
</listitem>
<listitem>
<para>
Add <link linkend="SQL-DISCARD"><command>DISCARD
- SEQUENCES</></link> command to discard cached sequence information
+ SEQUENCES</></link> command to discard cached sequence-related state
(Fabrízio de Royes Mello, Robert Haas)
</para>
<listitem>
<para>
- Add <command>FORCE NULL</> option
- to <link linkend="SQL-COPY"><command>COPY FROM</></link> which causes
- quoted strings matching the null string to be converted to NULL in
- <literal>CSV</> mode (Ian Barwick, Michael Paquier)
+ Add <literal>FORCE NULL</> option
+ to <link linkend="SQL-COPY"><command>COPY FROM</></link>, which
+ causes quoted strings matching the specified null string to be
+ converted to NULLs in <literal>CSV</> mode (Ian Barwick, Michael
+ Paquier)
</para>
<para>
- Previously only unquoted matching strings would be imported
+ Without this option, only unquoted matching strings will be imported
as null values.
</para>
</listitem>
<listitem>
<para>
Issue warnings for commands used outside of transaction blocks
- because they have no effect (Bruce Momjian)
+ when they can have no effect (Bruce Momjian)
</para>
<para>
- The cases are <literal>SET
- LOCAL</>, <literal>SET CONSTRAINTS</>, <literal>SET TRANSACTION</> and
- <literal>ABORT</>.
+ New warnings are issued for <command>SET
+ LOCAL</>, <command>SET CONSTRAINTS</>, <command>SET TRANSACTION</> and
+ <command>ABORT</> when used outside a transaction block.
</para>
</listitem>
</itemizedlist>
<sect4>
- <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
+ <title><xref linkend="SQL-EXPLAIN"></title>
<itemizedlist>
<listitem>
<para>
- Have <command>EXPLAIN ANALYZE</> output planning time (Andreas
+ Make <command>EXPLAIN ANALYZE</> show planning time (Andreas
Karlsson)
</para>
</listitem>
<listitem>
<para>
- Have <command>EXPLAIN</> print the grouping columns in Agg and
+ Make <command>EXPLAIN</> show the grouping columns in Agg and
Group nodes (Tom Lane)
</para>
</listitem>
<listitem>
<para>
- Have <command>EXPLAIN ANALYZE</> show bitmap heap scan exact/lossy
- block information (Etsuro Fujita)
+ Make <command>EXPLAIN ANALYZE</> show exact and lossy
+ block counts in bitmap heap scans (Etsuro Fujita)
</para>
</listitem>
<listitem>
<para>
- Allow materialized views to be refreshed without blocking reads
- (Kevin Grittner)
+ Allow <link linkend="rules-materializedviews">materialized views</>
+ to be refreshed without blocking reads
+ (Kevin Grittner)
</para>
<para>
</para>
<para>
- Previously the presence of non-updatable columns such as
+ Previously the presence of non-updatable output columns such as
expressions, literals, and function calls prevented automatic
updates. Now <command>INSERT</>s, <command>UPDATE</>s and
<command>DELETE</>s are supported, provided that they do not
<para>
Allow control over whether <command>INSERT</>s and
<command>UPDATE</>s can add rows to an auto-updatable view that
- would no longer appear in the view (Dean Rasheed)
+ would not appear in the view (Dean Rasheed)
</para>
<para>
- This is controlled with the new <link
- linkend="SQL-CREATEVIEW"><literal>WITH CHECK OPTION</></link>.
+ This is controlled with the new <xref linkend="SQL-CREATEVIEW">
+ clause <literal>WITH CHECK OPTION</>.
</para>
</listitem>
<listitem>
<para>
- Allow triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
+ Support triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
tables</> (Ronan Dunklau)
</para>
</listitem>
<listitem>
<para>
- Fix <command>DROP IF EXISTS</> to more consistently not error
- for non-existent objects (Pavel Stehule, Dean Rasheed)
+ Allow moving groups of objects from one tablespace to another
+ using <xref linkend="SQL-ALTERTABLESPACE"> ... <literal>MOVE</>
+ (Stephen Frost)
</para>
</listitem>
<listitem>
<para>
- Improve how system-level relations are designated (Andres Freund,
- Robert Haas)
+ Allow changing foreign key constraint deferrability
+ via <xref linkend="SQL-ALTERTABLE"> ... <literal>ALTER
+ CONSTRAINT</> (Simon Riggs)
</para>
+ </listitem>
+ <listitem>
<para>
- Previously, relations once moved into the system catalog schema could
- no longer be modified or dropped.
+ Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
+ commands
+ (Simon Riggs, Noah Misch, Robert Haas)
</para>
- </listitem>
- <listitem>
<para>
- Allow <link linkend="SQL-ALTERTABLESPACE"><command>ALTER
- TABLESPACE</></link> options to be also set by <link
- linkend="SQL-CREATETABLESPACE"><command>CREATE TABLESPACE</></link>
- (Vik Fearing)
+ Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
+ ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
+ SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
+ <option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
+ <option>(attribute_option)</> no longer require <literal>ACCESS
+ EXCLUSIVE</> locks.
</para>
</listitem>
<listitem>
<para>
- Allow <link linkend="SQL-CREATEAGGREGATE"><command>CREATE
- AGGREGATE</></link> to supply the size of the aggregate's
- transition state data (Hadi Moshayedi)
+ Allow tablespace options to be set
+ in <xref linkend="SQL-CREATETABLESPACE"> (Vik Fearing)
</para>
<para>
- This allows the optimizer to better estimate how much memory will be
- used by aggregates.
+ Formerly these options could only be set
+ via <xref linkend="SQL-ALTERTABLESPACE">.
</para>
</listitem>
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER</></title>
-
- <itemizedlist>
-
<listitem>
<para>
- Allow moving groups of objects from one tablespace to another
- using <link linkend="SQL-ALTERTABLESPACE"><command>ALTER
- TABLESPACE</></link> ... <literal>MOVE</> (Stephen Frost)
+ Allow <xref linkend="SQL-CREATEAGGREGATE"> to define the estimated
+ size of the aggregate's transition state data (Hadi Moshayedi)
+ </para>
+
+ <para>
+ Proper use of this feature allows the planner to better estimate
+ how much memory will be used by aggregates.
</para>
</listitem>
<listitem>
<para>
- Allow changing foreign key constraint deferrability via <link
- linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
- ... <literal>ALTER CONSTRAINT</> (Simon Riggs)
+ Fix <command>DROP IF EXISTS</> to avoid errors for non-existent
+ objects in more cases (Pavel Stehule, Dean Rasheed)
</para>
</listitem>
<listitem>
<para>
- Reduce lock levels of some <link
- linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands
- (Simon Riggs, Noah Misch, Robert Haas)
+ Improve how system relations are identified (Andres Freund,
+ Robert Haas)
</para>
<para>
- Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
- ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
- SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
- <option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
- <option>(attribute_option)</> no longer require <literal>ACCESS
- EXCLUSIVE</> locks.
+ Previously, relations once moved into the <literal>pg_catalog</>
+ schema could no longer be modified or dropped.
</para>
</listitem>
</itemizedlist>
- </sect4>
-
</sect3>
<sect3>
<para>
The line <emphasis>segment</> data type (<link
- linkend="datatype-lseg"><type>LSEG</></link>) has always been
+ linkend="datatype-lseg"><type>lseg</></link>) has always been
fully supported. The previous <type>line</> data type (enabled
only via a compile-time option) is not binary or dump-compatible.
</para>
<listitem>
<para>
- Add <link linkend="datatype-pg-lsn"><type>PG_LSN</></link>
+ Add <link linkend="datatype-pg-lsn"><type>pg_lsn</></link>
data type to represent a <acronym>WAL</> log sequence number
(<acronym>LSN</>) (Robert Haas, Michael Paquier)
</para>
<listitem>
<para>
Allow single-point <link
- linkend="datatype-polygon"><type>POLYGON</></link>s to be converted
- to <link linkend="datatype-circle"><type>CIRCLE</></link>s
+ linkend="datatype-polygon"><type>polygon</></link>s to be converted
+ to <link linkend="datatype-circle"><type>circle</></link>s
(Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Allow 5+ digit years for non-<acronym>ISO</> <link
- linkend="datatype-datetime"><type>TIMESTAMP</></link> and
- <type>DATE</> strings, where appropriate (Bruce Momjian)
+ linkend="datatype-datetime"><type>timestamp</></link> and
+ <type>date</> strings, where appropriate (Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Add checks for overflow/underflow of <link
- linkend="datatype-datetime"><type>INTERVAL</></link> values
+ linkend="datatype-datetime"><type>interval</></link> values
(Bruce Momjian)
</para>
</listitem>
</itemizedlist>
<sect4>
- <title><link linkend="datatype-json"><type>JSON</></link></title>
+ <title><link linkend="datatype-json"><acronym>JSON</></link></title>
<itemizedlist>
<listitem>
<para>
- Add structured (non-text) data type (<link
- linkend="datatype-json"><type>jsonb</></link>) for storing
- JSON data (Oleg Bartunov, Teodor Sigaev, Alexander
- Korotkov, Peter Geoghegan, and Andrew Dunstan)
+ Add <link linkend="datatype-json"><type>jsonb</></link>, a more
+ capable and efficient data type for for storing <acronym>JSON</> data
+ (Oleg Bartunov, Teodor Sigaev, Alexander
+ Korotkov, Peter Geoghegan, Andrew Dunstan)
</para>
<para>
- This allows for faster access to values in the JSON
- document and faster and more useful indexing of JSON.
- Scalar values in <type>jsonb</> documents are typed as appropriate
- scalar SQL types.
+ This new type allows faster access to values in a JSON
+ document and faster and more useful indexing of JSON columns.
+ Scalar values in <type>jsonb</> documents are stored as appropriate
+ scalar SQL types, and the JSON document structure is pre-parsed
+ rather than being stored as text as in the original <type>json</>
+ data type.
</para>
</listitem>
</sect3>
-
<sect3>
<title>Functions</title>
<para>
Add <link
linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</></link>
- and <function>pg_sleep_until(timestamp)</> to specify sophisticated
- delays (Vik Fearing, Julien Rouhaud)
+ and <function>pg_sleep_until(timestamp)</> to specify
+ delays more flexibly (Vik Fearing, Julien Rouhaud)
</para>
<para>
- <function>pg_sleep()</> only supports delays specified in seconds.
+ The existing <function>pg_sleep()</> function only supports delays
+ specified in seconds.
</para>
</listitem>
</para>
<para>
- These functions are prefixed with <literal>make_</>,
+ These functions' names are prefixed with <literal>make_</>,
e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>.
</para>
</listitem>
<listitem>
<para>
- Have <link
- linkend="functions-formatting-table"><function>to_char(<literal>TZ</>)</></link>
- return the proper value for constant time zone offsets (Tom Lane)
+ Make <link
+ linkend="functions-formatting-table"><function>to_char()</></link>'s
+ <literal>TZ</> format specifier return a useful value for simple
+ numeric time zone offsets (Tom Lane)
</para>
<para>
Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</> returned
- NULL if the <literal>TIME ZONE</> was set to a constant like
- <literal>-4</>.
+ an empty string if the <literal>timezone</> was set to a constant
+ like <literal>-4</>.
</para>
</listitem>
<listitem>
<para>
- Add timezone offset output option <literal>OF</> to <link
+ Add timezone offset format specifier <literal>OF</> to <link
linkend="functions-formatting-table"><function>to_char()</></link>
(Bruce Momjian)
</para>
</para>
</listitem>
+ <listitem>
+ <para>
+ Tighten validity checking for Unicode code points in <link
+ linkend="functions-string-other"><function>chr(int)</></link>
+ (Tom Lane)
+ </para>
+
+ <para>
+ This function now only accepts values that are valid UTF8 characters
+ according to RFC 3629.
+ </para>
+ </listitem>
+
</itemizedlist>
<sect4>
<para>
Add functions for looking up objects in <structname>pg_class</>,
<structname>pg_proc</>, <structname>pg_type</>, and
- <structname>pg_operator</> which do not generate errors for
+ <structname>pg_operator</> that do not generate errors for
non-existent objects (Yugo Nagata, Nozomi Anzai,
Robert Haas)
</para>
<para>
For example, <link
linkend="functions-info-catalog-table"><function>to_regclass()</></link>
- does lookups of <structname>pg_class</> and returns NULL for
- non-existent objects.
+ does a lookup in <structname>pg_class</> similarly to
+ the <type>regclass</> input function, but it returns NULL for a
+ non-existent object instead of failing.
</para>
</listitem>
<para>
Add function <link
linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link>
- to allow for more efficient lookup of relation names from filenodes (Andres
- Freund)
+ to allow for more efficient lookup of relation names from filenodes
+ (Andres Freund)
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="information-schema"><structname>information_schema</></link>
- column <link
- linkend="infoschema-parameters"><structfield>parameters.parameter_default</></link>
- (Peter Eisentraut)
+ Add <structfield>parameter_default</> column to <link
+ linkend="infoschema-parameters"><structname>information_schema.parameters</></link>
+ view (Peter Eisentraut)
</para>
</listitem>
<listitem>
<para>
- Have <link
- linkend="infoschema-schemata"><structfield>information_schema.schemata</></link>
- show all accessible schema (Peter Eisentraut)
+ Make <link
+ linkend="infoschema-schemata"><structname>information_schema.schemata</></link>
+ show all accessible schemas (Peter Eisentraut)
</para>
<para>
- Previously it only showed <emphasis>owned</> schemas.
+ Previously it only showed schemas owned by the current user.
</para>
</listitem>
<listitem>
<para>
- Add aggregates <link
- linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
- <function>percentile_disc()</>, <link
- linkend="functions-hypothetical-table"><function>rank()</></link>,
- <function>dense_rank()</>, <function>percent_rank()</>,
- <function>cume_dist()</>, and <link
- linkend="functions-orderedset-table"><function>mode()</></link>
- (Atri Sharma, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add control over which values are passed
+ Add control over which rows are passed
into aggregate functions using the <link
linkend="syntax-aggregates"><literal>FILTER</></link> clause
(David Fetter)
linkend="syntax-aggregates"><literal>WITHIN GROUP</></link>)
aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add aggregates <link
+ linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
+ <function>percentile_disc()</>, <function>mode()</>, <link
+ linkend="functions-hypothetical-table"><function>rank()</></link>,
+ <function>dense_rank()</>, <function>percent_rank()</>, and
+ <function>cume_dist()</>
+ (Atri Sharma, Andrew Gierth)
+ </para>
+ </listitem>
+ <listitem>
<para>
- This allows aggregates that require sorted input.
+ Support <link
+ linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
+ aggregate functions (Tom Lane)
</para>
</listitem>
types (Tom Lane)
</para>
<para>
- This allows the declaration of aggregates like the built-in
+ This allows proper declaration of aggregates like the built-in
aggregate <function>array_agg()</> in SQL.
</para>
</listitem>
- <listitem>
- <para>
- Allow <link
- linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
- aggregate functions (Tom Lane)
- </para>
- </listitem>
-
</itemizedlist>
</sect4>
<listitem>
<para>
- Convert <link linkend="datatype-numeric"><type>NUMERIC</></link>s to
- <type>decimal</> values in <link linkend="plpython">PL/Python</link>
+ Convert <link linkend="datatype-numeric"><type>numeric</></link>
+ values to <type>decimal</> in <link linkend="plpython">PL/Python</link>
(Szymon Guz, Ronan Dunklau)
</para>
<para>
- Previously these were converted to <type>float</>s.
+ Previously such values were converted to Python <type>float</> values,
+ risking loss of precision.
</para>
</listitem>
<para>
Make libpq's <link
linkend="libpq-pqconndefaults"><function>PQconndefaults()</></link>
- ignore invalid service files (Steve Singer, Bruce Momjian)
+ function ignore invalid service files (Steve Singer, Bruce Momjian)
</para>
<para>
- Previously it returned NULL.
+ Previously it returned NULL if an incorrect service file was
+ encountered.
</para>
</listitem>
<listitem>
<para>
- Allow libpq to support <acronym>TLS</> versions beyond
- <literal>TLSv1</> (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document that libpq's <link
- linkend="libpq-pqclientencoding"><function>PQclientEncoding()</></link>
- returns <literal>-1</> for an encoding lookup failure (Bruce
- Momjian)
+ Accept <acronym>TLS</> protocol versions beyond <literal>TLSv1</>
+ in libpq (Marko Kreen)
</para>
</listitem>
<listitem>
<para>
- Add <link
- linkend="APP-CREATEUSER"><application>createuser</></link>
- <option>-g</> to specify role membership (Chistopher Browne)
+ Add <xref linkend="APP-CREATEUSER"> option <option>-g</>
+ to specify role membership (Chistopher Browne)
</para>
</listitem>
<listitem>
<para>
- Add <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
+ Add <xref linkend="APP-VACUUMDB">
option <option>--analyze-in-stages</> to analyze in stages of
increasing granularity (Peter Eisentraut)
</para>
<listitem>
<para>
- Allow <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
- to report a live log stream with <option>--follow</> (Heikki
- Linnakangas)
+ Make <xref linkend="APP-PGRESETXLOG"> with option <option>-n</>
+ output current and potentially changed values (Rajeev Rastogi)
</para>
</listitem>
<listitem>
<para>
- Have <link linkend="APP-PGRESETXLOG"><command>pg_resetxlog
- -n</></link> output current and potentially changed values
- (Rajeev Rastogi)
+ Make <xref linkend="app-initdb"> throw error for incorrect locale
+ settings, rather than silently falling back to a default choice
+ (Tom Lane)
</para>
</listitem>
<listitem>
<para>
- Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
- C array definitions (Michael Meskes)
+ Make <xref linkend="app-pg-ctl"> return exit code <literal>4</> for
+ an inaccessible data directory (Amit Kapila, Bruce Momjian)
</para>
- </listitem>
- <listitem>
<para>
- Have <link linkend="ecpg">ECPG</link> properly handle nesting
- requirements in C and <acronym>SQL</> mode for C-style comments
- (Michael Meskes)
+ This behavior more closely matches the Linux Standard Base
+ (<acronym>LSB</>) Core Specification.
</para>
</listitem>
<listitem>
<para>
- Have <link linkend="app-pg-ctl"><application>pg_ctl</></link>
- return <literal>4</> for an inaccessible data directory
- specification (Amit Kapila, Bruce Momjian)
+ On Windows, ensure that a non-absolute <option>-D</> path
+ specification is interpreted relative
+ to <xref linkend="app-pg-ctl">'s current directory
+ (Kumar Rajeev Rastogi)
+ </para>
+
+ <para>
+ Previously it would be interpreted relative to whichever directory
+ the underlying Windows service was started in.
</para>
+ </listitem>
+ <listitem>
<para>
- This more closely matches the Linux Standard Base (<acronym>LSB</>)
- Core Specification.
+ Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
+ C array definitions (Michael Meskes)
</para>
</listitem>
<listitem>
<para>
- On Windows, interpret <link
- linkend="app-pg-ctl"><application>pg_ctl</></link>'s non-absolute
- path <option>-D</> directories relative to <application>pg_ctl</>'s
- current directory (Kumar Rajeev Rastogi)
+ Make <link linkend="ecpg">ECPG</link> properly handle nesting
+ of C-style comments in both C and <acronym>SQL</> text
+ (Michael Meskes)
</para>
</listitem>
</itemizedlist>
<sect4>
- <title><link linkend="APP-PSQL"><application>psql</></link></title>
+ <title><xref linkend="APP-PSQL"></title>
<itemizedlist>
<listitem>
<para>
- Suppress "No rows" in <application>psql</> <link
+ Suppress <quote>No rows</quote> output in <application>psql</> <link
linkend="APP-PSQL-meta-commands"><option>expanded</></link>
mode when the footer is disabled (Bruce Momjian)
</para>
<listitem>
<para>
- Allow Control-C to abort <application>psql</> hung at connection
+ Allow Control-C to abort <application>psql</> when hung at connection
startup (Peter Eisentraut)
</para>
</listitem>
<listitem>
<para>
- Have <application>psql</> <command>\db+</> show tablespace options
+ Make <application>psql</> <command>\db+</> show tablespace options
(Magnus Hagander)
</para>
</listitem>
<listitem>
<para>
- Have <application>psql</> <command>\do+</> display the functions
+ Make <application>psql</> <command>\do+</> display the functions
which implement the operators (Marko Tiikkaja)
</para>
</listitem>
<listitem>
<para>
- Have <application>psql</> <command>\d+</> output an
- <literal>OID</> line only if an <literal>oid</literal> column exists in a table
- (Bruce Momjian)
+ Make <application>psql</> <command>\d+</> output an
+ <literal>OID</> line only if an <literal>oid</literal> column
+ exists in a table (Bruce Momjian)
</para>
<para>
- Previously, the presence or absence of an <literal>oid</literal> column was always
- reported.
+ Previously, the presence or absence of an <literal>oid</literal>
+ column was always reported.
</para>
</listitem>
<listitem>
<para>
- Have <command>\d</> show disabled system triggers (Bruce
+ Make <command>\d</> show disabled system triggers (Bruce
Momjian)
</para>
<para>
- Previously if you disabled all triggers, only user triggers
+ Previously, if you disabled all triggers, only user triggers
would show as disabled.
</para>
</listitem>
<listitem>
<para>
- Output the row count at the end of
- <application>psql</> <command>\copy</> just like <link
- linkend="SQL-COPY"><command>COPY</></link> (Kumar Rajeev Rastogi)
+ Output the row count at the end
+ of <application>psql</> <command>\copy</> just
+ like <xref linkend="SQL-COPY"> (Kumar Rajeev Rastogi)
</para>
</listitem>
<listitem>
<para>
- In <application>psql</>, output the written history file name
- (<command>\s</>) without adding an absolute path prefix (Tom Lane)
+ In <application>psql</>, display the history file name written by
+ <command>\s</> without converting it to an absolute path (Tom Lane)
</para>
<para>
- The previous output was inconsistent.
+ The code previously attempted to convert a relative file name to
+ an absolute path for display, but frequently got it wrong.
</para>
</listitem>
</sect4>
<sect4>
- <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+ <title><xref linkend="APP-PGDUMP"></title>
<itemizedlist>
<listitem>
<para>
- Allow <link
- linkend="APP-PGRESTORE"><application>pg_restore</></link> options
+ Allow <xref linkend="APP-PGRESTORE"> options
<option>-I</>, <option>-P</>, <option>-T</> and <option>-n</>
to be specified multiple times (Heikki Linnakangas)
</para>
<para>
- This allows multiple restore object to be specified.
+ This allows multiple objects to be restored in one operation.
</para>
</listitem>
<listitem>
<para>
- Add <literal>IF EXISTS</> clauses when removing old objects during
- dump and restore (Pavel Stehule)
+ Optionally add <literal>IF EXISTS</> clauses to the <command>DROP</>
+ commands emitted when removing old objects during a restore (Pavel
+ Stehule)
</para>
<para>
- This suppresses errors when removing old objects.
- The new <option>--if-exists</> option to <link
- linkend="APP-PGDUMP"><application>pg_dump</></link>, <link
- linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, and
- <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
- is only available when <option>--clean</> is also specified.
+ This change prevents unnecessary errors when removing old objects.
+ The new <option>--if-exists</> option
+ for <xref linkend="APP-PGDUMP">, <xref linkend="APP-PG-DUMPALL">,
+ and <xref linkend="APP-PGRESTORE"> is only available
+ when <option>--clean</> is also specified.
</para>
</listitem>
</sect4>
<sect4>
- <title><link linkend="app-pgbasebackup"><application>pg_basebackup</></link></title>
+ <title><xref linkend="app-pgbasebackup"></title>
<itemizedlist>
<listitem>
<para>
- Allow network-streams base backups to be throttled (Antonin Houska)
+ Allow network-stream base backups to be throttled (Antonin Houska)
</para>
<para>
<listitem>
<para>
- Improve the way tuples are frozen, to preserve forensic information
+ Improve the way tuples are frozen to preserve forensic information
(Robert Haas, Andres Freund)
</para>
<para>
- Code that inspects tuple flag bits will need to be modified.
+ This change removes the main objection to freezing tuples as soon
+ as possible. Code that inspects tuple flag bits will need to be
+ modified.
</para>
</listitem>
<listitem>
<para>
- No longer require function prototypes for function marked with the
+ No longer require function prototypes for functions marked with the
<link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></link>
macro (Peter Eisentraut)
</para>
<para>
- This eliminates needless boilerplate prototypes whose lack
- generates compiler warnings.
+ This change eliminates the need to write boilerplate prototypes.
+ Note that the <function>PG_FUNCTION_INFO_V1</> macro must appear
+ before the corresponding function definition to avoid compiler
+ warnings.
</para>
</listitem>
<listitem>
<para>
- Add <acronym>API</> for memory allocations over one gigabyte (Noah
- Misch)
+ Add an <acronym>API</> to allow memory allocations over one gigabyte
+ (Noah Misch)
</para>
</listitem>
<listitem>
<para>
- Add <function>printf()</> modifier "z" to specify <type>size_t</>
- values (Andres Freund)
+ Support <function>printf()</> size modifier <literal>z</> to
+ print <type>size_t</> values (Andres Freund)
</para>
</listitem>
<listitem>
<para>
Reduce the number of semaphores required by
- <option>--disable-spinlocks</> (Robert Haas)
+ <option>--disable-spinlocks</> builds (Robert Haas)
</para>
</listitem>
<listitem>
<para>
Add make targets <option>check-tests</> and
- <option>installcheck-tests</> which allow per-test specification
- (Andrew Dunstan)
+ <option>installcheck-tests</>, which allow selection of individual
+ tests to be run (Andrew Dunstan)
</para>
</listitem>
</para>
<para>
- Its functionality is now done by the default build rules.
+ The default build rules now include all the formerly-optional tests.
</para>
</listitem>
<listitem>
<para>
- Add configure flag that appends custom text to the
+ Add a <application>configure</> flag that appends custom text to the
<envar>PG_VERSION</> string (Oskari Saarenmaa)
</para>
<listitem>
<para>
- Various security and sanity fixes reported by the
+ Various minor security and sanity fixes reported by the
<productname>Coverity</> scanner (Stephen Frost)
</para>
</listitem>
<listitem>
<para>
- Improve <application>Emacs</> configuration file
+ Improve sample <application>Emacs</> configuration file
<filename>emacs.samples</> (Peter Eisentraut)
</para>
<listitem>
<para>
- Allow <application>pgindent</> to be supplied a command-line list
+ Allow <application>pgindent</> to accept a command-line list
of typedefs (Bruce Momjian)
</para>
<para>
- <application>Pgindent</> is also now smarter about blank lines
+ <application>pgindent</> is also now smarter about blank lines
around preprocessor conditionals.
</para>
</listitem>
<listitem>
<para>
- Avoid most uses of <command>dlltool</command> in <productname>Cygwin</> and
+ Avoid most uses of <command>dlltool</command>
+ in <productname>Cygwin</> and
<productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue)
</para>
</listitem>
<listitem>
<para>
- Allow client-only installs for <acronym>MSVC</> (Windows) builds (MauMau)
+ Support client-only installs in <acronym>MSVC</> (Windows) builds
+ (MauMau)
</para>
</listitem>
<listitem>
<para>
- Add <link linkend="pgprewarm"><application>pg_prewarm</></link>
- extension to preload relation data into the shared buffer cache
- (Robert Haas)
+ Add <xref linkend="pgprewarm"> extension to preload relation data
+ into the shared buffer cache at server start (Robert Haas)
</para>
<para>
- This is useful at server start to produce more consistent
- performance.
+ This allows reaching full operating performance more quickly.
</para>
</listitem>
<listitem>
<para>
Add <acronym>UUID</> random number generator
- <function>gen_random_uuid()</> to <link
- linkend="pgcrypto"><application>pgcrypto</></link> (Oskari
- Saarenmaa)
+ <function>gen_random_uuid()</> to <xref linkend="pgcrypto">
+ (Oskari Saarenmaa)
</para>
<para>
- This allows the creation of version 4 <acronym>UUID</>s without
- requiring the installation of <literal>uuid-ossp</literal>.
+ This allows creation of version 4 <acronym>UUID</>s without
+ requiring installation of <xref linkend="uuid-ossp">.
</para>
</listitem>
<listitem>
<para>
- Add option to include trigger execution time to <link
- linkend="auto-explain"><application>auto_explain</></link>
- (Horiguchi Kyotaro)
+ Allow <xref linkend="uuid-ossp"> to work with
+ the <systemitem>BSD</> or <systemitem>e2fsprogs</> UUID libraries,
+ not only the <systemitem>OSSP</> UUID library (Matteo Beccati)
+ </para>
+
+ <para>
+ This improves the <application>uuid-ossp</> module's portability
+ since it no longer has to have the increasingly-obsolete OSSP
+ library. The module's name is now rather a misnomer, but we won't
+ change it.
</para>
</listitem>
<listitem>
<para>
- Fix <link linkend="pgstattuple"><application>pgstattuple</></link>
- to not report rows from uncommitted transactions as dead
- (Robert Haas)
+ Add option to <xref linkend="auto-explain"> to include trigger
+ execution time (Horiguchi Kyotaro)
</para>
</listitem>
<listitem>
<para>
- Have <link linkend="pgstattuple"><application>pgstattuple</></link>
- functions use <type>regclass</type>-type arguments (Satoshi Nagayasu)
+ Fix <xref linkend="pgstattuple"> to not report rows from
+ uncommitted transactions as dead (Robert Haas)
</para>
+ </listitem>
+ <listitem>
<para>
- While <type>text</type>-type arguments are still supported, they will be
- removed in a later major release.
+ Make <xref linkend="pgstattuple"> functions
+ use <type>regclass</type>-type arguments (Satoshi Nagayasu)
+ </para>
+
+ <para>
+ While <type>text</type>-type arguments are still supported, they
+ may be removed in a future major release.
</para>
</listitem>
<listitem>
<para>
- Improve consistency of <link
- linkend="pgrowlocks"><application>pgrowlocks</></link> output to
- honor snapshot rules more consistently (Robert Haas)
+ Improve consistency of <xref linkend="pgrowlocks"> output to honor
+ snapshot rules more consistently (Robert Haas)
</para>
</listitem>
<listitem>
<para>
- Improve <link linkend="pgtrgm"><application>pg_trgm</>'s</link>
- generation of trigrams for indexed regular expression searches by
- discouraging the indexing of trigrams containing whitespace (Alexander
- Korotkov)
+ Improve <xref linkend="pgtrgm">'s choice of trigrams for indexed
+ regular expression searches by discouraging the selection of
+ trigrams containing whitespace (Alexander Korotkov)
</para>
</listitem>
<listitem>
<para>
- Store <link linkend="cube"><type>cube</></link> data more compactly
- (Stas Kelvich)
+ Allow <xref linkend="pgxlogdump"> to report a live log stream
+ with <option>--follow</> (Heikki Linnakangas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Store <xref linkend="cube"> data more compactly (Stas Kelvich)
</para>
<para>
<listitem>
<para>
- Reduce <link linkend="vacuumlo"><application>vacuumlo</></link>
- client-side memory usage by using a cursor (Andrew Dunstan)
+ Reduce <xref linkend="vacuumlo"> client-side memory usage by using
+ a cursor (Andrew Dunstan)
</para>
</listitem>
<listitem>
<para>
- Dramatically reduce memory consumption in <link
- linkend="pgupgrade"><application>pg_upgrade</></link> (Bruce
- Momjian)
+ Dramatically reduce memory consumption
+ in <xref linkend="pgupgrade"> (Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
- Pass <link linkend="pgupgrade"><application>pg_upgrade</></link>
- user names (<option>-U</>) to analyze scripts (Bruce Momjian)
+ Pass <xref linkend="pgupgrade"> user name (<option>-U</> option) to
+ analyze scripts (Bruce Momjian)
</para>
</listitem>
</itemizedlist>
<sect4>
- <title><link linkend="pgbench"><application>pgbench</></link></title>
+ <title><xref linkend="pgbench"></title>
<itemizedlist>
<listitem>
<para>
- Add <application>pgbench</> option (<option>--rate</>) to control
- the transaction rate (Fabien Coelho)
+ Add long option names to <application>pgbench</> (Fabien Coelho)
</para>
</listitem>
<listitem>
<para>
- Add <option>--progress</> output option to <application>pgbench</> (Fabien Coelho)
+ Add <application>pgbench</> option <option>--rate</> to control
+ the transaction rate (Fabien Coelho)
</para>
</listitem>
<listitem>
<para>
- Add long options to <application>pgbench</> (Fabien Coelho)
+ Add <application>pgbench</> option <option>--progress</> to
+ print periodic progress reports
+ (Fabien Coelho)
</para>
</listitem>
</sect4>
<sect4>
- <title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>
+ <title><xref linkend="pgstatstatements"></title>
<itemizedlist>
<listitem>
<para>
- Have <application>pg_stat_statements</> use a flat file for query
- text storage (Peter Geoghegan)
+ Make <application>pg_stat_statements</> use a file, rather than
+ shared memory, for query text storage (Peter Geoghegan)
</para>
<para>
- This removes the limitation on query text length, and allows a
- higher default number of unique statements to be tracked.
+ This removes the previous limitation on query text length, and
+ allows a higher number of unique statements to be tracked by default.
</para>
</listitem>
<para>
This allows monitoring tools to only fetch query text for newly
- created entries, as reported in <structfield>queryid</>.
+ created entries, improving performance for repeated querying of the
+ statistics.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Save the statistics file into <filename>$PGDATA/pg_stat</> at server
+ shutdown, rather than <filename>$PGDATA/global</> (Fujii Masao)
</para>
</listitem>