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

1938 lines
48 KiB
Plaintext
Raw Normal View History

2015-06-11 06:08:55 +02:00
<!-- 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>
"&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 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</>) (&Aacute;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
(&Aacute;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&iacute;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&iacute;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, &Aacute;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 (&Aacute;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</> (&Aacute;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 (&Aacute;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</> (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<para>
Add columns to the output of
<function>pg_event_trigger_dropped_objects</> (&Aacute;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
(&lt;-&gt;) (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 =&gt; to specify named parameters in function calls
(Pavel Stehule)
</para>
<para>
User-defined =&gt; 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 (&Aacute;lvaro
Herrera)
</para>
</listitem>
<listitem>
<para>
Add function <function>pg_identify_object_as_address()</> to return
object information based on <type>OID</>s (&Aacute;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>
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 <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 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>
<para>
This change prevents <application>pg_basebackup</> from backing
up pre-9.5 servers.
2015-06-11 06:08:55 +02:00
</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&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 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</>
(&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>
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>