A dump/restore using pg_dumpall, or use of pg_upgrade, is required for those wishing to migrate data from any previous release.

Version 9.5 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:

Adjust operator precedence to match the SQL standard (Tom Lane) The precedence of <= , >= and <> has been reduced to match that of < , > and = . The precedence of IS tests (e.g., x IS 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.

Change pg_ctl's default shutdown mode from smart to fast (Bruce Momjian) 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.

Allow characters in server command-line options to be escaped with a backslash (Andres Freund) Formerly, spaces in the options string always separated options, so there was no way to include a space in an option value. Including a backslash in an option value now requires writing \\ .

Change the default value of the GSSAPI include_realm parameter to 1, so that by default the realm is not removed from a GSS or SSPI principal name (Stephen Frost)

Replace configuration parameter checkpoint_segments with min_wal_size and max_wal_size (Heikki Linnakangas) If you previously adjusted checkpoint_segments , the following formula will give you an approximately equivalent setting: max_wal_size = (3 * checkpoint_segments) * 16MB Note that the default setting for max_wal_size is much higher than the default checkpoint_segments used to be, so adjusting it might no longer be necessary.

Control the Linux OOM killer via new environment variables PG_OOM_ADJUST_FILE and PG_OOM_ADJUST_VALUE , instead of compile-time options LINUX_OOM_SCORE_ADJ and LINUX_OOM_ADJ (Gurjeet Singh)

Decommission server configuration parameter ssl_renegotiation_limit , which was deprecated in earlier releases (Andres Freund) 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.

Remove server configuration parameter autocommit , which was already deprecated and non-operational (Tom Lane)

Remove the pg_authid catalog's rolcatupdate field, as it had no usefulness (Adam Brightwell)

The pg_stat_replication system view's sent field is now NULL, not zero, when it has no valid value (Magnus Hagander)