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

2084 lines
55 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="functions-comparison">operator precedence</>
to match the <acronym>SQL</> standard (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
"&lt;" and "&gt;" now have the same precedence as "&lt;="
"&gt;=" and "&lt;&gt;", and <literal>IS</> now has lower
precedence. <literal>NOT</> now also has symmetric precedence.
The <acronym>GUC</> <varname>operator_precedence_warning</> can be
enabled to warn about queries where the precedence has changed.
</para>
</listitem>
<listitem>
<para>
Use cast conversions for <application>PL/pgSQL</> type conversions,
rather than converting to and from text (Tom Lane)
</para>
<para>
This causes conversions of booleans to strings to
return <literal>true</> or <literal>false</>, not
<literal>t</>/<literal>f</>.
</para>
</listitem>
<listitem>
<para>
Allow special characters in <link linkend="libpq-envars">server
startup option values</> to be escaped with a backslash (Andres
Freund)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows characters like spaces to be passed inside option values.
Passing a backslash now requires supplying a double-backslash.
</para>
</listitem>
<listitem>
<para>
Set the default value of <link
linkend="gssapi-auth"><varname>include_realm</></> to not remove
2015-06-11 06:08:55 +02:00
the <acronym>GSS</> and <acronym>SSPI</> realm from the principal
(Stephen Frost)
</para>
</listitem>
<listitem>
<para>
Fix <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN</></>
and <link linkend="SQL-ALTERTABLE"><command>ALTER OWNER TO</></>
to properly reassign 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-side <acronym>GUC</> <varname>autocommit</>, which
was already deprecated and non-operational (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Remove <link
linkend="catalog-pg-authid"><structname>pg_authid</>.<structname>rolcatupdate</></>,
as it had no purpose (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
<productname>PostgreSQL</productname> 9.5 and the previous major
release.
</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 <acronym>GUC</> <link
linkend="guc-gin-pending-list-limit"><varname>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 this was controlled by <link
linkend="guc-work-mem"><varname>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="SQL-CREATEINDEX">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 <link linkend="guc-shared-buffers">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>
<para>
Also use <acronym>CPU</> instructions for <acronym>CRC</>
calculations, if supported
</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 <acronym>GUC</> variable <link
linkend="guc-cluster-name"><varname>cluster_name</></> (Thomas
2015-06-11 06:08:55 +02:00
Munro)
</para>
<para>
This string, set in <link
linkend="config-setting-configuration-file"><filename>postgresql.conf</></>,
allows clients to query the cluster name. This name also appears
in the process title, allowing for easier grouping of processes
belonging to the same cluster.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Prevent non-superusers from changing <link
linkend="guc-log-disconnections"><varname>log_disconnections</></>
2015-06-11 06:08:55 +02:00
on connection startup (Fujii Masao)
</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>
Their presence replaces checks against the certificate's
<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 then 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>
Have <application>libpq</> honor any <productname>OpenSSL</>
thread callbacks (Jan Urbanski)
</para>
<para>
Previously they were overwritten.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Server Settings</title>
<itemizedlist>
<listitem>
<para>
Replace <varname>checkpoint_segments</> with <link
linkend="guc-min-wal-size"><varname>min_wal_size</></> and
<link linkend="guc-max-wal-size"><varname>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 <acronym>GUC</> <link
linkend="guc-wal-compression"><varname>wal_compression</></> to
enable 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 the recording of transaction
commit timestamps when <acronym>GUC</> <link
linkend="guc-track-commit-timestamp"><varname>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 <link
linkend="guc-local-preload-libraries"><varname>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 <acronym>GUC</> <link
linkend="guc-debug-assertions"><varname>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 once enabled at compile-time, allowing for more
efficient code optimization. This 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 <link
linkend="guc-effective-io-concurrency"><varname>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 control Linux <acronym>OOM</> killer (Gurjeet Singh)
2015-06-11 06:08:55 +02:00
</para>
<para>
The previous <acronym>OOM</> control involved a compile-time
option.
</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>
<acronym>GUC</> <varname>pause_at_recovery_target</> was also
removed.
</para>
</listitem>
<listitem>
<para>
Add <link linkend="guc-archive-mode"><varname>archive_mode</></>
<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 <acronym>GUC</> <link
linkend="guc-wal-retrieve-retry-interval"><varname>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 <acronym>GUC</> <link
linkend="guc-log-replication-commands"><varname>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 <link
linkend="guc-log-statement"><varname>log_statement</></> is set
to <literal>all</>.
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow the <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 backends 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 allows the creation of local foreign tables definitions
that match the remote table structure. Currently, only the
<link linkend="postgres-fdw"><application>postgres_fdw</></>
foreign data wrapper supports this feature.
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 checks are assumed to be enforced on the remote server,
and are not checked locally. However, they are considered for
optimization and constraint-exclusion checking.
</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 <link
linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands</></>
set-returning function, 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, leading to invalid
<type>XML</>.
</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 specification 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 exist
for <type>JSON</> (Andrew Dunstan)
</para>
<para>
The functions 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 <link
linkend="functions-math-func-table"><function>width_bucket()</></>
which 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>
User-defined <literal>=&gt;</> operators have been issuing
warnings since Postgres 9.0, and were removed in hstore in 9.2.
Previously only <literal>:=</> could be used.
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 <link
linkend="pg-stat-activity-view"><structname>pg_stat_activity</></>,
<link
linkend="functions-admin-signal-table"><function>pg_cancel_backend()</></>,
and <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 such operations.
</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>
Add specification of conversion routines to/from <acronym>SQL</>
data types to procedural languages data types (Peter Eisentraut)
</para>
<para>
This adds new commands <link
linkend="SQL-CREATETRANSFORM"><command>CREATE</></>/<link
linkend="SQL-DROPTRANSFORM"><command>DROP TRANSFORM</></>.
This also adds transformations between <link
linkend="hstore"><application>hstore</></> and <link
linkend="ltree"><application>ltree</></> 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>
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>
Have <link
linkend="app-pgbasebackup"><application>pg_basebackup</></> use
a tablespace mapping file with the <application>tar</> format,
to handle file paths of 100+ characters in length and sybolic
links on <systemitem class="osname">MS Windows</> (Amit Kapila)
</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</></>
2015-06-11 06:08:55 +02:00
setting to control pager invocation (Andrew Dunstan)
</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
<varname>search_path</> variable (Jeff Janes)
</para>
<para>
Currently only the first schema can be tab-completed.
</para>
</listitem>
<listitem>
<para>
Improve <application>psql</> tab-completion for triggers and rules
(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</> <command>\watch</> to output
<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 <application>psql</> <literal>\c</>
role names (Ian Barwick)
</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</> default shutdown mode from
<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>
</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 dynahash capabilities (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 columns <link
linkend="catalog-pg-seclabel"><structname>pg_seclabel</></>.<structname>provider</>
and <link
linkend="catalog-pg-seclabel"><structname>pg_shseclabel</></>.<structname>provider</>
to <type>TEXT</> (Tom Lane)
2015-06-11 06:08:55 +02:00
</para>
<para>
This allows these columns to store 64+ characters.
</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 <link linkend="app-pgrewind"><application>pg_rewind</></>,
which allows re-synchronizing a master server after failback
(Heikki Linnakangas)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<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="pgxlogdump"><application>pg_xlogdump</></> option
<option>--stats</> to display summary statistics (Abhijit Menon-Sen)
2015-06-11 06:08:55 +02:00
</para>
</listitem>
<listitem>
<para>
Allow <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>
</listitem>
</itemizedlist>
<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>
</sect3>
</sect2>
</sect1>