postgresql/doc/src/sgml/release-9.5.sgml

2088 lines
56 KiB
Plaintext
Raw Normal View History

2015-06-14 03:41:34 +02:00
<!-- doc/src/sgml/release-9.5.sgml -->
2015-06-11 06:08:55 +02:00
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-9-5">
<title>Release 9.5</title>
<note>
<title>Release Date</title>
Improve design and implementation of pg_file_settings view. As first committed, this view reported on the file contents as they were at the last SIGHUP event. That's not as useful as reporting on the current contents, and what's more, it didn't work right on Windows unless the current session had serviced at least one SIGHUP. Therefore, arrange to re-read the files when pg_show_all_settings() is called. This requires only minor refactoring so that we can pass changeVal = false to set_config_option() so that it won't actually apply any changes locally. In addition, add error reporting so that errors that would prevent the configuration files from being loaded, or would prevent individual settings from being applied, are visible directly in the view. This makes the view usable for pre-testing whether edits made in the config files will have the desired effect, before one actually issues a SIGHUP. I also added an "applied" column so that it's easy to identify entries that are superseded by later entries; this was the main use-case for the original design, but it seemed unnecessarily hard to use for that. Also fix a 9.4.1 regression that allowed multiple entries for a PGC_POSTMASTER variable to cause bogus complaints in the postmaster log. (The issue here was that commit bf007a27acd7b2fb unintentionally reverted 3e3f65973a3c94a6, which suppressed any duplicate entries within ParseConfigFp. However, since the original coding of the pg_file_settings view depended on such suppression *not* happening, we couldn't have fixed this issue now without first doing something with pg_file_settings. Now we suppress duplicates by marking them "ignored" within ProcessConfigFileInternal, which doesn't hide them in the view.) Lesser changes include: Drive the view directly off the ConfigVariable list, instead of making a basically-equivalent second copy of the data. There's no longer any need to hang onto the data permanently, anyway. Convert show_all_file_settings() to do its work in one call and return a tuplestore; this avoids risks associated with assuming that the GUC state will hold still over the course of query execution. (I think there were probably latent bugs here, though you might need something like a cursor on the view to expose them.) Arrange to run SIGHUP processing in a short-lived memory context, to forestall process-lifespan memory leaks. (There is one known leak in this code, in ProcessConfigDirectory; it seems minor enough to not be worth back-patching a specific fix for.) Remove mistaken assignment to ConfigFileLineno that caused line counting after an include_dir directive to be completely wrong. Add missed failure check in AlterSystemSetConfigFile(). We don't really expect ParseConfigFp() to fail, but that's not an excuse for not checking.
2015-06-29 00:06:14 +02:00
<simpara>2015-??-??</simpara>
<simpara>Current as of 2015-06-01</simpara>
2015-06-11 06:08:55 +02:00
</note>
<sect2>
<title>Overview</title>
<para>
Major enhancements in <productname>PostgreSQL</> 9.5 include:
</para>
<!-- This list duplicates items below, but without authors or details-->
<itemizedlist>
<listitem>
<para>
Improve design and implementation of pg_file_settings view. As first committed, this view reported on the file contents as they were at the last SIGHUP event. That's not as useful as reporting on the current contents, and what's more, it didn't work right on Windows unless the current session had serviced at least one SIGHUP. Therefore, arrange to re-read the files when pg_show_all_settings() is called. This requires only minor refactoring so that we can pass changeVal = false to set_config_option() so that it won't actually apply any changes locally. In addition, add error reporting so that errors that would prevent the configuration files from being loaded, or would prevent individual settings from being applied, are visible directly in the view. This makes the view usable for pre-testing whether edits made in the config files will have the desired effect, before one actually issues a SIGHUP. I also added an "applied" column so that it's easy to identify entries that are superseded by later entries; this was the main use-case for the original design, but it seemed unnecessarily hard to use for that. Also fix a 9.4.1 regression that allowed multiple entries for a PGC_POSTMASTER variable to cause bogus complaints in the postmaster log. (The issue here was that commit bf007a27acd7b2fb unintentionally reverted 3e3f65973a3c94a6, which suppressed any duplicate entries within ParseConfigFp. However, since the original coding of the pg_file_settings view depended on such suppression *not* happening, we couldn't have fixed this issue now without first doing something with pg_file_settings. Now we suppress duplicates by marking them "ignored" within ProcessConfigFileInternal, which doesn't hide them in the view.) Lesser changes include: Drive the view directly off the ConfigVariable list, instead of making a basically-equivalent second copy of the data. There's no longer any need to hang onto the data permanently, anyway. Convert show_all_file_settings() to do its work in one call and return a tuplestore; this avoids risks associated with assuming that the GUC state will hold still over the course of query execution. (I think there were probably latent bugs here, though you might need something like a cursor on the view to expose them.) Arrange to run SIGHUP processing in a short-lived memory context, to forestall process-lifespan memory leaks. (There is one known leak in this code, in ProcessConfigDirectory; it seems minor enough to not be worth back-patching a specific fix for.) Remove mistaken assignment to ConfigFileLineno that caused line counting after an include_dir directive to be completely wrong. Add missed failure check in AlterSystemSetConfigFile(). We don't really expect ParseConfigFp() to fail, but that's not an excuse for not checking.
2015-06-29 00:06:14 +02:00
... to be filled in ...
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<para>
The above items are explained in more detail in the sections below.
</para>
</sect2>
<sect2>
<title>Migration to Version 9.5</title>
<para>
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>
Version 9.5 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<itemizedlist>
<listitem>
<para>
Adjust <link linkend="sql-precedence">operator precedence</>
to match the <acronym>SQL</> standard (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
The precedence of <literal>&lt;=</literal>, <literal>&gt;=</literal>
and <literal>&lt;&gt;</literal> has been reduced to match that of
<literal>&lt;</literal>, <literal>&gt;</literal>
and <literal>=</literal>. The precedence of <literal>IS</> tests
(e.g., <replaceable>x</> <literal>IS NULL</>) has been reduced to be
just below these six comparison operators.
Also, multi-keyword operators beginning with <literal>NOT</> now have
the precedence of their base operator (for example, <literal>NOT
BETWEEN</> now has the same precedence as <literal>BETWEEN</>) whereas
before they had inconsistent precedence, behaving like <literal>NOT</>
with respect to their left operand but like their base operator with
respect to their right operand. The new configuration
parameter <xref linkend="guc-operator-precedence-warning"> can be
enabled to warn about queries in which these precedence changes result
in different parsing choices.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Use assignment cast behavior for data type conversions
in <application>PL/pgSQL</> assignments, rather than converting to and
from text (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
This change causes conversions of booleans to strings to
produce <literal>true</> or <literal>false</>, not <literal>t</>
or <literal>f</>. Other type conversions may succeed in more cases
than before; for example, assigning a numeric value <literal>3.9</> to
an integer variable will now assign 4 rather than failing. If no
assignment-grade cast is defined for the particular source and
destination types, <application>PL/pgSQL</> will fall back to its old
I/O conversion behavior.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow characters in <link linkend="libpq-connect-options">server
command-line options</> to be escaped with a backslash (Andres Freund)
2015-06-11 06:08:55 +02:00
</para>
<para>
Formerly, spaces in the options string always separated options, so
there was no way to include a space in an option value. Including
a backslash in an option value now requires writing <literal>\\</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Change the default value of <link
linkend="gssapi-auth"><varname>include_realm</></> to 1, so that
by default the realm is not removed from a <acronym>GSS</>
or <acronym>SSPI</> principal name (Stephen Frost)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Fix <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN OWNED</></>
and <link linkend="SQL-ALTERTYPE"><command>ALTER OWNER TO</></>
to properly update permissions lists (ACLs) when changing ownership of
types, foreign data wrappers, and foreign servers (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Remove server configuration parameter <varname>autocommit</>, which
2015-06-11 06:08:55 +02:00
was already deprecated and non-operational (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Remove <link linkend="catalog-pg-authid"><structname>pg_authid</></>'s
<structfield>rolcatupdate</> field, as it had no value (Adam Brightwell)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Changes</title>
<para>
Below you will find a detailed account of the changes between
2015-06-11 06:08:55 +02:00
<productname>PostgreSQL</productname> 9.5 and the previous major
release.
2015-06-11 06:08:55 +02:00
</para>
<sect3>
<title>Server</title>
<sect4>
<title>Indexes</title>
<itemizedlist>
<listitem>
<para>
Add <link linkend="BRIN">Block Range Indexes</> (<acronym>BRIN</>)
(&Aacute;lvaro Herrera, Heikki Linnakangas, Emre Hasegeli)
2015-06-11 06:08:55 +02:00
</para>
<para>
<acronym>BRIN</> indexes are very compact and store the min/max
values for a range of heap blocks.
</para>
</listitem>
<listitem>
<para>
Allow queries to perform accurate distance filtering of
bounding-box-indexed objects (polygons, circles) using <link
linkend="GiST">GiST</> indexes (Alexander Korotkov, Heikki
Linnakangas)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously, a common table expression was required to return a
large number of rows ordered by bounding-box distance, and then
filtered further with a more accurate non-bounding-box distance
calculation.
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="GiST">GiST</> indexes to perform index-only
scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add configuration parameter <xref linkend="guc-gin-pending-list-limit">
to control the size of <acronym>GIN</> pending lists (Fujii Masao)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously the list size was controlled
by <xref linkend="guc-work-mem">. This can also be set as an index
storage parameter.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Issue a warning during the creation of <link
linkend="indexes-types">hash</> indexes because they are not
crash-safe (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>General Performance</title>
<itemizedlist>
<listitem>
<para>
Improve the speed of sorting character and numeric fields (Peter
Geoghegan, Andrew Gierth, Robert Haas)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Extend the infrastructure that allows sorting to be performed by
inlined, non-<acronym>SQL</acronym>-callable comparison functions to
cover <command>CREATE INDEX</>, <command>REINDEX</>, and
<command>CLUSTER</> (Peter Geoghegan)
</para>
</listitem>
2015-06-11 06:08:55 +02:00
<listitem>
<para>
Improve in-memory hash performance (Tomas Vondra, Robert Haas)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Improve concurrency of shared buffer replacement
(Robert Haas, Amit Kapila)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Improve concurrent locking and buffer scan performance (Andres
Freund, Kevin Grittner)
</para>
</listitem>
<listitem>
<para>
Allow the optimizer to remove unnecessary references to left
outer join subqueries (David Rowley)
</para>
</listitem>
<listitem>
<para>
Allow pushdown of query restrictions into <link
linkend="functions-window">window functions</>, where appropriate
(David Rowley)
</para>
</listitem>
2015-06-11 06:08:55 +02:00
<listitem>
<para>
Speed up <acronym>CRC</> (cyclic redundancy check) computations
(Abhijit Menon-Sen, Heikki Linnakangas)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Monitoring</title>
<itemizedlist>
<listitem>
<para>
Add per-table autovacuum logging control via
<varname>log_min_autovacuum_duration</> (Michael Paquier)
</para>
<para>
NOT DOCUMENTED?
</para>
2015-06-11 06:08:55 +02:00
</listitem>
<listitem>
<para>
Add new configuration parameter <xref linkend="guc-cluster-name">
(Thomas Munro)
2015-06-11 06:08:55 +02:00
</para>
<para>
This string, typically set in <link
linkend="config-setting-configuration-file"><filename>postgresql.conf</></>,
allows clients to identify the cluster. This name also appears
in the process title of all server processes, allowing for easier
identification of processes belonging to the same cluster.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Prevent non-superusers from changing <xref
linkend="guc-log-disconnections"> on connection startup (Fujii Masao)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><acronym>SSL</></title>
<itemizedlist>
<listitem>
<para>
Check <link linkend="libpq-ssl"><quote>Subject Alternative
Names</></> in <acronym>SSL</> server certificates, if present
(Alexey Klyukin)
2015-06-11 06:08:55 +02:00
</para>
<para>
When they are present, this replaces checks against the certificate's
2015-06-11 06:08:55 +02:00
<quote>Common Name</>.
</para>
</listitem>
<listitem>
<para>
Add system view <link
linkend="pg-stat-ssl-view"><structname>pg_stat_ssl</></> to report
2015-06-11 06:08:55 +02:00
<acronym>SSL</> connection information (Magnus Hagander)
</para>
</listitem>
<listitem>
<para>
Add <application>libpq</> function <link
linkend="libpq-pqsslAttribute"><function>PQsslAttribute()</></>
2015-06-11 06:08:55 +02:00
that returns <acronym>SSL</> information (Heikki Linnakangas)
</para>
<para>
While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></>
can still be used to call <productname>OpenSSL</>
functions, <function>PQsslAttribute()</> returns <acronym>SSL</>
2015-06-11 06:08:55 +02:00
information in an <acronym>SSL</>-implementation-independent way.
(Future versions of libpq might support other <acronym>SSL</>
implementations.)
</para>
</listitem>
<listitem>
<para>
Make <application>libpq</> honor any <productname>OpenSSL</>
2015-06-11 06:08:55 +02:00
thread callbacks (Jan Urbanski)
</para>
<para>
Previously they were overwritten.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Server Settings</title>
<itemizedlist>
<listitem>
<para>
Replace configuration parameter <varname>checkpoint_segments</>
with <xref linkend="guc-min-wal-size">
and <xref linkend="guc-max-wal-size"> (Heikki Linnakangas)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows the allocation of a large number of <acronym>WAL</>
files without keeping them if they are not needed.
</para>
</listitem>
<listitem>
<para>
Add configuration parameter <xref linkend="guc-wal-compression"> to
control compression of full page images stored in <acronym>WAL</>
2015-06-11 06:08:55 +02:00
(Rahila Syed, Michael Paquier)
</para>
</listitem>
<listitem>
<para>
Allow recording of transaction
commit timestamps when configuration parameter <xref
linkend="guc-track-commit-timestamp">
is enabled (&Aacute;lvaro Herrera, Petr Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
<para>
Timestamp information can be accessed using functions <link
linkend="functions-commit-timestamp"><function>pg_xact_commit_timestamp()</></>
and <function>pg_last_committed_xact()</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <xref linkend="guc-local-preload-libraries"> to be set
by <command>ALTER ROLE SET</> (Peter Eisentraut, Kyotaro Horiguchi)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow running <link linkend="autovacuum">autovacuum workers</>
to respond to configuration parameter changes (Michael Paquier)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Make configuration parameter <xref linkend="guc-debug-assertions">
read-only (Andres Freund)
2015-06-11 06:08:55 +02:00
</para>
<para>
This means that assertions can no longer be turned
off if they were enabled at compile time, allowing for more
efficient code optimization. This change also removed the <link
linkend="app-postgres-options">postgres</> <option>-A</> option.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow setting <xref linkend="guc-effective-io-concurrency"> on
systems where it has no effect (Peter Eisentraut)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add environment variables <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</></>
and <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</></>
to help control the Linux <acronym>OOM</> killer (Gurjeet Singh)
2015-06-11 06:08:55 +02:00
</para>
<para>
The previous <acronym>OOM</> control infrastructure involved a
compile-time option.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Improve design and implementation of pg_file_settings view. As first committed, this view reported on the file contents as they were at the last SIGHUP event. That's not as useful as reporting on the current contents, and what's more, it didn't work right on Windows unless the current session had serviced at least one SIGHUP. Therefore, arrange to re-read the files when pg_show_all_settings() is called. This requires only minor refactoring so that we can pass changeVal = false to set_config_option() so that it won't actually apply any changes locally. In addition, add error reporting so that errors that would prevent the configuration files from being loaded, or would prevent individual settings from being applied, are visible directly in the view. This makes the view usable for pre-testing whether edits made in the config files will have the desired effect, before one actually issues a SIGHUP. I also added an "applied" column so that it's easy to identify entries that are superseded by later entries; this was the main use-case for the original design, but it seemed unnecessarily hard to use for that. Also fix a 9.4.1 regression that allowed multiple entries for a PGC_POSTMASTER variable to cause bogus complaints in the postmaster log. (The issue here was that commit bf007a27acd7b2fb unintentionally reverted 3e3f65973a3c94a6, which suppressed any duplicate entries within ParseConfigFp. However, since the original coding of the pg_file_settings view depended on such suppression *not* happening, we couldn't have fixed this issue now without first doing something with pg_file_settings. Now we suppress duplicates by marking them "ignored" within ProcessConfigFileInternal, which doesn't hide them in the view.) Lesser changes include: Drive the view directly off the ConfigVariable list, instead of making a basically-equivalent second copy of the data. There's no longer any need to hang onto the data permanently, anyway. Convert show_all_file_settings() to do its work in one call and return a tuplestore; this avoids risks associated with assuming that the GUC state will hold still over the course of query execution. (I think there were probably latent bugs here, though you might need something like a cursor on the view to expose them.) Arrange to run SIGHUP processing in a short-lived memory context, to forestall process-lifespan memory leaks. (There is one known leak in this code, in ProcessConfigDirectory; it seems minor enough to not be worth back-patching a specific fix for.) Remove mistaken assignment to ConfigFileLineno that caused line counting after an include_dir directive to be completely wrong. Add missed failure check in AlterSystemSetConfigFile(). We don't really expect ParseConfigFp() to fail, but that's not an excuse for not checking.
2015-06-29 00:06:14 +02:00
Add system view <link
linkend="view-pg-file-settings"><structname>pg_file_settings</></>
to show the contents of the server's configuration files
(Sawada Masahiko)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <structname>pending_restart</> to the system view <link
linkend="view-pg-settings"><structname>pg_settings</></> to
indicate a change is pending a restart (Peter Eisentraut)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></>
values to be reset with <command>ALTER SYSTEM RESET</> (Vik
Fearing)
2015-06-11 06:08:55 +02:00
</para>
<para>
Improve design and implementation of pg_file_settings view. As first committed, this view reported on the file contents as they were at the last SIGHUP event. That's not as useful as reporting on the current contents, and what's more, it didn't work right on Windows unless the current session had serviced at least one SIGHUP. Therefore, arrange to re-read the files when pg_show_all_settings() is called. This requires only minor refactoring so that we can pass changeVal = false to set_config_option() so that it won't actually apply any changes locally. In addition, add error reporting so that errors that would prevent the configuration files from being loaded, or would prevent individual settings from being applied, are visible directly in the view. This makes the view usable for pre-testing whether edits made in the config files will have the desired effect, before one actually issues a SIGHUP. I also added an "applied" column so that it's easy to identify entries that are superseded by later entries; this was the main use-case for the original design, but it seemed unnecessarily hard to use for that. Also fix a 9.4.1 regression that allowed multiple entries for a PGC_POSTMASTER variable to cause bogus complaints in the postmaster log. (The issue here was that commit bf007a27acd7b2fb unintentionally reverted 3e3f65973a3c94a6, which suppressed any duplicate entries within ParseConfigFp. However, since the original coding of the pg_file_settings view depended on such suppression *not* happening, we couldn't have fixed this issue now without first doing something with pg_file_settings. Now we suppress duplicates by marking them "ignored" within ProcessConfigFileInternal, which doesn't hide them in the view.) Lesser changes include: Drive the view directly off the ConfigVariable list, instead of making a basically-equivalent second copy of the data. There's no longer any need to hang onto the data permanently, anyway. Convert show_all_file_settings() to do its work in one call and return a tuplestore; this avoids risks associated with assuming that the GUC state will hold still over the course of query execution. (I think there were probably latent bugs here, though you might need something like a cursor on the view to expose them.) Arrange to run SIGHUP processing in a short-lived memory context, to forestall process-lifespan memory leaks. (There is one known leak in this code, in ProcessConfigDirectory; it seems minor enough to not be worth back-patching a specific fix for.) Remove mistaken assignment to ConfigFileLineno that caused line counting after an include_dir directive to be completely wrong. Add missed failure check in AlterSystemSetConfigFile(). We don't really expect ParseConfigFp() to fail, but that's not an excuse for not checking.
2015-06-29 00:06:14 +02:00
This command removes the setting from <filename>postgresql.auto.conf</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Replication and Recovery</title>
<itemizedlist>
<listitem>
<para>
Add <link linkend="recovery-config"><filename>recovery.conf</></>
parameter <link
linkend="recovery-target-action"><varname>recovery_target_action</></>
to control post-recovery activity (Petr Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
<para>
This replaces the old parameter <varname>pause_at_recovery_target</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add new <xref linkend="guc-archive-mode"> value
<literal>always</> to allow standbys to always archive received
<acronym>WAL</> files (Fujii Masao)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add configuration
parameter <xref linkend="guc-wal-retrieve-retry-interval"> to
control <acronym>WAL</> read retry after failure
(Alexey Vasiliev, Michael Paquier)
2015-06-11 06:08:55 +02:00
</para>
<para>
This is particularly helpful for warm standbys.
</para>
</listitem>
<listitem>
<para>
Archive <acronym>WAL</> files with suffix <literal>.partial</>
during standby promotion (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Add configuration parameter <xref
linkend="guc-log-replication-commands">
to log replication commands (Fujii Masao)
2015-06-11 06:08:55 +02:00
</para>
<para>
By default, replication commands, e.g. <link
linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</></>,
are not logged, even when <xref linkend="guc-log-statement"> is set
to <literal>all</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="pg-replication-origin-create">labeling</>
of the origin of logical replication changes (Andres Freund)
2015-06-11 06:08:55 +02:00
</para>
<para>
This helps with change tracking.
</para>
</listitem>
<listitem>
<para>
Report the processes holding replication slots in <link
linkend="catalog-pg-replication-slots"><structname>pg_replication_slots</></>
(Craig Ringer)
2015-06-11 06:08:55 +02:00
</para>
<para>
The new output column is <structname>active_pid</>.
</para>
</listitem>
<listitem>
<para>
Allow <filename>recovery.conf</>'s <link
linkend="primary-conninfo"><varname>primary_conninfo</></> to
use connection <acronym>URI</>s, e.g. <literal>postgres://</>
(Alexander Shulgin)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Queries</title>
<itemizedlist>
<listitem>
<para>
Allow <link linkend="sql-on-conflict"><command>INSERTS</></>
that would generate constraint conflicts to be turned into
<command>UPDATE</>s or ignored (Peter Geoghegan, Heikki
Linnakangas, Andres Freund)
2015-06-11 06:08:55 +02:00
</para>
<para>
The syntax is <command>INSERT ... ON CONFLICT DO NOTHING/UPDATE</>.
This is the Postgres implementation of the popular
<command>UPSERT</> command.
</para>
</listitem>
<listitem>
<para>
Add <literal>GROUP BY</> analysis functions <link
linkend="queries-grouping-sets"><literal>GROUPING SETS</></>,
<link linkend="queries-grouping-sets"><literal>CUBE</></> and
<link linkend="queries-grouping-sets"><literal>ROLLUP</></>
(Andrew Gierth, Atri Sharma)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow multi-column <link
linkend="SQL-UPDATE"><command>UPDATE</></>s with a single subselect
2015-06-11 06:08:55 +02:00
(Tom Lane)
</para>
<para>
This is accomplished using the syntax <command>UPDATE tab SET
(col1, col2, ...) = (SELECT ...)</>.
</para>
</listitem>
<listitem>
<para>
Add new <link linkend="SQL-SELECT"><command>SELECT</></> option
<literal>SKIP LOCKED</> to skip locked rows (Thomas Munro)
2015-06-11 06:08:55 +02:00
</para>
<para>
This does not throw an error for locked rows like
<literal>NOWAIT</> does.
</para>
</listitem>
<listitem>
<para>
Add <link linkend="SQL-SELECT"><command>SELECT</></> option
<literal>TABLESAMPLE</> to return a subset of a table (Petr
Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Suggest possible matches for mistyped column names (Peter
Geoghegan, Robert Haas)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Utility Commands</title>
<itemizedlist>
<listitem>
<para>
Add more details about sort ordering in <link
linkend="SQL-EXPLAIN"><command>EXPLAIN</></> output (Marius Timmer,
Lukas Kreft, Arne Scheffer)
2015-06-11 06:08:55 +02:00
</para>
<para>
Details include <literal>COLLATE</>, <literal>DESC</>,
<literal>USING</>, and <literal>NULLS FIRST</><literal>/LAST</>.
</para>
</listitem>
<listitem>
<para>
Have <link linkend="SQL-VACUUM"><command>VACUUM</></> log the
number of pages skipped due to pins (Jim Nasby)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Have <link linkend="SQL-TRUNCATE"><command>TRUNCATE</></> properly
update the <literal>pg_stat</>* tuple counters (Alexander Shulgin)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="SQL-REINDEX"></title>
<itemizedlist>
<listitem>
<para>
Allow <command>REINDEX</> to reindex an entire schema using the
<literal>SCHEMA</> option (Sawada Masahiko)
</para>
</listitem>
<listitem>
<para>
Add <literal>VERBOSE</> option to <command>REINDEX</> (Sawada
Masahiko)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Prevent <command>REINDEX DATABASE</> and <command>SCHEMA</>
from outputting object names, unless <literal>VERBOSE</> is used
(Simon Riggs)
</para>
</listitem>
<listitem>
<para>
Remove obsolete <literal>FORCE</> option from <command>REINDEX</>
(Fujii Masao)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Object Manipulation</title>
<itemizedlist>
<listitem>
<para>
Add row-level security control (Craig Ringer, KaiGai Kohei,
Adam Brightwell, Dean Rasheed, Stephen Frost)
</para>
<para>
This controls viewing and adding/modifying rows via new commands
<link linkend="SQL-CREATEPOLICY"><command>CREATE</></>/<link
linkend="SQL-ALTERPOLICY"><command>ALTER</></>/<link
linkend="SQL-DROPPOLICY"><command>DROP POLICY</></> and <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... ENABLE/DISABLE
ROW SECURITY</></>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow control of table <acronym>WAL</> logging after table creation
with <link linkend="SQL-ALTERTABLE"><command>ALTER TABLE .. SET
LOGGED / UNLOGGED</></> (Fabr&iacute;zio de Royes Mello)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <literal>IF NOT EXISTS</> clause to <link
linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></>,
<link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></>,
<link linkend="SQL-CREATESEQUENCE"><command>CREATE SEQUENCE</></>,
and <link linkend="SQL-CREATEMATERIALIZEDVIEW"><command>CREATE
MATERIALIZED VIEW</></> (Fabr&iacute;zio de Royes Mello)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add support for <literal>IF EXISTS</> to <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... RENAME
CONSTRAINT</></> (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <literal>CURRENT</><literal>/SESSION_USER</> to specify the
current user in some commands (Kyotaro Horiguchi, &Aacute;lvaro
Herrera)
2015-06-11 06:08:55 +02:00
</para>
<para>
Commands include <link linkend="SQL-ALTERUSER"><command>ALTER
USER</></>,
<link linkend="SQL-ALTERGROUP"><command>ALTER
GROUP</></>, <link linkend="SQL-ALTERROLE"><command>ALTER
ROLE</></>, <link linkend="SQL-GRANT"><command>GRANT</></>,
and various <command>ALTER OBJECT / OWNER TO</> commands.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow comments on <link linkend="SQL-CREATEDOMAIN">domain
constraints</> (&Aacute;lvaro Herrera)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Reduce lock levels of some create and alter trigger and foreign
key commands (Simon Riggs, Andreas Karlsson)
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="SQL-LOCK"><command>LOCK TABLE .. ROW EXCLUSIVE
MODE</></> for those with <command>INSERT</> privileges (Stephen
Frost)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously only <command>UPDATE</>, <command>DELETE</>, and
<command>TRUNCATE</> privileges allowed this.
</para>
</listitem>
<listitem>
<para>
Apply table and domain <literal>CHECK</> constraints in name order
(Tom Lane)
</para>
<para>
The previous order was indeterminate.
</para>
</listitem>
<listitem>
<para>
Allow <link
linkend="SQL-CREATEDATABASE"><command>CREATE</></>/<link
linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE</></>
to manipulate <structname>datistemplate</> and
<structname>datallowconn</> (Vik Fearing)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows these database settings to be
changed more easily than modifying the <link
linkend="catalog-pg-database"><structname>pg_database</></>
system table.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="SQL-CREATEFOREIGNDATAWRAPPER"></title>
<itemizedlist>
<listitem>
<para>
Add support for <link
linkend="SQL-IMPORTFOREIGNSCHEMA"><command>IMPORT FOREIGN
SCHEMA</></> (Ronan Dunklau, Michael Paquier, Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
This command allows automatic creation of local foreign tables
that match the structure of existing tables on a remote server.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow foreign tables to participate in inheritance (Shigeru Hanada,
Etsuro Fujita)
</para>
<para>
This also allows foreign tables to mark check constraints as not
valid, and to set storage and <type>OID</> characteristics.
</para>
</listitem>
<listitem>
<para>
Allow <literal>CHECK</> constraints to be placed on foreign tables
(Shigeru Hanada, Etsuro Fujita)
</para>
<para>
These constraints are assumed to be enforced on the remote server,
and are not enforced locally. However, they are assumed to hold for
purposes of query optimization, such
as <link linkend="ddl-partitioning-constraint-exclusion">constraint
exclusion</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow foreign data wrappers and custom scans to implement join
pushdown (KaiGai Kohei)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="SQL-CREATEEVENTTRIGGER"></title>
<itemizedlist>
<listitem>
<para>
Add a set-returning function <link
linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</></>, which returns <acronym>DDL</> activity
associated with event triggers (&Aacute;lvaro Herrera)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow event triggers on table rewrites caused by <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></> (Dimitri
Fontaine)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add event trigger support for database-level <link
linkend="SQL-COMMENT"><command>COMMENT</></>, <link
linkend="SQL-SECURITY-LABEL"><command>SECURITY LABEL</></>,
and <link linkend="SQL-GRANT"><command>GRANT</></>/<link
linkend="SQL-REVOKE"><command>REVOKE</></> (&Aacute;lvaro Herrera)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add columns to the output of <link
linkend="pg-event-trigger-sql-drop-functions"><function>pg_event_trigger_dropped_objects</></>
(&Aacute;lvaro Herrera)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows simpler processing of delete operations.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Data Types</title>
<itemizedlist>
<listitem>
<para>
Allow the <link linkend="datatype-xml"><type>XML</></> data type
to accept empty or all-whitespace values (Peter Eisentraut)
2015-06-11 06:08:55 +02:00
</para>
<para>
This is required by the <acronym>SQL</>/<acronym>XML</>
specification.
</para>
</listitem>
<listitem>
<para>
Fix <type>XML</> <link
linkend="functions-xml-processing"><function>xpath()</></> handling
to return namespace declarations even if the namespace is in a
parent element (Ali Akbar)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously the namespace was not returned, potentially leading to
invalid <type>XML</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="datatype-macaddr"><type>MACADDR</></> input
using the format <literal>xxxx-xxxx-xxxx</> (Herwin Weststrate)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Tighten syntax of <link
linkend="datatype-interval-input"><type>INTERVAL</></> precision
specifications (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
<para>
Only allow interval precision to be specified after the
<literal>INTERVAL</> keyword if no units are specified.
</para>
</listitem>
<listitem>
<para>
Add selectivity estimators for <link
linkend="datatype-inet"><type>INET</></>/<link
linkend="datatype-cidr"><type>CIDR</></> operators and improve
estimators for text search functions (Emre Hasegeli, Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="datatype-json"><acronym>JSON</></link></title>
<itemizedlist>
<listitem>
<para>
Add <type>JSONB</> functions <link
linkend="functions-json-processing-table"><function>jsonb_set()</></>
and <link
linkend="functions-json-processing-table"><function>jsonb_pretty()</></>
(Dmitry Dolgov, Andrew Dunstan, Petr Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add several generator functions for <type>JSONB</> that already
existed for <type>JSON</> (Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
<para>
These are <link
linkend="functions-json-creation-table"><function>to_jsonb()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_object()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_build_object()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_build_array()</></>,
<link
linkend="functions-aggregate-table"><function>jsonb_agg()</></>,
and <link
linkend="functions-aggregate-table"><function>jsonb_object_agg()</></>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Reduce casting requirements to/from <link
linkend="datatype-json"><type>JSON</></> and <link
linkend="datatype-json"><type>JSONB</></> (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <type>TEXT</>, <type>TEXT</> array, and <type>INTEGER</>
values to be <link linkend="functions-jsonb-op-table">subtracted</>
from <type>JSONB</> documents (Dmitry Dolgov, Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <type>JSONB</> <link
linkend="functions-jsonb-op-table">operator</> <literal>||</>
(Dmitry Dolgov, Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link
linkend="functions-json-processing-table"><function>json_strip_nulls()</></>
and <link
linkend="functions-json-processing-table"><function>jsonb_strip_nulls()</></>
functions to remove <type>JSON</> null values from documents
(Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Functions</title>
<itemizedlist>
<listitem>
<para>
Add <link linkend="functions-srf"><function>generate_series()</></>
for <type>NUMERIC</> values (Plato Malugin)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <link
linkend="functions-aggregate-table"><function>array_agg()</></> and
<function>ARRAY()</> to take arrays as inputs (Ali Akbar, Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add functions <link
linkend="array-functions-table"><function>array_position()</></>
and <link
linkend="array-functions-table"><function>array_positions()</></>
to return subscripts of array values (Pavel Stehule)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link
linkend="gist-builtin-opclasses-table"><type>point</>-to-<type>polygon</></>
distance operator (&lt;-&gt;) (Alexander Korotkov)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow multi-byte characters as escape in <link
linkend="functions-similarto-regexp"><literal>SIMILAR TO</></>
and <link linkend="functions-string-sql"><literal>SUBSTRING</></>
(Jeff Davis)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously, only a single-byte character was allowed as an escape.
</para>
</listitem>
<listitem>
<para>
Add a <link
linkend="functions-math-func-table"><function>width_bucket()</></>
variant that supports any sortable data type and non-uniform bucket
widths (Petr Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="sql-syntax-calling-funcs"><literal>=&gt;</></>
to specify named parameters in function calls (Pavel Stehule)
2015-06-11 06:08:55 +02:00
</para>
<para>
Previously only <literal>:=</> could be used. This requires removing
the possibility for <literal>=&gt;</> to be a user-defined operator.
Creation of user-defined <literal>=&gt;</> operators has been issuing
warnings since Postgres 9.0.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <acronym>POSIX</>-compliant rounding for platforms that use
Postgres-supplied rounding functions (Pedro Gimeno Fortea)
</para>
</listitem>
</itemizedlist>
<sect4>
<title>System Information Functions and Views</title>
<itemizedlist>
<listitem>
<para>
Add function <link
linkend="functions-info-object-table"><function>pg_get_object_address()</></>
to return <type>OID</>s that uniquely identify an object
(&Aacute;lvaro Herrera)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add function <link
linkend="functions-info-object-table"><function>pg_identify_object_as_address()</></>
to return object information based on <type>OID</>s (&Aacute;lvaro
Herrera)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Loosen security checks for viewing queries in <link
linkend="pg-stat-activity-view"><structname>pg_stat_activity</></>,
executing <link
linkend="functions-admin-signal-table"><function>pg_cancel_backend()</></>,
and executing <link
linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></>
(Stephen Frost)
2015-06-11 06:08:55 +02:00
</para>
<para>
Now, role membership is sufficient; previously only the same
role could perform these operations.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_get_snapshot_timestamp()</></>
to output the timestamp of the statistics snapshot (Matt Kelly)
2015-06-11 06:08:55 +02:00
</para>
<para>
This represents the last time the snapshot files was written to
the file system.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link
linkend="vacuum-for-multixact-wraparound"><function>mxid_age()</></>
to compute multi-xid age (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add data type <link
linkend="datatype-oid-table"><type>regrole</></> that returns
the <type>OID</> of a role (Kyotaro Horiguchi)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add data type <link
linkend="datatype-oid-table"><type>regnamespace</></> that returns
the <type>OID</> of a schema (Kyotaro Horiguchi)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Aggregates</title>
<itemizedlist>
<listitem>
<para>
Add <function>MIN()</>/<function>MAX()</> aggregates
for <link linkend="datatype-inet"><type>INET</></>/<link
linkend="datatype-cidr"><type>CIDR</></> data types (Haribabu
Kommi)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Use 128-bit integers, where supported, as aggregate accumulators
(Andreas Karlsson)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Server-Side Languages</title>
<itemizedlist>
<listitem>
<para>
Improve support for composite types in <link
linkend="plpython"><application>PL/Python</></> (Ed Behn, Ronan
Dunklau)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows <application>PL/Python</> functions to return arrays
of composite types.
</para>
</listitem>
<listitem>
<para>
Reduce lossiness of <link
linkend="plpython"><application>PL/Python</></> floating value
2015-06-11 06:08:55 +02:00
conversions (Marko Kreen)
</para>
</listitem>
<listitem>
<para>
Allow specification of conversion routines between <acronym>SQL</>
data types and data types of procedural languages (Peter Eisentraut)
2015-06-11 06:08:55 +02:00
</para>
<para>
This change adds new commands <link
linkend="SQL-CREATETRANSFORM"><command>CREATE</></>/<link
linkend="SQL-DROPTRANSFORM"><command>DROP TRANSFORM</></>.
This also adds optional transformations between the <link
linkend="hstore"><application>hstore</></> and <link
linkend="ltree"><application>ltree</></> types to/from <link
linkend="plperl"><application>PL/Perl</></> and <link
linkend="plpython"><application>PL/Python</></>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
<itemizedlist>
<listitem>
<para>
Improve <link linkend="plpgsql"><application>PL/pgSQL</></> array
performance (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link linkend="plpgsql-statements-assert"><command>ASSERT</></>
statement in <application>PL/pgSQL</> (Pavel Stehule)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow more <link linkend="plpgsql"><application>PL/pgSQL</></>
keywords to be used as identifiers (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Client Applications</title>
<itemizedlist>
<listitem>
<para>
Move <link
linkend="pgarchivecleanup"><application>pg_archivecleanup</></>,
<link linkend="pgtestfsync"><application>pg_test_fsync</></>,
<link linkend="pgtesttiming"><application>pg_test_timing</></>,
and <link linkend="pgxlogdump"><application>pg_xlogdump</></>
from <filename>contrib</> to <filename>src/bin</> (Peter Eisentraut)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link linkend="app-pgrewind"><application>pg_rewind</></>,
which allows re-synchronizing a master server after failback
(Heikki Linnakangas)
</para>
</listitem>
2015-06-11 06:08:55 +02:00
<listitem>
<para>
Allow <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
to manage physical replication slots (Michael Paquier)
2015-06-11 06:08:55 +02:00
</para>
<para>
This is controlled via new <option>--create-slot</> and
<option>--drop-slot</> options.
</para>
</listitem>
<listitem>
<para>
Allow the <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
to synchronously flush <acronym>WAL</> to storage using
<option>--synchronous</> (Furuya Osamu, Fujii Masao)
2015-06-11 06:08:55 +02:00
</para>
<para>
Without this, <acronym>WAL</> files are fsynced only on close.
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="APP-VACUUMDB"><command>vacuumdb</></> to
vacuum in parallel using <option>--jobs</> (Dilip Kumar)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <option>--verbose</> option to <link
linkend="APP-REINDEXDB"><application>reindexdb</></> (Sawada
Masahiko)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Make <link linkend="app-pgbasebackup"><application>pg_basebackup</></>
use a tablespace mapping file when using <application>tar</> format,
to support symbolic links and file paths of 100+ characters in length
on <systemitem class="osname">MS Windows</> (Amit Kapila)
</para>
</listitem>
<listitem>
<para>
Add <link linkend="pgxlogdump"><application>pg_xlogdump</></> option
<option>--stats</> to display summary statistics (Abhijit Menon-Sen)
</para>
2015-06-11 06:08:55 +02:00
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="APP-PSQL"></title>
<itemizedlist>
<listitem>
<para>
Allow <application>psql</> to produce AsciiDoc output (Szymon Guz)
</para>
</listitem>
<listitem>
<para>
Add <literal>errors</> mode to <application>psql</>'s
<varname>ECHO</> variable to display only failed commands
(Pavel Stehule)
</para>
<para>
This can also be enabled with the <application>psql</>
<option>-b</> option.
</para>
</listitem>
<listitem>
<para>
Allow column, header, and border control to <application>psql</>'s
Unicode style (Pavel Stehule)
</para>
<para>
Single or double output is supported; the default is
<literal>single</>.
</para>
</listitem>
<listitem>
<para>
Add <application>psql</> <link
linkend="APP-PSQL-variables"><envar>PROMPT</></> variables option
2015-06-11 06:08:55 +02:00
(<literal>%l</>) to display the multi-line statement line number
(Sawada Masahiko)
</para>
</listitem>
<listitem>
<para>
Add <application>psql</> setting <link
linkend="APP-PSQL-meta-commands"><varname>pager_min_lines</></>
to control pager invocation (Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Improve <application>psql</> line counting used when deciding
to invoke the pager (Andrew Dunstan)
</para>
</listitem>
<listitem>
<para>
Add <application>psql</> tab completion when setting the
<xref linkend="guc-search-path"> variable (Jeff Janes)
2015-06-11 06:08:55 +02:00
</para>
<para>
Currently only the first schema can be tab-completed.
</para>
</listitem>
<listitem>
<para>
Improve <application>psql</>'s tab completion for triggers and rules
2015-06-11 06:08:55 +02:00
(Andreas Karlsson)
</para>
</listitem>
</itemizedlist>
<sect5>
<title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
<itemizedlist>
<listitem>
<para>
Add <application>psql</> <command>\?</> help sections
<literal>variables</> and <literal>options</> (Pavel Stehule)
</para>
<para>
<literal>variables</> outputs <application>psql</> variables
and <literal>options</> shows command-line options.
<command>\? commands</> is the default output. This help
information can also be output via <literal>--help=section</>.
</para>
</listitem>
<listitem>
<para>
Show tablespace size in <application>psql</>'s <literal>\db+</>
(Fabr&iacute;zio de Royes Mello)
</para>
</listitem>
<listitem>
<para>
Show data type owners in <application>psql</>'s <literal>\dT+</>
(Magnus Hagander)
</para>
</listitem>
<listitem>
<para>
Allow <application>psql</>'s <command>\watch</> to output
2015-06-11 06:08:55 +02:00
<command>\timing</> information (Fujii Masao)
</para>
<para>
Also prevent <option>--echo-hidden</> from echoing
<command>\watch</> queries.
</para>
</listitem>
<listitem>
<para>
Allow <application>psql</>'s <literal>\sf</> and <literal>\ef</>
to honor <envar>ECHO_HIDDEN</> (Andrew Dunstan)
</para>
</listitem>
<listitem>
<para>
Improve <application>psql</> tab completion for <command>\set</>,
<command>\unset</>, and <literal>:variable</> names (Pavel
Stehule)
</para>
</listitem>
<listitem>
<para>
Allow tab completion of role names
in <application>psql</> <literal>\c</> commands (Ian Barwick)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect5>
</sect4>
<sect4>
<title><xref linkend="APP-PGDUMP"></title>
<itemizedlist>
<listitem>
<para>
Allow <application>pg_dump</> to share a snapshot taken by another
session using <option>--snapshot</> (Simon Riggs, Michael Paquier)
</para>
<para>
The remote snapshot must have been exported by
<function>pg_export_snapshot()</> or been defined when creating
a logical replication slot. This can be used by parallel
2015-06-11 06:08:55 +02:00
<application>pg_dump</> to use a consistent snapshot across
<application>pg_dump</> processes.
</para>
</listitem>
<listitem>
<para>
Always have <application>pg_dump</> print server and
<application>pg_dump</> versions (Jing Wang)
</para>
<para>
Previously, version information was only printed in
<option>--verbose</> mode.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="app-pg-ctl"></title>
<itemizedlist>
<listitem>
<para>
Change <application>pg_ctl</>'s default shutdown mode from
2015-06-11 06:08:55 +02:00
<literal>smart</> to <literal>fast</> (Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Allow multiple <application>pg_ctl</> <option>-o</> options to
be appended (Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Allow control of <application>pg_ctl</>'s event source logging
on <systemitem class="osname">MS Windows</> (MauMau)
</para>
<para>
This only controls <application>pg_ctl</>, not the server, which
has separate settings in <filename>postgresql.conf</>.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="pgupgrade"></title>
<itemizedlist>
<listitem>
<para>
Move <application>pg_upgrade</> from <filename>contrib</> to
<filename>src/bin</> (Peter Eisentraut)
</para>
<para>
In connection with this change, the functionality previously
provided by the <application>pg_upgrade_support</> module has been
moved into the core server.
</para>
2015-06-11 06:08:55 +02:00
</listitem>
<listitem>
<para>
Allow multiple <application>pg_upgrade</>
<option>-o</>/<option>-O</> options to be appended (Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Improve database collation comparisons in
<application>pg_upgrade</> (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Document the use of <application>rsync</> for standby server
upgrades using <application>pg_upgrade</> (Stephen Frost,
Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Remove support for upgrading from 8.3 clusters (Bruce Momjian)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="pgbench"></title>
<itemizedlist>
<listitem>
<para>
Move pgbench from <filename>contrib</> to <filename>src/bin</>
(Peter Eisentraut)
</para>
</listitem>
<listitem>
<para>
Allow counting of pgbench transactions that take over a specified
amount of time (Fabien Coelho)
</para>
<para>
This is controlled by new <option>--latency-limit</> option.
</para>
</listitem>
<listitem>
<para>
Allow pgbench to generate Gaussian/exponential distributions
using <command>\setrandom</> (Kondo Mitsumasa, Fabien Coelho)
</para>
</listitem>
<listitem>
<para>
Allow <application>pgbench</>'s <command>\set</> command to handle
multi-operator expressions (Robert Haas, Fabien Coelho)
</para>
</listitem>
</itemizedlist>
</sect4>
2015-06-11 06:08:55 +02:00
</sect3>
<sect3>
<title>Source Code</title>
<itemizedlist>
<listitem>
<para>
Simplify <link linkend="wal"><acronym>WAL</></> record format
(Heikki Linnakangas)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows external tools to more easily track what blocks
are modified.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add basic atomics <acronym>API</> support (Andres Freund, Oskari
Saarenmaa)
</para>
</listitem>
<listitem>
<para>
Add native compiler and memory barriers for <productname>Solaris
Studio</> (Oskari Saarenmaa)
</para>
<para>
IS THIS PART OF ATOMICS?
</para>
</listitem>
<listitem>
<para>
Allow custom path and scan methods (KaiGai Kohei, Tom Lane)
</para>
<para>
This allows extensions greater control over the optimizer and
executor.
</para>
</listitem>
<listitem>
<para>
Allow foreign data wrappers to do post-filter locking (Etsuro
Fujita)
</para>
</listitem>
<listitem>
<para>
Improve <function>hash_create()</>'s API for selecting
simple-binary-key hash functions (Teodor Sigaev, Tom Lane)
</para>
</listitem>
2015-06-11 06:08:55 +02:00
<listitem>
<para>
Improve parallel execution infrastructure (Robert Haas, Amit
Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)
</para>
</listitem>
<listitem>
<para>
Remove <productname>Alpha</> (<acronym>CPU</>) and <systemitem
class="osname">Tru64</> (OS) ports (Andres Freund)
</para>
</listitem>
<listitem>
<para>
Remove swap-byte-based spinlock implementation for
<acronym>ARM</>v5 and earlier <acronym>CPU</>s (Robert Haas)
</para>
<para>
<acronym>ARM</>v5's weak memory ordering made this locking
implementation unsafe. Spinlock support is still possible on
newer gcc implementations with atomics support.
</para>
</listitem>
<listitem>
<para>
Generate an error when excessively long (100+ character) file
paths are written to tar files (Peter Eisentraut)
</para>
<para>
Tar does not support such overly-long paths.
</para>
</listitem>
<listitem>
<para>
Change index opclass for columns <link
linkend="catalog-pg-seclabel"><structname>pg_seclabel</></>.<structname>provider</>
and <link
linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</></>.<structname>provider</>
to be <literal>text_pattern_ops</> (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
This avoids possible problems with these indexes when different
databases of a cluster have different default collations.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
</itemizedlist>
<sect4>
<title>MS Windows</title>
<itemizedlist>
<listitem>
<para>
Allow higher-precision timestamp resolution on <systemitem
class="osname">Windows 8</> or <systemitem class="osname">Windows
Server 2012</> and later Windows systems (Craig Ringer)
</para>
</listitem>
<listitem>
<para>
Install shared libraries to <filename>bin</> in <systemitem
class="osname">MS Windows</> (Peter Eisentraut, Michael Paquier)
</para>
</listitem>
<listitem>
<para>
Install <filename>src/test/modules</> together with
<filename>contrib</> on <productname>MSVC</> builds (Michael
Paquier)
</para>
</listitem>
<listitem>
<para>
Allow <link linkend="install-procedure">configure's
<option>--with-extra-version</></> to be honored by the
<productname>MSVC</> build (Michael Paquier)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Pass <envar>PGFILEDESC</> into <productname>MSVC</> contrib builds
(Michael Paquier)
</para>
</listitem>
<listitem>
<para>
Add icons to all <productname>MSVC</>-built binaries and version
information to all <systemitem class="osname">MS Windows</>
binaries (Noah Misch)
2015-06-11 06:08:55 +02:00
</para>
<para>
MinGW already had such icons.
</para>
</listitem>
<listitem>
<para>
Add optional-argument support to the internal
<function>getopt_long()</> implementation (Michael Paquier,
Andres Freund)
</para>
<para>
This is used by the <productname>MSVC</> build.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Additional Modules</title>
<itemizedlist>
<listitem>
<para>
Add statistics for minimum, maximum,
mean, and standard deviation times to <link
linkend="pgstatstatements-columns"><application>pg_stat_statements</></>
(Mitsumasa Kondo, Andrew Dunstan)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link linkend="pgcrypto"><application>pgcrypto</></> function
2015-06-11 06:08:55 +02:00
<function>pgp_armor_headers()</> to extract <productname>PGP</>
armor headers (Marko Tiikkaja, Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Allow empty replacement strings in <link
linkend="unaccent"><application>unaccent</></> (Mohammad Alhashash)
2015-06-11 06:08:55 +02:00
</para>
<para>
This is useful in languages where diacritic signs are represented
as separate characters.
</para>
</listitem>
<listitem>
<para>
Allow multi-character source strings in <link
linkend="unaccent"><application>unaccent</></> (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
This could be useful in languages where diacritic signs are
represented as separate characters. It also allows more complex
unaccent dictionaries.
</para>
</listitem>
<listitem>
<para>
Add <filename>contrib</> modules <link
linkend="tsm-system-rows"><application>tsm_system_rows</></> and
<link linkend="tsm-system-time"><application>tsm_system_time</></>
to allow additional table sampling methods (Petr Jel&iacute;nek)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add <link linkend="GIN"><acronym>GIN</></>
index inspection functions to <link
linkend="pageinspect"><application>pageinspect</></> (Heikki
Linnakangas, Peter Geoghegan, Michael Paquier)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Add information about buffer pins to <link
linkend="pgbuffercache"><application>pg_buffercache</></> display
(Andres Freund)
</para>
</listitem>
2015-06-11 06:08:55 +02:00
<listitem>
<para>
Allow <link linkend="pgstattuple"><application>pgstattuple</></>
to report approximate answers with less overhead using
<function>pgstattuple_approx()</> (Abhijit Menon-Sen)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Move <application>dummy_seclabel</>, <application>test_shm_mq</>,
<application>test_parser</>, and <application>worker_spi</>
from <filename>contrib</> to <filename>src/test/modules</>
(&Aacute;lvaro Herrera)
</para>
<para>
These modules are only meant for server testing, so they do not need
to be built or installed when packaging <productname>PostgreSQL</>.
</para>
2015-06-11 06:08:55 +02:00
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>