The precedence of <=, >= and <> has been
reduced to match that of <, > and =. The precedence
of IS tests (e.g., xIS NULL) has been
reduced to be just below these six comparison operators. Also,
multi-keyword operators beginning with NOT
now have the precedence of their base operator (for example,
NOT BETWEEN now has the same precedence as
BETWEEN) whereas before they had
inconsistent precedence, behaving like NOT
with respect to their left operand but like their base operator
with respect to their right operand. The new configuration
parameter operator_precedence_warning
can be enabled to warn about queries in which these precedence
changes result in different parsing choices.

This means the default behavior will be to forcibly cancel
existing database sessions, not simply wait for them to exit.

Use assignment cast behavior for data type conversions in
PL/pgSQL assignments, rather than
converting to and from text (Tom Lane)

This change causes conversions of Booleans to strings to produce
true or false,
not t or f. Other
type conversions may succeed in more cases than before; for
example, assigning a numeric value 3.9 to
an integer variable will now assign 4 rather than failing. If no
assignment-grade cast is defined for the particular source and
destination types, PL/pgSQL will
fall back to its old I/O conversion behavior.

While SSL renegotiation is a good idea in theory, it has caused
enough bugs to be considered a net negative in practice, and it is
due to be removed from future versions of the relevant standards.
We have therefore removed support for it from PostgreSQL. The ssl_renegotiation_limit parameter still exists, but
cannot be set to anything but zero (disabled). It's not documented
anymore, either.

BRIN indexes store only
summary data (such as minimum and maximum values) for ranges of
heap blocks. They are therefore very compact and cheap to update;
but if the data is naturally clustered, they can still provide
substantial speedup of searches.

Previously, to exploit such an index a subquery had to be used
to select a large number of rows ordered by bounding-box distance,
and the result then had to be filtered further with a more accurate
distance calculation.

This value can also be set on a per-index basis as an index
storage parameter. Previously the pending-list size was controlled
by work_mem, which was
awkward because appropriate values for work_mem are often much too large for this
purpose.

Issue a warning during the creation of hash indexes because they are not
crash-safe (Bruce Momjian)

This string, typically set in postgresql.conf, allows clients to identify the
cluster. This name also appears in the process title of all server
processes, allowing for easier identification of processes
belonging to the same cluster.

Add libpq functions to return
SSL information in an
implementation-independent way (Heikki Linnakangas)

While PQgetssl() can still be used to call
OpenSSL functions, it is now
considered deprecated because future versions of libpq might support other SSL implementations. When possible, use the new
functions PQsslAttribute(), PQsslAttributeNames(), and PQsslInUse() to obtain SSL information in an SSL-implementation-independent way.

This change allows the allocation of a large number of
WAL files without keeping them
after they are no longer needed. Therefore the default for
max_wal_size has been set to 1GB, much larger than the old default for checkpoint_segments. Also note that standby servers
perform restartpoints to try to limit their WAL space consumption
to max_wal_size; previously they did not
pay any attention to checkpoint_segments.

To let this work naturally, foreign tables are now allowed to
have check constraints marked as not valid, and to set storage and
OID characteristics, even though these
operations are effectively no-ops for a foreign table.

Disallow non-SQL-standard syntax for interval with both precision and field
specifications (Bruce Momjian)

Per the standard, such type specifications should be written as,
for example, INTERVAL MINUTE TO SECOND(2).
PostgreSQL formerly allowed this
to be written as INTERVAL(2) MINUTE TO
SECOND, but it must now be written in the standard way.

\? variables shows psql's special variables and \? options shows the command-line options.
\? commands shows the meta-commands, which
is the traditional output and remains the default. These help
displays can also be obtained with the command-line option
--help=section.

Show tablespace size in psql's
\db+ (Fabrízio de Royes Mello)

Show data type owners in psql's
\dT+ (Magnus Hagander)

Allow psql's \watch to output \timing
information (Fujii Masao)

Also prevent --echo-hidden from echoing
\watch queries, since that is generally
unwanted.

Allow pg_dump to share a
snapshot taken by another session using --snapshot (Simon Riggs, Michael Paquier)

The remote snapshot must have been exported by pg_export_snapshot() or logical replication slot
creation. This can be used to share a consistent snapshot across
multiple pg_dump processes.

Support table sizes exceeding 8GB in tar archive format (Tom
Lane)

The POSIX standard for tar format does not allow elements of a
tar archive to exceed 8GB, but most modern implementations of tar
support an extension that does allow it. Use the extension format
when necessary, rather than failing.

The overhead for connection establishment was miscalculated
whenever the number of pgbench threads was less than the number of
client connections. Although this is clearly a bug, we won't
back-patch it into pre-9.5 branches since it makes TPS numbers not
comparable to previous results.

Allow counting of pgbench transactions that take over a
specified amount of time (Fabien Coelho)

Submit correction

If you see anything in the documentation that is not correct, does not match
your experience with the particular feature or requires further clarification,
please use
this form
to report a documentation issue.