mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-03 13:46:55 +02:00
1930 lines
47 KiB
Plaintext
1930 lines
47 KiB
Plaintext
|
<!-- doc/src/sgml/release-9.5.sgml -->
|
||
|
<!-- See header comment in release.sgml about typical markup -->
|
||
|
|
||
|
<sect1 id="release-9-5">
|
||
|
<title>Release 9.5</title>
|
||
|
|
||
|
<note>
|
||
|
<title>Release Date</title>
|
||
|
<para>AS OF 2015-06-01</para>
|
||
|
<simpara>2015-XX-XX</simpara>
|
||
|
</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>
|
||
|
</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 operator precedence to match the <acronym>SQL</> standard
|
||
|
(Tom Lane)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
"<" and ">" now have the same precedence as "<="
|
||
|
">=" and "<>", 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 server startup option values to be
|
||
|
escaped with a backslash (Andres Freund)
|
||
|
</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 <varname>include_realm</> to not remove
|
||
|
the <acronym>GSS</> and <acronym>SSPI</> realm from the principal
|
||
|
(Stephen Frost)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Fix <command>REASSIGN</> and <command>ALTER OWNER TO</> to properly
|
||
|
reassign ownership of types, foreign data wrappers, and foreign
|
||
|
servers (Bruce Momjian)
|
||
|
</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 <structname>pg_authid</>.<structname>rolcatupdate</>, as it
|
||
|
had no purpose (Adam Brightwell)
|
||
|
</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 Block Range Indexes (<acronym>BRIN</>) (Álvaro Herrera,
|
||
|
Heikki Linnakangas, Emre Hasegeli)
|
||
|
</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 GiST indexes
|
||
|
(Alexander Korotkov, Heikki Linnakangas)
|
||
|
</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 GiST indexes to perform index-only scans (Anastasia
|
||
|
Lubennikova, Heikki Linnakangas, Andreas Karlsson)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <acronym>GUC</> <varname>gin_pending_list_limit</> to control
|
||
|
the size of <acronym>GIN</> pending lists (Fujii Masao)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Previously this was controlled by <varname>work_mem</>. This can
|
||
|
also be set as an index storage parameter.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Issue a warning during the creation of hash indexes because they
|
||
|
are not crash-safe (Bruce Momjian)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
<sect4>
|
||
|
<title>General Performance</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Improve the speed of sorting character and numeric fields (Robert
|
||
|
Haas, Peter Geoghegan, Andrew Gierth)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Improve hash creation performance (Tomas Vondra, Teodor Sigaev,
|
||
|
Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Improve concurrency of shared buffer replacement (Robert Haas,
|
||
|
Amit Kapila)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Improve concurrent locking and buffer scan performance (Andres
|
||
|
Freund, Kevin Grittner)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<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>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <acronym>GUC</> variable <varname>cluster_name</> (Thomas
|
||
|
Munro)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This string, set in <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.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Prevent non-superusers from changing <varname>log_disconnections</>
|
||
|
on connection startup (Fujii Masao)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
<sect4>
|
||
|
<title><acronym>SSL</></title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Check <quote>Subject Alternative Names</> in <acronym>SSL</>
|
||
|
server certificates, if present (Alexey Klyukin)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Their presence replaces checks against the certificate's
|
||
|
<quote>Common Name</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add system view <structname>pg_stat_ssl</> to report
|
||
|
<acronym>SSL</> connection information (Magnus Hagander)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <application>libpq</> function <function>PQsslAttribute()</>
|
||
|
that returns <acronym>SSL</> information (Heikki Linnakangas)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
While <function>PQgetssl()</> can still be used
|
||
|
to then call <productname>OpenSSL</> functions,
|
||
|
<function>PQsslAttribute()</> returns <acronym>SSL</>
|
||
|
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
|
||
|
<varname>min_wal_size</> and <varname>max_wal_size</> (Heikki
|
||
|
Linnakangas)
|
||
|
</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</> <varname>wal_compression</> to enable
|
||
|
compression of full page images stored in <acronym>WAL</>
|
||
|
(Rahila Syed, Michael Paquier)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow the recording of transaction commit timestamps when
|
||
|
<acronym>GUC</> <varname>track_commit_timestamp</> is enabled
|
||
|
(Álvaro Herrera, Petr Jelinek)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Timestamp information can be accessed using
|
||
|
functions <function>pg_xact_commit_timestamp()</> and
|
||
|
<function>pg_last_committed_xact()</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <varname>local_preload_libraries</> to be set by
|
||
|
<command>ALTER ROLE SET</> (Peter Eisentraut, Kyotaro Horiguchi)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow running autovacuum workers to respond to configuration
|
||
|
parameter changes (Michael Paquier)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Make <acronym>GUC</> <varname>debug_assertions</> read-only
|
||
|
(Andres Freund)
|
||
|
</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 postgres <option>-A</> option.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow setting <varname>effective_io_concurrency</> on systems
|
||
|
where it has no effect (Peter Eisentraut)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add environment variables <envar>PG_OOM_ADJUST_FILE</> and
|
||
|
<envar>PG_OOM_ADJUST_VALUE</> to control Linux <acronym>OOM</>
|
||
|
killer (Gurjeet Singh)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The previous <acronym>OOM</> control involved a compile-time
|
||
|
option.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add function and view <function>pg_file_settings</> to show
|
||
|
the source of <acronym>GUC</> values set in configuration files
|
||
|
(Sawada Masahiko)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <structname>pending_restart</> to the system view
|
||
|
<structname>pg_settings</> to indicate a change is pending a
|
||
|
restart (Peter Eisentraut)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <command>ALTER SYSTEM</> values to be reset with
|
||
|
<command>ALTER SYSTEM RESET</> (Vik Fearing)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This removes the setting from <filename>postgresql.auto.conf</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Replication and Recovery</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <filename>recovery.conf</> parameter
|
||
|
<varname>recovery_target_action</> to control post-recovery
|
||
|
activity (Petr Jelinek)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<acronym>GUC</> <varname>pause_at_recovery_target</> was also
|
||
|
removed.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <varname>archive_mode</> <literal>always</> to allow standbys
|
||
|
to always archive received <acronym>WAL</> files (Fujii Masao)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <acronym>GUC</> <varname>wal_retrieve_retry_interval</> to
|
||
|
control <acronym>WAL</> read retry after failure (Alexey Vasiliev,
|
||
|
Michael Paquier)
|
||
|
</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</> <varname>log_replication_commands</> to log
|
||
|
replication commands (Fujii Masao)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
By default, replication commands,
|
||
|
e.g. <literal>IDENTIFY_COMMAND</>, are not logged, even when
|
||
|
<varname>log_statements</> is set to <literal>all</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow the labeling of the origin of logical replication changes
|
||
|
(Andres Freund)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This helps with change tracking.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Report the backends holding replication slots in
|
||
|
<structname>pg_replication_slots</> (Craig Ringer)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The new output column is <structname>active_pid</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <filename>recovery.conf</>'s <varname>primary_conninfo</>
|
||
|
to use connection <acronym>URI</>s, e.g. <literal>postgres://</>
|
||
|
(Alex Shulgin)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Queries</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <command>INSERTS</> that would generate constraint conflicts
|
||
|
to be turned into <command>UPDATE</>s or ignored (Peter Geoghegan,
|
||
|
Heikki Linnakangas, Andres Freund)
|
||
|
</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 <literal>GROUPING
|
||
|
SETS</>, <literal>CUBE</> and <literal>ROLLUP</> (Andrew Gierth,
|
||
|
Atri Sharma)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow multi-column <command>UPDATE</>s with a single subselect
|
||
|
(Tom Lane)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This is accomplished using the syntax <command>UPDATE tab SET
|
||
|
(col1, col2, ...) = (SELECT ...)</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add new <command>SELECT</> option <literal>SKIP LOCKED</> to skip
|
||
|
locked rows (Thomas Munro)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This does not throw an error for locked rows like
|
||
|
<literal>NOWAIT</> does.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <command>SELECT</> option <literal>TABLESAMPLE</> to return
|
||
|
a subset of a table (Petr Jelinek)
|
||
|
</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 <command>EXPLAIN</> output
|
||
|
(Marius Timmer, Lukas Kreft, Arne Scheffer)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Details include <literal>COLLATE</>, <literal>DESC</>,
|
||
|
<literal>USING</>, and <literal>NULLS FIRST</><literal>/LAST</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Have <command>VACUUM</> log the number of pages skipped due to pins
|
||
|
(Jim Nasby)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Have <command>TRUNCATE</> properly update the <literal>pg_stat</>*
|
||
|
tuple counters (Alexander Shulgin)
|
||
|
</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</> (Fujii Masao)
|
||
|
</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
|
||
|
<command>CREATE</>/<command>ALTER</>/<command>DROP POLICY</>
|
||
|
and <command>ALTER TABLE ... ENABLE/DISABLE ROW SECURITY</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow control of table <acronym>WAL</> logging after table
|
||
|
creation with <command>ALTER TABLE .. SET LOGGED / UNLOGGED</>
|
||
|
(Fabrízio de Royes Mello)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <literal>IF NOT EXISTS</> clause to <command>CREATE TABLE
|
||
|
AS</>, <command>CREATE INDEX</>, <command>CREATE SEQUENCE</>,
|
||
|
and <command>CREATE MATERIALIZED VIEW</> (Fabrízio de
|
||
|
Royes Mello)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add support for <literal>IF EXISTS</> to <command>ALTER TABLE
|
||
|
... RENAME CONSTRAINT</> (Bruce Momjian)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <literal>CURRENT</><literal>/SESSION_USER</> to specify the
|
||
|
current user in certain (Kyotaro Horiguchi, Álvaro Herrera)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Commands include <command>ALTER USER</>, <command>ALTER
|
||
|
GROUP</>, <command>ALTER ROLE</>, <command>GRANT</>, and various
|
||
|
<command>ALTER OBJECT / OWNER TO</> commands.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow comments on domain constraints (Álvaro Herrera)
|
||
|
</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 <command>LOCK TABLE .. ROW EXCLUSIVE MODE</> for those with
|
||
|
<command>INSERT</> privileges (Stephen Frost)
|
||
|
</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 <command>CREATE</>/<command>ALTER DATABASE</> to manipulate
|
||
|
<structname>datistemplate</> and <structname>datallowconn</>
|
||
|
(Vik Fearing)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This allows these database settings to be changed more easily
|
||
|
than modifying the <structname>pg_database</> system table.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Have <command>CREATE TABLE AS</> and <command>REFRESH</> return
|
||
|
an <type>OID</> (Álvaro Herrera)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
RETURN WHERE
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect4>
|
||
|
<title><xref linkend="SQL-CREATEFOREIGNDATAWRAPPER"></title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add support for <command>IMPORT FOREIGN SCHEMA</> (Ronan Dunklau,
|
||
|
Michael Paquier, Tom Lane)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This allows the creation of local foreign tables definitions
|
||
|
that match the remote table structure. Currently, only the
|
||
|
<application>postgres_fdw</> foreign data wrapper supports this
|
||
|
feature.
|
||
|
</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 <function>pg_event_trigger_ddl_commands</> set-returning
|
||
|
function, which returns <acronym>DDL</> activity associated with
|
||
|
event triggers (Álvaro Herrera)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow event triggers on table rewrites caused by <command>ALTER
|
||
|
TABLE</> (Dimitri Fontaine)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add event trigger support for database-level
|
||
|
<command>COMMENT</>, <command>SECURITY LABEL</>, and
|
||
|
<command>GRANT</>/<command>REVOKE</> (Álvaro Herrera)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add columns to the output of
|
||
|
<function>pg_event_trigger_dropped_objects</> (Álvaro
|
||
|
Herrera)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This allows simpler processing of delete operations.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Data Types</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow the <type>XML</> data type to accept empty or all-whitespace
|
||
|
values (Peter Eisentraut)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This is required by the <acronym>SQL</>/<acronym>XML</>
|
||
|
specification.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Fix <type>XML</> xpath handling to return namespace declarations
|
||
|
even if the namespace is in a parent element (Ali Akbar)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Previously the namespace was not returned, leading to invalid
|
||
|
<type>XML</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <type>macaddr</> input using the format
|
||
|
<literal>xxxx-xxxx-xxxx</> (Herwin Weststrate)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Tighten specification of <type>INTERVAL</> precision specifications
|
||
|
(Bruce Momjian)
|
||
|
</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 <type>INET</>/<type>CIDR</> operators
|
||
|
and improve estimators for text search functions (Emre Hasegeli,
|
||
|
Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect4>
|
||
|
<title><link linkend="datatype-json"><acronym>JSON</></link></title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <type>JSONB</> functions <function>jsonb_set()</> and
|
||
|
<function>jsonb_pretty</> (Dmitry Dolgov, Andrew Dunstan)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add several generator functions for <type>JSONB</> that exist
|
||
|
for <type>JSON</> (Andrew Dunstan)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The functions are <function>to_jsonb()</>,
|
||
|
<function>jsonb_object()</>, <function>jsonb_build_object()</>,
|
||
|
<function>jsonb_build_array()</>, <function>jsonb_agg()</>,
|
||
|
and <function>jsonb_object_agg()</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Reduce casting requirements to/from <type>JSON</> and
|
||
|
<type>JSONB</> (Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <type>TEXT</>, <type>TEXT</> array, and <type>INTEGER</>
|
||
|
values to be subtracted from <type>JSONB</> documents (Dmitry
|
||
|
Dolgov, Andrew Dunstan)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <type>JSONB</> operator || (Dmitry Dolgov, Andrew Dunstan)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>json_strip_nulls()</> and
|
||
|
<function>jsonb_strip_nulls()</> functions to remove <type>JSON</>
|
||
|
null values from documents (Andrew Dunstan)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Functions</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>generate_series()</> for <type>NUMERIC</> values
|
||
|
(Plato Malugin)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <function>array_agg()</> and <function>ARRAY()</> to take
|
||
|
arrays as inputs (Ali Akbar, Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add functions <function>array_position()</> and
|
||
|
<function>array_positions()</> to return subscripts of array values
|
||
|
(Pavel Stehule)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <type>point</>-to-<type>polygon</> distance operator
|
||
|
(<->) (Alexander Korotkov)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow multi-byte characters as escape in <literal>SIMILAR TO</>
|
||
|
and <literal>SUBSTRING</> (Jeff Davis)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Previously, only a single-byte character was allowed as an escape.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>width_bucket()</> which supports any sortable data
|
||
|
type and non-uniform bucket widths (Petr Jelinek)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow => to specify named parameters in function calls
|
||
|
(Pavel Stehule)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
User-defined => operators have been issuing warnings since
|
||
|
Postgres 9.0, and were removed in hstore in 9.2. Previously only
|
||
|
<literal>:=</> could be used.
|
||
|
</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 <function>pg_get_object_address()</> to return
|
||
|
<type>OID</>s that uniquely identify an object (Álvaro
|
||
|
Herrera)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add function <function>pg_identify_object_as_address()</> to return
|
||
|
object information based on <type>OID</>s (Álvaro Herrera)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Loosen security checks for viewing <structname>pg_stat_activity</>,
|
||
|
<function>pg_cancel_backend()</>, and
|
||
|
<function>pg_terminate_backend</> (Stephen Frost)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Now, role membership is sufficient; previously only the same
|
||
|
role could perform such operations.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>pg_stat_get_snapshot_timestamp()</> to output the
|
||
|
timestamp of the statistics snapshot (Matt Kelly)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
WHAT IS A STATISTICS SNAPSHOT?
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>mxid_age()</> to compute multi-xid age (Bruce
|
||
|
Momjian)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add data type <type>regrole</> that returns the <type>OID</>
|
||
|
of a role (Kyotaro Horiguchi)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add data type <type>regnamespace</> that returns the <type>OID</>
|
||
|
of a schema (Kyotaro Horiguchi)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
<sect4>
|
||
|
<title>Aggregates</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <function>MIN()</>/<function>MAX()</> aggregates for
|
||
|
<type>INET</>/<type>CIDR</> data types (Haribabu Kommi)
|
||
|
</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 <application>PL/Python</>
|
||
|
(Ed Behn, Ronan Dunklau)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This allows <application>PL/Python</> functions to return arrays
|
||
|
of composite types.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Reduce lossiness of <application>PL/Python</> floating value
|
||
|
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 <command>CREATE</>/<command>DROP
|
||
|
TRANSFORM</>. This also adds transformations between
|
||
|
<application>hstore</> and <application>ltree</> to/from
|
||
|
<application>PL/Perl</> and <application>PL/Python</>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect4>
|
||
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Improve <application>PL/pgSQL</> array performance (Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <command>ASSERT</> statement in <application>PL/pgSQL</>
|
||
|
(Pavel Stehule)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow more <application>PL/pgSQL</> keywords to be used as
|
||
|
identifiers (Tom Lane)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Client Applications</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Move <application>pg_archivecleanup</>,
|
||
|
<application>pg_test_fsync</>, <application>pg_test_timing</>,
|
||
|
and <application>pg_xlogdump</> from <filename>contrib</> to
|
||
|
<filename>src/bin</> (Peter Eisentraut)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <application>pg_receivexlog</> to manage physical replication
|
||
|
slots (Michael Paquier)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This is controlled via new <option>--create-slot</> and
|
||
|
<option>--drop-slot</> options.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow the <application>pg_receivexlog</> to synchronously flush
|
||
|
<acronym>WAL</> to storage using <option>--synchronous</> (Furuya
|
||
|
Osamu, Fujii Masao)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Without this, <acronym>WAL</> files are fsynced only on close.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <command>vacuumdb</> to vacuum in parallel using
|
||
|
<option>--jobs</> (Dilip Kumar)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <option>--verbose</> option to <application>reindexdb</>
|
||
|
(Sawada Masahiko)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Have <application>pg_basebackup</> use a tablespace mapping file,
|
||
|
to allow for file paths of 100+ characters in length (Amit Kapila)
|
||
|
</para>
|
||
|
</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</> <envar>PROMPT</> variable option
|
||
|
(<literal>%l</>) to display the multi-line statement line number
|
||
|
(Sawada Masahiko)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <application>psql</> setting <varname>pager_min_lines</>
|
||
|
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í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 as a
|
||
|
logical replication slot. This can be used by parallel
|
||
|
<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>
|
||
|
</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 <application>pg_upgrade</> support for 8.3 old clusters
|
||
|
(Bruce Momjian)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
</itemizedlist>
|
||
|
|
||
|
</sect4>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3>
|
||
|
<title>Source Code</title>
|
||
|
|
||
|
<itemizedlist>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Simplify <acronym>WAL</> record format (Heikki Linnakangas)
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
This allows external tools to more easily process <acronym>WAL</>
|
||
|
files.
|
||
|
</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 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 <structname>pg_seclabel</>.<structname>provider</>
|
||
|
and <structname>pg_shseclabel</>.<structname>provider</> to
|
||
|
<type>TEXT</> (Tom Lane)
|
||
|
</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 configure's <option>--with-extra-version</> to be honored
|
||
|
by the <productname>MSVC</> build (Michael Paquier)
|
||
|
</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 (Noah Misch)
|
||
|
</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 <application>pg_rewind</>, which allows re-synchronizing a
|
||
|
master server after failback (Heikki Linnakangas)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add statistics for minimum, maximum, mean, and standard deviation
|
||
|
times to <application>pg_stat_statements</> (Mitsumasa Kondo,
|
||
|
Andrew Dunstan)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <application>pgcrypto</> function
|
||
|
<function>pgp_armor_headers()</> to extract <productname>PGP</>
|
||
|
armor headers (Marko Tiikkaja, Heikki Linnakangas)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow empty replacement strings in <application>unaccent</>
|
||
|
(Mohammad Alhashash)
|
||
|
</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 <application>unaccent</>
|
||
|
(Tom Lane)
|
||
|
</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 <application>tsm_system_rows</>
|
||
|
and <application>tsm_system_time</> to allow additional table
|
||
|
sampling methods (Petr Jelinek)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Add <application>pg_xlogdump</> option <option>--stats</> to
|
||
|
display summary statistics (Abhijit Menon-Sen)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <acronym>GIN</> index inspection functions to
|
||
|
<application>pageinspect</> (Heikki Linnakangas, Peter Geoghegan,
|
||
|
Michael Paquier)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Allow <application>pgstattuple</> to report approximate answers
|
||
|
with less overhead using <function>pgstattuple_approx()</>
|
||
|
(Abhijit Menon-Sen)
|
||
|
</para>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Move <application>pg_upgrade_support</> code into backend and
|
||
|
remove the module (Peter Eisentraut)
|
||
|
</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</>
|
||
|
(Á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>
|
||
|
Add information about buffer pins to <application>pg_buffercache</>
|
||
|
display (Andres Freund)
|
||
|
</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>
|