aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2019-02-04 19:18:49 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2019-02-04 19:18:49 -0500
commit527b5ed1ad469e19af458a3cbcc060899d1eab71 (patch)
tree5234b4b2f7e187f86e5c056f295e199a5df354e3
parent6e4d45b5f6babe48c066c547a7eedfc8152e5138 (diff)
downloadpostgresql-527b5ed1ad469e19af458a3cbcc060899d1eab71.tar.gz
postgresql-527b5ed1ad469e19af458a3cbcc060899d1eab71.zip
Doc: in each release branch, keep only that branch's own release notes.
Historically we've had each release branch include all prior branches' notes, including minor-release changes, back to the beginning of the project. That's basically an O(N^2) proposition, and it was starting to catch up with us: as of HEAD the back-branch release notes alone accounted for nearly 30% of the documentation. While there's certainly some value in easy access to back-branch notes, this is getting out of hand. Hence, switch over to the rule that each branch contains only its own release notes. So as to not make older notes too hard to find, each branch will provide URLs for the immediately preceding branches' release notes on the project website. There might be value in providing aggregated notes across all branches somewhere on the website, but that's a task for another day. Discussion: https://postgr.es/m/cbd4aeb5-2d9c-8b84-e968-9e09393d4c83@postgresql.org
-rw-r--r--doc/src/sgml/filelist.sgml16
-rw-r--r--doc/src/sgml/release-10.sgml9330
-rw-r--r--doc/src/sgml/release-11.sgml3962
-rw-r--r--doc/src/sgml/release-12.sgml10
-rw-r--r--doc/src/sgml/release-7.4.sgml4622
-rw-r--r--doc/src/sgml/release-8.0.sgml5421
-rw-r--r--doc/src/sgml/release-8.1.sgml5444
-rw-r--r--doc/src/sgml/release-8.2.sgml7077
-rw-r--r--doc/src/sgml/release-8.3.sgml8549
-rw-r--r--doc/src/sgml/release-8.4.sgml10080
-rw-r--r--doc/src/sgml/release-9.0.sgml11091
-rw-r--r--doc/src/sgml/release-9.1.sgml11760
-rw-r--r--doc/src/sgml/release-9.2.sgml12201
-rw-r--r--doc/src/sgml/release-9.3.sgml14551
-rw-r--r--doc/src/sgml/release-9.4.sgml13158
-rw-r--r--doc/src/sgml/release-9.5.sgml11191
-rw-r--r--doc/src/sgml/release-9.6.sgml11341
-rw-r--r--doc/src/sgml/release-old.sgml6557
-rw-r--r--doc/src/sgml/release.sgml94
-rw-r--r--src/tools/RELEASE_CHANGES47
20 files changed, 114 insertions, 146388 deletions
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 5dfdf54815e..a03ea1427b9 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -166,22 +166,6 @@
<!ENTITY release SYSTEM "release.sgml">
<!ENTITY release-12 SYSTEM "release-12.sgml">
-<!ENTITY release-11 SYSTEM "release-11.sgml">
-<!ENTITY release-10 SYSTEM "release-10.sgml">
-<!ENTITY release-9.6 SYSTEM "release-9.6.sgml">
-<!ENTITY release-9.5 SYSTEM "release-9.5.sgml">
-<!ENTITY release-9.4 SYSTEM "release-9.4.sgml">
-<!ENTITY release-9.3 SYSTEM "release-9.3.sgml">
-<!ENTITY release-9.2 SYSTEM "release-9.2.sgml">
-<!ENTITY release-9.1 SYSTEM "release-9.1.sgml">
-<!ENTITY release-9.0 SYSTEM "release-9.0.sgml">
-<!ENTITY release-8.4 SYSTEM "release-8.4.sgml">
-<!ENTITY release-8.3 SYSTEM "release-8.3.sgml">
-<!ENTITY release-8.2 SYSTEM "release-8.2.sgml">
-<!ENTITY release-8.1 SYSTEM "release-8.1.sgml">
-<!ENTITY release-8.0 SYSTEM "release-8.0.sgml">
-<!ENTITY release-7.4 SYSTEM "release-7.4.sgml">
-<!ENTITY release-old SYSTEM "release-old.sgml">
<!ENTITY limits SYSTEM "limits.sgml">
<!ENTITY acronyms SYSTEM "acronyms.sgml">
diff --git a/doc/src/sgml/release-10.sgml b/doc/src/sgml/release-10.sgml
deleted file mode 100644
index c72b4c931eb..00000000000
--- a/doc/src/sgml/release-10.sgml
+++ /dev/null
@@ -1,9330 +0,0 @@
-<!-- doc/src/sgml/release-10.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-10-6">
- <title>Release 10.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.5.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.6</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However, if you use the <filename>pg_stat_statements</filename> extension,
- see the changelog entry below about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 10.4,
- see <xref linkend="release-10-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure proper quoting of transition table names
- when <application>pg_dump</application> emits <command>CREATE TRIGGER
- ... REFERENCING</command> commands (Tom Lane)
- </para>
-
- <para>
- This oversight could be exploited by an unprivileged user to gain
- superuser privileges during the next dump/reload
- or <application>pg_upgrade</application> run. (CVE-2018-16850)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3d0f68dd3] 2018-10-02 11:54:12 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [419cc8add] 2018-10-02 11:54:12 -0400
-Branch: REL_10_STABLE [7eed72333] 2018-10-02 11:54:12 -0400
-Branch: REL9_6_STABLE [6d73983be] 2018-10-02 11:54:12 -0400
-Branch: REL9_5_STABLE [dad4df0fc] 2018-10-02 11:54:13 -0400
-Branch: REL9_4_STABLE [fd81fae67] 2018-10-02 11:54:13 -0400
-Branch: REL9_3_STABLE [01c7a87df] 2018-10-02 11:54:13 -0400
--->
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aaf10f32a] 2018-09-27 18:15:17 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [49507dec4] 2018-09-27 18:15:06 -0400
-Branch: REL_10_STABLE [dff3f06dc] 2018-09-27 18:15:06 -0400
--->
- <para>
- Fix <function>pg_get_partition_constraintdef()</function> to return
- NULL rather than fail when passed an invalid relation OID (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [c8ea87e4b] 2018-08-28 12:17:33 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [bc552b322] 2018-08-28 12:17:37 +0100
-Branch: REL_10_STABLE [f6f61d937] 2018-08-28 11:55:18 +0100
-Branch: REL9_6_STABLE [450b24741] 2018-08-28 11:51:57 +0100
-Branch: REL9_5_STABLE [41cfae1f3] 2018-08-28 11:51:06 +0100
-Branch: REL9_4_STABLE [2ba7c4e6c] 2018-08-28 11:50:20 +0100
-Branch: REL9_3_STABLE [861670369] 2018-08-28 11:48:43 +0100
-Branch: master [b7f6bcbff] 2018-09-12 19:31:06 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [f7d0343ea] 2018-09-12 19:43:44 +0100
-Branch: REL_10_STABLE [ab78c6e36] 2018-09-12 19:44:28 +0100
-Branch: REL9_6_STABLE [03e0bc117] 2018-09-12 19:45:13 +0100
-Branch: REL9_5_STABLE [77c2663de] 2018-09-12 19:52:10 +0100
-Branch: REL9_4_STABLE [a389ddc75] 2018-09-12 19:47:50 +0100
-Branch: REL9_3_STABLE [dea7fc60a] 2018-09-12 19:49:59 +0100
--->
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [a40631a92] 2018-08-23 21:42:40 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [5b4555f90] 2018-08-23 21:43:51 +0100
-Branch: REL_10_STABLE [d64fad666] 2018-08-23 21:43:55 +0100
-Branch: REL9_6_STABLE [5ec70a928] 2018-08-23 21:35:49 +0100
-Branch: REL9_5_STABLE [af988d130] 2018-08-23 21:35:53 +0100
--->
- <para>
- Fix parsing of standard multi-character operators that are immediately
- followed by a comment or <literal>+</literal> or <literal>-</literal>
- (Andrew Gierth)
- </para>
-
- <para>
- This oversight could lead to parse errors, or to incorrect assignment
- of precedence.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [d4a63f829] 2018-08-23 21:42:40 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [0b42bd459] 2018-08-23 21:43:51 +0100
-Branch: REL_10_STABLE [2dbfbd630] 2018-08-23 21:43:55 +0100
-Branch: REL9_6_STABLE [4854ead60] 2018-08-23 21:34:42 +0100
-Branch: REL9_5_STABLE [ad871a9d7] 2018-08-23 21:33:55 +0100
-Branch: REL9_4_STABLE [6c5ed6836] 2018-08-23 21:33:38 +0100
-Branch: REL9_3_STABLE [9923c934d] 2018-08-23 21:29:15 +0100
--->
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [520acab17] 2018-08-17 15:44:13 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [67b161eae] 2018-08-17 15:47:49 +0100
-Branch: REL_10_STABLE [d31ebbff5] 2018-08-17 16:06:35 +0100
-Branch: REL9_6_STABLE [6302fe6b2] 2018-08-17 16:19:10 +0100
-Branch: REL9_5_STABLE [d2ecc27c3] 2018-08-17 16:20:04 +0100
-Branch: REL9_4_STABLE [3cf3a65cb] 2018-08-17 16:23:56 +0100
-Branch: REL9_3_STABLE [807c1c555] 2018-08-17 16:25:52 +0100
--->
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [89b280e13] 2018-09-23 16:05:45 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [fe30cd25e] 2018-09-23 16:05:45 -0400
-Branch: REL_10_STABLE [5ed281e21] 2018-09-23 16:05:45 -0400
-Branch: REL9_6_STABLE [77d2a4866] 2018-09-23 16:05:45 -0400
-Branch: REL9_5_STABLE [c8a978bf4] 2018-09-23 16:05:45 -0400
-Branch: REL9_4_STABLE [38cb01084] 2018-09-23 16:05:45 -0400
-Branch: REL9_3_STABLE [00011a6ae] 2018-09-23 16:05:46 -0400
--->
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1f4a920b7] 2018-09-15 13:42:33 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [f13e2d1ce] 2018-09-15 13:42:34 -0400
-Branch: REL_10_STABLE [99cbbbbd1] 2018-09-15 13:42:34 -0400
-Branch: REL9_6_STABLE [2a97a0ad3] 2018-09-15 13:42:34 -0400
-Branch: REL9_5_STABLE [9b14bbd52] 2018-09-15 13:42:34 -0400
-Branch: REL9_4_STABLE [849475510] 2018-09-15 13:42:34 -0400
-Branch: REL9_3_STABLE [591d0ac88] 2018-09-15 13:42:34 -0400
--->
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent creation of a partition in a trigger attached to its parent
- table (Amit Langote)
- </para>
-
- <para>
- Ideally we'd allow that, but for the moment it has to be blocked to
- avoid crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problems with applying <literal>ON COMMIT DELETE ROWS</literal> to
- a partitioned temporary table (Amit Langote)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [75f9c4ca5] 2018-09-14 09:36:30 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [830d75659] 2018-09-14 09:51:47 +0530
-Branch: REL_10_STABLE [1ceb103e7] 2018-09-14 10:05:45 +0530
-Branch: REL9_6_STABLE [568b4e1fd] 2018-09-14 10:17:31 +0530
-Branch: master [14e9b2a75] 2018-09-04 10:28:08 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [2ce253cf5] 2018-09-04 10:26:06 +0530
-Branch: REL_10_STABLE [bf61873ae] 2018-09-04 10:49:05 +0530
-Branch: REL9_6_STABLE [f658235a4] 2018-09-04 11:01:25 +0530
--->
- <para>
- Disallow pushing sub-<literal>SELECT</literal>s containing window
- functions, <literal>LIMIT</literal>, or <literal>OFFSET</literal> to
- parallel workers (Amit Kapila)
- </para>
-
- <para>
- Such cases could result in inconsistent behavior due to different
- workers getting different answers, as a result of indeterminacy
- due to row-ordering variations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [0320ddaf3] 2018-09-26 20:19:15 +0200
-Branch: REL_11_STABLE Release: REL_11_0 [648546960] 2018-09-26 20:19:31 +0200
-Branch: REL_10_STABLE [5f6b0e6d6] 2018-09-26 20:19:44 +0200
-Branch: REL9_6_STABLE [bdf11d688] 2018-09-26 20:20:17 +0200
-Branch: REL9_5_STABLE [992f8542a] 2018-09-26 20:20:59 +0200
-Branch: REL9_4_STABLE [26b877d28] 2018-09-26 20:33:05 +0200
-Branch: REL9_3_STABLE [14ce78e47] 2018-09-26 20:33:21 +0200
--->
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the server will process
- already-received <literal>NOTIFY</literal>
- and <literal>SIGTERM</literal> interrupts before waiting for client
- input (Jeff Janes, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [87d9bbca1] 2018-09-24 11:30:59 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [bfdd02f88] 2018-09-24 11:30:51 -0400
-Branch: REL_10_STABLE [103511723] 2018-09-24 11:30:51 -0400
-Branch: REL9_6_STABLE [ac863108f] 2018-09-24 11:30:51 -0400
-Branch: REL9_5_STABLE [6ed095edb] 2018-09-24 11:30:51 -0400
-Branch: REL9_4_STABLE [028fc0bac] 2018-09-24 11:30:51 -0400
-Branch: REL9_3_STABLE [7ecdeb5f5] 2018-09-24 11:30:51 -0400
--->
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [07172d5af] 2018-08-13 01:59:45 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [78f70e07e] 2018-08-13 02:03:12 +0100
-Branch: REL_10_STABLE [556140424] 2018-08-13 02:03:54 +0100
--->
- <para>
- Avoid query-lifetime memory leak in <literal>XMLTABLE</literal>
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tomas Vondra <tomas.vondra@postgresql.org>
-Branch: master [fa73b377e] 2018-08-16 16:49:57 +0200
-Branch: REL_11_STABLE Release: REL_11_0 [43ba5ac6a] 2018-08-16 16:55:34 +0200
-Branch: REL_10_STABLE [e00f4b68d] 2018-08-16 16:55:09 +0200
-Branch: REL9_6_STABLE [5257b9bfb] 2018-08-16 16:52:44 +0200
-Branch: REL9_5_STABLE [864ecd716] 2018-08-16 16:51:46 +0200
-Branch: REL9_4_STABLE [ef1ac5b2a] 2018-08-16 16:51:00 +0200
--->
- <para>
- Ensure that <function>ApplyLogicalMappingFile()</function> closes the
- mapping file when done with it (Tomas Vondra)
- </para>
-
- <para>
- Previously, the file descriptor was leaked, eventually resulting in
- failures during logical decoding.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [e9edc1ba0] 2018-10-10 13:53:02 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [88670a436] 2018-10-10 13:53:02 -0700
-Branch: REL_10_STABLE [532e3b5b3] 2018-10-10 13:53:02 -0700
-Branch: REL9_6_STABLE [a88482dd2] 2018-10-10 13:53:02 -0700
-Branch: REL9_5_STABLE [0a0c25594] 2018-10-10 13:53:03 -0700
-Branch: REL9_4_STABLE [c7b96ba29] 2018-10-10 13:53:03 -0700
--->
- <para>
- Fix logical decoding to handle cases where a mapped catalog table is
- repeatedly rewritten, e.g. by <literal>VACUUM FULL</literal>
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent starting the server with <varname>wal_level</varname> set
- to too low a value to support an existing replication slot (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d48da369a] 2018-10-15 14:01:38 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [db9034bf7] 2018-10-15 14:01:38 -0400
-Branch: REL_10_STABLE [9d4212afa] 2018-10-15 14:01:38 -0400
-Branch: REL9_6_STABLE [ca361554c] 2018-10-15 14:01:38 -0400
-Branch: REL9_5_STABLE [10412cef1] 2018-10-15 14:01:38 -0400
-Branch: REL9_4_STABLE [eb01ea2a3] 2018-10-15 14:01:38 -0400
-Branch: REL9_3_STABLE [3a60c8bb1] 2018-10-15 14:01:38 -0400
--->
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [1df21ddb1] 2018-10-14 22:23:21 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [18781cd2a] 2018-10-14 22:23:29 +0900
-Branch: REL_10_STABLE [8384ff424] 2018-10-14 22:23:35 +0900
-Branch: REL9_6_STABLE [010041ddc] 2018-10-14 22:23:43 +0900
-Branch: REL9_5_STABLE [d83dac374] 2018-10-14 22:23:48 +0900
-Branch: REL9_4_STABLE [7c525519d] 2018-10-14 22:23:54 +0900
-Branch: REL9_3_STABLE [0c99e7196] 2018-10-14 22:24:01 +0900
--->
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [ad08006ba] 2018-10-06 19:17:46 -0300
-Branch: REL_11_STABLE Release: REL_11_0 [1a852f7c1] 2018-10-06 19:17:46 -0300
-Branch: REL_10_STABLE [101b21ead] 2018-10-06 19:17:46 -0300
-Branch: REL9_6_STABLE [b2f266f58] 2018-10-06 19:17:46 -0300
-Branch: REL9_5_STABLE [a2a5159ed] 2018-10-06 19:17:46 -0300
--->
- <para>
- Fix event triggers to handle nested <command>ALTER TABLE</command>
- commands (Michael Paquier, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [07ee62ce9] 2018-10-06 12:00:09 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [6bf278df8] 2018-10-06 12:00:09 -0400
-Branch: REL_10_STABLE [58454d0bb] 2018-10-06 12:00:10 -0400
-Branch: REL9_6_STABLE [bdc2e7a19] 2018-10-06 12:00:10 -0400
-Branch: REL9_5_STABLE [3c9dd963c] 2018-10-06 12:00:10 -0400
--->
- <para>
- Propagate parent process's transaction and statement start timestamps
- to parallel workers (Konstantin Knizhnik)
- </para>
-
- <para>
- This prevents misbehavior of functions such
- as <function>transaction_timestamp()</function> when executed in a
- worker.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [9bc9f72b2] 2018-10-03 09:15:03 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [ca5ca25d0] 2018-10-03 09:14:09 +0530
-Branch: REL_10_STABLE [9718c93f5] 2018-10-03 09:38:07 +0530
-Branch: REL9_6_STABLE [dca44d07c] 2018-10-03 09:54:01 +0530
--->
- <para>
- Fix transfer of expanded datums to parallel workers so that alignment
- is preserved, preventing crashes on alignment-picky platforms
- (Tom Lane, Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [78ea8b5da] 2018-09-28 11:54:38 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [88926fd48] 2018-09-28 11:55:43 +0900
-Branch: REL_10_STABLE [05b9c58da] 2018-09-28 11:55:55 +0900
-Branch: REL9_6_STABLE [f4fa92f26] 2018-09-28 11:56:04 +0900
-Branch: REL9_5_STABLE [ed9d6d621] 2018-09-28 11:56:11 +0900
--->
- <para>
- Fix WAL file recycling logic to work correctly on standby servers
- (Michael Paquier)
- </para>
-
- <para>
- Depending on the setting of <varname>archive_mode</varname>, a standby
- might fail to remove some WAL files that could be removed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [8d28bf500] 2018-09-26 10:25:54 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [180feb8c7] 2018-09-26 10:29:20 +0900
-Branch: REL_10_STABLE [cb822ffb7] 2018-09-26 10:29:28 +0900
-Branch: REL9_6_STABLE [e513a3d85] 2018-09-26 10:29:49 +0900
-Branch: REL9_5_STABLE [69a568636] 2018-09-26 10:30:38 +0900
--->
- <para>
- Fix handling of commit-timestamp tracking during recovery
- (Masahiko Sawada, Michael Paquier)
- </para>
-
- <para>
- If commit timestamp tracking has been turned on or off, recovery might
- fail due to trying to fetch the commit timestamp for a transaction
- that did not record it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [d18f6674b] 2018-09-23 22:56:39 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [89f2b64da] 2018-09-23 22:56:42 -0700
-Branch: REL_10_STABLE [4232cff11] 2018-09-23 22:56:42 -0700
-Branch: REL9_6_STABLE [329cacb90] 2018-09-23 22:56:42 -0700
-Branch: REL9_5_STABLE [d68d5adfd] 2018-09-23 22:56:43 -0700
-Branch: REL9_4_STABLE [401228183] 2018-09-23 22:56:57 -0700
-Branch: REL9_3_STABLE [402da7054] 2018-09-23 22:57:43 -0700
--->
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master [38763d677] 2018-09-20 15:52:39 +1200
-Branch: REL_11_STABLE Release: REL_11_0 [8ffc3be10] 2018-09-20 15:59:34 +1200
-Branch: REL_10_STABLE [ba20d3925] 2018-09-20 16:03:51 +1200
--->
- <para>
- Fix possible shared-memory corruption in DSA logic (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master [422952ee7] 2018-09-18 22:56:36 +1200
-Branch: REL_11_STABLE Release: REL_11_0 [63efab4ca] 2018-09-18 23:03:54 +1200
-Branch: REL_10_STABLE [7167fa876] 2018-09-18 23:08:56 +1200
-Branch: REL9_6_STABLE [f547035a0] 2018-09-18 23:13:27 +1200
-Branch: REL9_5_STABLE [fb389498b] 2018-09-18 23:19:22 +1200
-Branch: REL9_4_STABLE [c0c5668c6] 2018-09-18 23:49:21 +1200
--->
- <para>
- Allow DSM allocation to be interrupted (Chris Travers)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master [6c3c9d418] 2018-09-20 14:21:18 +1200
-Branch: REL_11_STABLE Release: REL_11_0 [9d178fb92] 2018-09-20 14:21:32 +1200
-Branch: REL_10_STABLE [98a4e814e] 2018-09-20 14:21:44 +1200
-Branch: REL9_6_STABLE [de4fe83c7] 2018-09-20 14:21:57 +1200
--->
- <para>
- Avoid failure in a parallel worker when loading an extension that
- tries to access system caches within its init function (Thomas Munro)
- </para>
-
- <para>
- We don't consider that to be good extension coding practice, but it
- mostly worked before parallel query, so continue to support it for
- now.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [bc153c941] 2018-09-13 15:32:50 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [ff4220ead] 2018-09-13 15:38:15 +0530
-Branch: REL_10_STABLE [ede7d8192] 2018-09-13 16:01:57 +0530
-Branch: REL9_6_STABLE [fd4f2af77] 2018-09-13 16:08:55 +0530
-Branch: REL9_5_STABLE [47a589c1f] 2018-09-13 16:10:59 +0530
--->
- <para>
- Properly handle turning <varname>full_page_writes</varname> on
- dynamically (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [500d49794] 2018-09-11 18:14:19 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [e331d6712] 2018-09-11 19:19:45 +0100
-Branch: REL_10_STABLE [c02b56869] 2018-09-11 19:19:50 +0100
-Branch: REL9_6_STABLE [84a3a1e55] 2018-09-11 19:19:55 +0100
--->
- <para>
- Fix possible crash due to double <function>free()</function> during
- SP-GiST rescan (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e3d77ea6b] 2018-09-09 15:17:01 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [6395ac14d] 2018-09-09 15:17:02 -0400
-Branch: REL_10_STABLE [d6ff5322c] 2018-09-09 15:17:03 -0400
-Branch: master [4fa3741d1] 2018-09-10 22:22:12 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [e3aafe200] 2018-09-10 22:22:12 -0400
-Branch: REL_10_STABLE [355fd62e8] 2018-09-10 22:22:12 -0400
--->
- <para>
- Prevent mis-linking of src/port and src/common functions on ELF-based
- BSD platforms, as well as HP-UX and Solaris (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- Shared libraries loaded into a backend's address space could use the
- backend's versions of these functions, rather than their own copies as
- intended. Since the behavior of the two sets of functions isn't
- quite the same, this led to failures.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-Branch: master [5f08accda] 2018-09-09 21:19:29 +0300
-Branch: REL_11_STABLE Release: REL_11_0 [cc909ddbf] 2018-09-09 21:29:00 +0300
-Branch: REL_10_STABLE [bccfd3817] 2018-09-09 21:29:07 +0300
-Branch: REL9_6_STABLE [f9e66f2fb] 2018-09-09 21:42:50 +0300
-Branch: REL9_5_STABLE [e950c6c9d] 2018-09-09 21:44:58 +0300
-Branch: REL9_4_STABLE [35ea98f79] 2018-09-09 21:45:55 +0300
--->
- <para>
- Avoid possible buffer overrun when replaying GIN page recompression
- from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [ac27c74de] 2018-09-06 09:27:19 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [834bce0a5] 2018-09-06 10:07:18 +0530
-Branch: REL_10_STABLE [916afca45] 2018-09-06 10:19:51 +0530
--->
- <para>
- Avoid overrun of a hash index's metapage
- when <literal>BLCKSZ</literal> is smaller than default (Dilip Kumar)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [7c9e19ca9] 2018-09-04 08:35:42 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [16e7bcfac] 2018-09-04 08:33:33 +0530
-Branch: REL_10_STABLE [3b7a96a61] 2018-09-04 08:43:37 +0530
--->
- <para>
- Fix missed page checksum updates in hash indexes (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [caa0c6ceb] 2018-09-02 12:40:30 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [680f89e56] 2018-09-02 12:40:38 -0700
-Branch: REL_10_STABLE [504f059f5] 2018-09-02 12:40:45 -0700
-Branch: REL9_6_STABLE [d8030c684] 2018-09-02 12:40:52 -0700
-Branch: REL9_5_STABLE [02b1b01d8] 2018-09-02 12:40:58 -0700
-Branch: REL9_4_STABLE [113020627] 2018-09-02 12:41:06 -0700
--->
- <para>
- Fix missed fsync of a replication slot's directory (Konstantin
- Knizhnik, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [ab0ed6153] 2018-08-31 22:59:58 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [ee0ab2754] 2018-08-31 23:00:01 -0700
-Branch: REL_10_STABLE [1664c8b30] 2018-08-31 23:00:01 -0700
-Branch: REL9_6_STABLE [081e4104a] 2018-08-31 23:00:02 -0700
-Branch: REL9_5_STABLE [e3eca937c] 2018-08-31 23:00:02 -0700
-Branch: REL9_4_STABLE [20cd88857] 2018-08-31 23:00:03 -0700
--->
- <para>
- Fix unexpected timeouts when
- using <varname>wal_sender_timeout</varname> on a slow server
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [c186ba135] 2018-08-31 11:03:40 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [c34f8078a] 2018-08-31 11:03:55 -0700
-Branch: REL_10_STABLE [2c8cff5dd] 2018-08-31 11:04:07 -0700
-Branch: REL9_6_STABLE [4a9a5bb3f] 2018-08-31 11:04:33 -0700
-Branch: REL9_5_STABLE [f3520ff6f] 2018-08-31 11:04:46 -0700
-Branch: REL9_4_STABLE [d9638a326] 2018-08-31 11:05:59 -0700
-Branch: REL9_3_STABLE [65f39408e] 2018-08-31 11:06:09 -0700
--->
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [55875b6d2] 2018-08-29 17:10:02 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [35622f7d3] 2018-08-29 17:10:13 -0700
-Branch: REL_10_STABLE [89f562ae1] 2018-08-29 17:11:19 -0700
-Branch: REL9_6_STABLE [f6feb8e38] 2018-08-29 17:11:27 -0700
-Branch: REL9_5_STABLE [32f2792eb] 2018-08-29 17:11:40 -0700
--->
- <para>
- Ensure background workers are stopped properly when the postmaster
- receives a fast-shutdown request before completing database startup
- (Alexander Kukushkin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [ab7dbd681] 2018-08-15 18:09:29 -0300
-Branch: REL_11_STABLE Release: REL_11_0 [6872c2be6] 2018-08-15 18:09:29 -0300
-Branch: REL_10_STABLE [255e2fbe8] 2018-08-15 18:09:29 -0300
-Branch: REL9_6_STABLE [3cbd190e1] 2018-08-15 18:09:29 -0300
--->
- <para>
- Update the free space map during WAL replay of page all-visible/frozen
- flag changes (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously we were not careful about this, reasoning that the FSM is
- not critical data anyway. However, if it's sufficiently out of date,
- that can result in significant performance degradation after a standby
- has been promoted to primary. The FSM will eventually be healed by
- updates, but we'd like it to be good sooner, so work harder at
- maintaining it during WAL replay.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [2cd0acfda] 2018-08-13 08:22:18 +0530
-Branch: REL_11_STABLE Release: REL_11_0 [c054afd0a] 2018-08-13 08:33:55 +0530
-Branch: REL_10_STABLE [ba10eaef5] 2018-08-13 08:43:33 +0530
-Branch: REL9_6_STABLE [69de17186] 2018-08-13 08:56:37 +0530
--->
- <para>
- Avoid premature release of parallel-query resources when query end or
- tuple count limit is reached (Amit Kapila)
- </para>
-
- <para>
- It's only okay to shut down the executor at this point if the caller
- cannot demand backwards scan afterwards.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [8e19a8264] 2018-08-08 19:10:32 +0300
-Branch: REL_11_STABLE Release: REL_11_0 [79f17d45e] 2018-08-08 19:10:35 +0300
-Branch: REL_10_STABLE [2332020d6] 2018-08-08 19:09:30 +0300
-Branch: REL9_6_STABLE [8e4e783ee] 2018-08-08 19:09:33 +0300
-Branch: REL9_5_STABLE [f318f7fdf] 2018-08-08 19:09:35 +0300
-Branch: REL9_4_STABLE [d5a9b706e] 2018-08-08 19:10:38 +0300
-Branch: REL9_3_STABLE [58ce9c785] 2018-08-08 19:10:07 +0300
--->
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9b7c56d6c] 2018-08-07 16:32:50 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [ea1b65971] 2018-08-07 16:32:55 -0400
-Branch: REL_10_STABLE [9446d7157] 2018-08-07 16:33:00 -0400
-Branch: REL9_6_STABLE [f3ed5364e] 2018-08-07 16:33:03 -0400
-Branch: REL9_5_STABLE [74c877e8d] 2018-08-07 16:33:08 -0400
-Branch: REL9_4_STABLE [33c5d3bf8] 2018-08-07 16:33:12 -0400
-Branch: REL9_3_STABLE [f5973ac76] 2018-08-07 16:33:17 -0400
--->
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bff84a547] 2018-08-26 14:21:55 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [f8fc5f5f5] 2018-08-26 14:21:55 -0400
-Branch: REL_10_STABLE [6fbbe3353] 2018-08-26 14:21:55 -0400
-Branch: REL9_6_STABLE [93ca07fd8] 2018-08-26 14:21:55 -0400
-Branch: REL9_5_STABLE [8895daf1b] 2018-08-26 14:21:55 -0400
-Branch: REL9_4_STABLE [48bc1a525] 2018-08-26 14:21:55 -0400
-Branch: REL9_3_STABLE [23f21e070] 2018-08-26 14:21:55 -0400
--->
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5ca007741] 2018-08-23 16:39:36 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [c781a066e] 2018-08-23 16:39:37 -0400
-Branch: REL_10_STABLE [6953daf08] 2018-08-23 16:39:20 -0400
--->
- <para>
- When <application>libpq</application> is given multiple target host
- names, do the DNS lookups one at a time, not all at once (Tom Lane)
- </para>
-
- <para>
- This prevents unnecessary failures or slow connections when a
- connection is successfully made to one of the earlier servers in the
- list.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1e6e98f76] 2018-08-13 13:07:52 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [998c73664] 2018-08-13 13:07:52 -0400
-Branch: REL_10_STABLE [e0db288ab] 2018-08-13 13:07:53 -0400
--->
- <para>
- Fix <application>libpq</application>'s handling of connection timeouts
- so that they are properly applied per host name or IP address (Tom Lane)
- </para>
-
- <para>
- Previously, some code paths failed to restart the timer when switching
- to a new target host, possibly resulting in premature timeout.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>, as well as documentation
- examples, to call <function>PQconsumeInput()</function> before
- each <function>PQnotifies()</function> call (Tom Lane)
- </para>
-
- <para>
- This fixes cases in which <application>psql</application> would not
- report receipt of a <literal>NOTIFY</literal> message until after the
- next command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [08c9917e2] 2018-09-25 11:03:56 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [1f5039411] 2018-09-25 11:05:13 +0900
-Branch: REL_10_STABLE [55a586ba9] 2018-09-25 11:05:29 +0900
--->
- <para>
- Fix <application>pg_dump</application>'s
- <option>--no-publications</option> option to also ignore publication
- tables (Gilles Darold)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [b965f2617] 2018-08-22 14:21:49 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [4ed59e02f] 2018-08-22 14:22:39 +0900
-Branch: REL_10_STABLE [cb282eab1] 2018-08-22 14:23:03 +0900
--->
- <para>
- In <application>pg_dump</application>, exclude identity sequences when
- their parent table is excluded from the dump (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5b5ed4756] 2018-08-07 13:13:42 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [f73643006] 2018-08-07 13:13:42 -0400
-Branch: REL_10_STABLE [dc391dacf] 2018-08-07 13:13:42 -0400
-Branch: REL9_6_STABLE [6b6327d93] 2018-08-07 13:13:42 -0400
-Branch: REL9_5_STABLE [f3f6558b5] 2018-08-07 13:13:42 -0400
-Branch: REL9_4_STABLE [abd04e0dd] 2018-08-07 13:13:42 -0400
-Branch: REL9_3_STABLE [5abdb33ad] 2018-08-07 13:13:42 -0400
--->
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6771c932c] 2018-08-17 17:12:33 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [d73093c4f] 2018-08-17 17:12:21 -0400
-Branch: REL_10_STABLE [05aeeb5e2] 2018-08-17 17:12:21 -0400
-Branch: REL9_6_STABLE [72329ba03] 2018-08-17 17:12:21 -0400
-Branch: REL9_5_STABLE [3998dfe1b] 2018-08-17 17:12:21 -0400
-Branch: REL9_4_STABLE [a4fdcceab] 2018-08-17 17:12:21 -0400
-Branch: REL9_3_STABLE [b2171d472] 2018-08-17 17:12:21 -0400
--->
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [03838b804] 2018-08-07 15:43:48 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [187331fef] 2018-08-07 15:43:48 -0400
-Branch: REL_10_STABLE [c9dacdb1c] 2018-08-07 15:43:49 -0400
-Branch: REL9_6_STABLE [92d5dd36e] 2018-08-07 15:43:49 -0400
-Branch: REL9_5_STABLE [91f6ec299] 2018-08-07 15:43:49 -0400
-Branch: REL9_4_STABLE [fb4e0e896] 2018-08-07 15:43:49 -0400
-Branch: REL9_3_STABLE [dfffe651e] 2018-08-07 15:43:49 -0400
--->
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [777e6ddf1] 2018-08-14 17:19:02 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [995133410] 2018-08-14 17:19:02 -0400
-Branch: REL_10_STABLE [efc4b4897] 2018-08-14 17:19:02 -0400
-Branch: REL9_6_STABLE [54db0e5e1] 2018-08-14 17:19:02 -0400
-Branch: REL9_5_STABLE [dcca99627] 2018-08-14 17:19:02 -0400
-Branch: REL9_4_STABLE [a034c6737] 2018-08-14 17:19:02 -0400
-Branch: REL9_3_STABLE [235eab04e] 2018-08-14 17:19:02 -0400
--->
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-Branch: master [f919c165e] 2018-08-31 20:24:48 +0300
-Branch: REL_11_STABLE Release: REL_11_0 [36343e59b] 2018-08-31 20:24:20 +0300
-Branch: REL_10_STABLE [29e07cd22] 2018-08-31 20:23:32 +0300
-Branch: REL9_6_STABLE [5fed7b24a] 2018-08-31 20:22:39 +0300
-Branch: REL9_5_STABLE [b187dae9d] 2018-08-31 20:06:49 +0300
-Branch: REL9_4_STABLE [7cea5e6eb] 2018-08-31 20:10:40 +0300
-Branch: REL9_3_STABLE [9f3ade1a6] 2018-08-31 20:21:30 +0300
--->
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pg_stat_statements</filename>, disallow
- the <literal>pg_read_all_stats</literal> role from
- executing <function>pg_stat_statements_reset()</function>
- (Haribabu Kommi)
- </para>
-
- <para>
- <literal>pg_read_all_stats</literal> is only meant to grant permission
- to read statistics, not to change them, so this grant was incorrect.
- </para>
-
- <para>
- To cause this change to take effect, run <literal>ALTER EXTENSION
- pg_stat_statements UPDATE</literal> in each database
- where <filename>pg_stat_statements</filename> has been installed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [bf2d0462c] 2018-08-28 14:43:51 +0100
-Branch: REL_11_STABLE Release: REL_11_0 [8bc6a301b] 2018-08-28 15:04:19 +0100
-Branch: REL_10_STABLE [64eed263a] 2018-08-28 15:04:24 +0100
-Branch: REL9_6_STABLE [639bdbb96] 2018-08-28 15:04:30 +0100
--->
- <para>
- In <filename>contrib/postgres_fdw</filename>, don't try to ship a
- variable-free <literal>ORDER BY</literal> clause to the remote server
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a5322ca10] 2018-09-06 10:49:45 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [23aad181f] 2018-09-06 10:49:45 -0400
-Branch: REL_10_STABLE [a54f5b187] 2018-09-06 10:49:45 -0400
-Branch: REL9_6_STABLE [594ee1ada] 2018-09-06 10:49:45 -0400
-Branch: REL9_5_STABLE [c79b39fb1] 2018-09-06 10:49:45 -0400
-Branch: REL9_4_STABLE [d4ab39626] 2018-09-06 10:49:45 -0400
-Branch: REL9_3_STABLE [25ff97ba7] 2018-09-06 10:49:45 -0400
--->
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow the regression tests to be run by an Administrator
- account (Andrew Dunstan)
- </para>
-
- <para>
- To do this safely, <application>pg_regress</application> now gives up
- any such privileges at startup.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c87cb5f7a] 2018-10-05 16:01:29 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [67e7d4da7] 2018-10-05 16:01:29 -0400
-Branch: REL_10_STABLE [142cfd3cd] 2018-10-05 16:01:29 -0400
-Branch: REL9_6_STABLE [60cc2414b] 2018-10-05 16:01:30 -0400
-Branch: REL9_5_STABLE [0dc6bf633] 2018-10-05 16:01:30 -0400
-Branch: REL9_4_STABLE [26cc27541] 2018-10-05 16:01:30 -0400
-Branch: REL9_3_STABLE [6e63e0697] 2018-10-05 16:01:30 -0400
--->
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f868a8143] 2018-09-07 18:04:54 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [2569ca0dc] 2018-09-07 18:04:55 -0400
-Branch: REL_10_STABLE [9e6f4fbdd] 2018-09-07 18:04:56 -0400
-Branch: REL9_6_STABLE [395f310b0] 2018-09-07 18:04:58 -0400
-Branch: REL9_5_STABLE [66321ae61] 2018-09-07 18:04:38 -0400
-Branch: REL9_4_STABLE [bf919387e] 2018-09-07 18:04:38 -0400
-Branch: REL9_3_STABLE [95e9f928c] 2018-09-07 18:04:38 -0400
--->
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [361844fe5] 2018-09-07 20:09:57 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [825f10fbd] 2018-09-07 20:09:57 -0400
-Branch: REL_10_STABLE [3985b75dc] 2018-09-07 20:09:57 -0400
-Branch: REL9_6_STABLE [82ebf39fc] 2018-09-07 20:09:57 -0400
-Branch: REL9_5_STABLE [0254aa83b] 2018-09-07 20:09:57 -0400
-Branch: REL9_4_STABLE [d2003339c] 2018-09-07 20:09:57 -0400
-Branch: REL9_3_STABLE [92f0c5083] 2018-09-07 20:09:57 -0400
--->
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [44cac9346] 2018-09-01 15:27:17 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [f5c93cf92] 2018-09-01 15:27:13 -0400
-Branch: REL_10_STABLE [10b9af3eb] 2018-09-01 15:27:13 -0400
-Branch: REL9_6_STABLE [826980424] 2018-09-01 15:27:13 -0400
-Branch: REL9_5_STABLE [03ffe5553] 2018-09-01 15:27:13 -0400
-Branch: REL9_4_STABLE [083d9ced1] 2018-09-01 15:27:13 -0400
-Branch: REL9_3_STABLE [5af055ed7] 2018-09-01 15:27:14 -0400
--->
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [805889d7d] 2018-08-15 13:21:37 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [36147ec9f] 2018-08-15 17:25:49 -0400
-Branch: REL_10_STABLE [1811900b9] 2018-08-15 17:25:50 -0400
-Branch: REL9_6_STABLE [c2a2e331d] 2018-08-15 17:25:52 -0400
-Branch: REL9_5_STABLE [8e9f229d2] 2018-08-15 17:25:23 -0400
-Branch: REL9_4_STABLE [27c4b0899] 2018-08-15 17:25:24 -0400
-Branch: REL9_3_STABLE [a57a6faf6] 2018-08-15 17:25:24 -0400
--->
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [bd1463e34] 2018-09-20 17:39:40 -0700
-Branch: REL_11_STABLE Release: REL_11_0 [84f14fb78] 2018-09-20 17:48:34 -0700
-Branch: REL_10_STABLE [1b8f09dbd] 2018-09-20 18:10:32 -0700
-Branch: REL9_6_STABLE [e553997e3] 2018-09-20 18:10:52 -0700
-Branch: REL9_5_STABLE [dbbc98a9e] 2018-09-20 18:11:04 -0700
-Branch: REL9_4_STABLE [29196e13c] 2018-09-20 18:11:10 -0700
-Branch: REL9_3_STABLE [978515df2] 2018-09-20 18:11:49 -0700
--->
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [751f532b9] 2018-09-26 18:23:13 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [7871a3625] 2018-09-30 16:24:56 -0400
-Branch: REL_10_STABLE [0aa1e0ef1] 2018-09-30 16:24:56 -0400
-Branch: REL9_6_STABLE [2855421ec] 2018-09-30 16:24:56 -0400
-Branch: REL9_5_STABLE [8b36dc588] 2018-09-30 16:24:56 -0400
-Branch: REL9_4_STABLE [e5baf8c27] 2018-09-30 16:24:56 -0400
-Branch: REL9_3_STABLE [08aad3c81] 2018-09-30 16:24:56 -0400
--->
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10-5">
- <title>Release 10.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.4.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.5</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 10.4,
- see <xref linkend="release-10-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d1c6a14ba] 2018-08-06 10:53:35 -0400
-Branch: REL_11_STABLE [f6f735f78] 2018-08-06 10:53:35 -0400
-Branch: REL_10_STABLE [ab5400469] 2018-08-06 10:53:35 -0400
-Branch: REL9_6_STABLE [a8094d0fe] 2018-08-06 10:53:35 -0400
-Branch: REL9_5_STABLE [7aabfd1d8] 2018-08-06 10:53:35 -0400
-Branch: REL9_4_STABLE [6de9766b8] 2018-08-06 10:53:35 -0400
-Branch: REL9_3_STABLE [243de06be] 2018-08-06 10:53:35 -0400
--->
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b8a1247a3] 2018-08-04 19:38:58 -0400
-Branch: REL_11_STABLE [e7154b6ac] 2018-08-04 19:38:58 -0400
-Branch: REL_10_STABLE [f6a124d01] 2018-08-04 19:38:58 -0400
-Branch: REL9_6_STABLE [b484bffe7] 2018-08-04 19:38:58 -0400
-Branch: REL9_5_STABLE [5ad143cda] 2018-08-04 19:38:59 -0400
--->
- <para>
- Fix <literal>INSERT ... ON CONFLICT UPDATE</literal> through a view
- that isn't just <literal>SELECT * FROM ...</literal>
- (Dean Rasheed, Amit Langote)
- </para>
-
- <para>
- Erroneous expansion of an updatable view could lead to crashes
- or <quote>attribute ... has the wrong type</quote> errors, if the
- view's <literal>SELECT</literal> list doesn't match one-to-one with
- the underlying table's columns.
- Furthermore, this bug could be leveraged to allow updates of columns
- that an attacking user lacks <literal>UPDATE</literal> privilege for,
- if that user has <literal>INSERT</literal> and <literal>UPDATE</literal>
- privileges for some other column(s) of the table.
- Any user could also use it for disclosure of server memory.
- (CVE-2018-10925)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master Release: REL_11_BR [a54e1f158] 2018-06-12 11:13:21 -0700
-Branch: REL_10_STABLE [2ce64caaf] 2018-06-12 11:13:21 -0700
-Branch: REL9_6_STABLE [6a46aba1c] 2018-06-12 11:13:21 -0700
-Branch: REL9_5_STABLE [14b3ec6f3] 2018-06-12 11:13:21 -0700
-Branch: REL9_4_STABLE [817f9f9a8] 2018-06-12 11:13:22 -0700
-Branch: REL9_3_STABLE [9b9b622b2] 2018-06-12 11:13:22 -0700
--->
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [3c64dcb1e] 2018-07-05 10:46:18 +0900
-Branch: REL_11_STABLE [9a1bd8271] 2018-07-05 10:46:43 +0900
-Branch: REL_10_STABLE [6716f2f96] 2018-07-05 10:47:01 +0900
-Branch: REL9_6_STABLE [8d68ee6f3] 2018-07-05 10:47:19 +0900
-Branch: REL9_5_STABLE [23eef5cd7] 2018-07-05 10:47:32 +0900
-Branch: REL9_4_STABLE [f352f43d3] 2018-07-05 10:47:50 +0900
-Branch: REL9_3_STABLE [56535dcdc] 2018-07-05 10:48:03 +0900
--->
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0905fe891] 2018-07-09 19:26:19 -0400
-Branch: REL_11_STABLE [cfcfbd39b] 2018-07-09 19:26:19 -0400
-Branch: REL_10_STABLE [59b2dcbf4] 2018-07-09 19:26:19 -0400
-Branch: REL9_6_STABLE [568995be6] 2018-07-09 19:26:19 -0400
-Branch: REL9_5_STABLE [7ddac4e8f] 2018-07-09 19:26:19 -0400
-Branch: REL9_4_STABLE [d80ec868f] 2018-07-09 19:26:19 -0400
-Branch: REL9_3_STABLE [e8fe3bb23] 2018-07-09 19:26:19 -0400
--->
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master Release: REL_11_BR [70b4f82a4] 2018-06-18 10:43:27 +0900
-Branch: REL_10_STABLE [fb28104a4] 2018-06-18 10:43:42 +0900
-Branch: REL9_6_STABLE [5860b22c4] 2018-06-18 10:43:59 +0900
-Branch: REL9_5_STABLE [e41c79548] 2018-06-18 10:44:10 +0900
--->
- <para>
- During WAL replay, guard against corrupted record lengths exceeding
- 1GB (Michael Paquier)
- </para>
-
- <para>
- Treat such a case as corrupt data. Previously, the code would try to
- allocate space and get a hard error, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [cbc55da55] 2018-07-09 10:22:34 +0900
-Branch: REL_11_STABLE [5d7c9347e] 2018-07-09 10:25:40 +0900
-Branch: REL_10_STABLE [c030db349] 2018-07-09 10:26:18 +0900
-Branch: REL9_6_STABLE [619dea467] 2018-07-09 10:26:41 +0900
-Branch: REL9_5_STABLE [62203e608] 2018-07-09 10:27:10 +0900
--->
- <para>
- When ending recovery, delay writing the timeline history file as long
- as possible (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids some situations where a failure during recovery cleanup
- (such as a problem with a two-phase state file) led to inconsistent
- timeline state on-disk.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [b41669118] 2018-07-05 02:23:46 +0900
-Branch: REL_11_STABLE [9e53171b1] 2018-07-05 02:25:45 +0900
-Branch: REL_10_STABLE [8463be060] 2018-07-05 02:26:22 +0900
-Branch: REL9_6_STABLE [7da22d866] 2018-07-05 02:27:05 +0900
-Branch: REL9_5_STABLE [614e0729a] 2018-07-05 02:27:46 +0900
-Branch: REL9_4_STABLE [62c2fe644] 2018-07-05 02:46:44 +0900
-Branch: REL9_3_STABLE [7ffe0127e] 2018-07-05 02:52:28 +0900
--->
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master Release: REL_11_BR [a40cff895] 2018-06-26 18:45:45 +1200
-Branch: REL_10_STABLE [88554c091] 2018-06-26 17:17:27 +1200
-Branch: REL9_6_STABLE [35750a38b] 2018-06-26 18:44:31 +1200
-Branch: REL9_5_STABLE [7bcda60d4] 2018-06-26 17:56:20 +1200
-Branch: REL9_4_STABLE [c4ccbcc1a] 2018-06-26 18:23:36 +1200
-Branch: REL9_3_STABLE [12f7d9199] 2018-06-26 18:23:17 +1200
--->
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [9a7b7adc1] 2018-07-12 10:19:35 +0900
-Branch: REL_11_STABLE [0414ac6a1] 2018-07-12 10:19:51 +0900
-Branch: REL_10_STABLE [11abea37d] 2018-07-12 10:20:08 +0900
-Branch: REL9_6_STABLE [d5eb1fe0d] 2018-07-12 10:20:14 +0900
-Branch: REL9_5_STABLE [19648375c] 2018-07-12 10:20:21 +0900
-Branch: REL9_4_STABLE [98e2c298c] 2018-07-12 10:20:27 +0900
--->
- <para>
- Make logical WAL senders report streaming state correctly (Simon
- Riggs, Sawada Masahiko)
- </para>
-
- <para>
- The code previously mis-detected whether or not it had caught up with
- the upstream server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [4f10e7ea7] 2018-07-30 16:30:07 -0400
-Branch: REL_11_STABLE [5dbd0beb8] 2018-07-30 16:30:07 -0400
-Branch: REL_10_STABLE [2c4d0f32e] 2018-07-30 16:30:07 -0400
--->
- <para>
- Ensure that a snapshot is provided when executing data type input
- functions in logical replication subscribers (Minh-Quan Tran,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This omission led to failures in some cases, such as domains with
- constraints using SQL-language functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL_11_BR [f49a80c48] 2018-06-26 16:48:10 -0400
-Branch: REL_10_STABLE [b767b3f2e] 2018-06-26 16:38:34 -0400
-Branch: REL9_6_STABLE [da10d6a8a] 2018-06-26 16:38:34 -0400
-Branch: REL9_5_STABLE [4cb6f7837] 2018-06-26 16:38:34 -0400
-Branch: REL9_4_STABLE [962313558] 2018-06-26 16:38:34 -0400
--->
- <para>
- Fix bugs in snapshot handling during logical decoding, allowing wrong
- decoding results in rare cases (Arseny Sher, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [32df1c9af] 2018-07-16 17:33:22 -0400
-Branch: REL_11_STABLE [9ec9f8f68] 2018-07-16 17:33:35 -0400
-Branch: REL_10_STABLE [4beb25c63] 2018-07-16 17:55:13 -0400
--->
- <para>
- Add subtransaction handling in logical-replication table
- synchronization workers (Amit Khandekar, Robert Haas)
- </para>
-
- <para>
- Previously, table synchronization could misbehave if any
- subtransactions were aborted after modifying a table being
- synchronized.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Geoghegan <pg@bowt.ie>
-Branch: master [b3f919da0] 2018-08-03 15:11:31 -0700
-Branch: REL_11_STABLE [b9612e5cf] 2018-08-03 14:45:02 -0700
-Branch: REL_10_STABLE [c83408aa7] 2018-08-03 14:44:56 -0700
-Branch: REL9_6_STABLE [0a60a291c] 2018-08-03 14:44:44 -0700
-Branch: REL9_5_STABLE [aca225741] 2018-08-03 14:44:38 -0700
-Branch: REL9_4_STABLE [250528cec] 2018-08-03 14:44:33 -0700
-Branch: REL9_3_STABLE [0229e087d] 2018-08-03 14:44:26 -0700
--->
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alexander Korotkov <akorotkov@postgresql.org>
-Branch: master [309765fa1] 2018-07-19 21:04:17 +0300
-Branch: REL_11_STABLE [608793266] 2018-07-19 23:26:15 +0300
-Branch: REL_10_STABLE [0d26812a4] 2018-07-19 21:12:43 +0300
-Branch: REL9_6_STABLE [44b550e0d] 2018-07-19 21:19:19 +0300
-Branch: REL9_5_STABLE [3c09b032a] 2018-07-19 21:22:07 +0300
-Branch: REL9_4_STABLE [9c6a676c4] 2018-07-19 21:24:53 +0300
--->
- <para>
- Fix mishandling of empty uncompressed posting list pages in GIN
- indexes (Sivasubramanian Ramasubramanian, Alexander Korotkov)
- </para>
-
- <para>
- This could result in an assertion failure after pg_upgrade of a
- pre-9.4 GIN index (9.4 and later will not create such pages).
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master [2d3067595] 2018-07-25 11:00:29 +1200
-Branch: REL_11_STABLE [f2db5f3bb] 2018-07-25 11:00:42 +1200
-Branch: REL_10_STABLE [46201d603] 2018-07-25 11:00:53 +1200
--->
- <para>
- Pad arrays of unnamed POSIX semaphores to reduce cache line sharing
- (Thomas Munro)
- </para>
-
- <para>
- This reduces contention on many-CPU systems, fixing a performance
- regression (compared to previous releases) on Linux and FreeBSD.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [8ce29bb4f] 2018-07-27 10:53:00 +0530
-Branch: REL_11_STABLE [09a5be587] 2018-07-27 10:56:07 +0530
-Branch: REL_10_STABLE [ff8ce0b79] 2018-07-27 11:05:06 +0530
--->
- <para>
- Ensure that a process doing a parallel index scan will respond to
- signals (Amit Kapila)
- </para>
-
- <para>
- Previously, parallel workers could get stuck waiting for a lock on an
- index page, and not notice requests to abort the query.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [3a01f68e3] 2018-07-04 14:58:25 -0700
-Branch: REL_11_STABLE [0c69db762] 2018-07-04 15:08:32 -0700
-Branch: REL_10_STABLE [009580989] 2018-07-04 14:58:39 -0700
-Branch: REL9_6_STABLE [2adadf018] 2018-07-04 14:58:26 -0700
-Branch: REL9_5_STABLE [f411108c9] 2018-07-04 14:58:26 -0700
-Branch: REL9_4_STABLE [8c8c9f37c] 2018-07-04 14:58:26 -0700
--->
- <para>
- Ensure that <command>VACUUM</command> will respond to signals
- within btree page deletion loops (Andres Freund)
- </para>
-
- <para>
- Corrupted btree indexes could result in an infinite loop here, and
- that previously wasn't interruptible without forcing a crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1007b0a12] 2018-07-14 11:59:12 -0400
-Branch: REL_11_STABLE [704e39319] 2018-07-14 11:59:12 -0400
-Branch: REL_10_STABLE [0bb28ca36] 2018-07-14 11:59:12 -0400
--->
- <para>
- Fix hash-join costing mistake introduced with inner_unique
- optimization (David Rowley)
- </para>
-
- <para>
- This could lead to bad plan choices in situations where that
- optimization was applicable.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [a11b3bd37] 2018-05-16 13:46:23 -0400
-Branch: REL_10_STABLE [aada0a764] 2018-05-16 13:46:09 -0400
-Branch: REL9_6_STABLE [ace3c7cc0] 2018-05-16 13:46:09 -0400
-Branch: REL9_5_STABLE [6d7629094] 2018-05-16 13:46:09 -0400
-Branch: REL9_4_STABLE [62e0020ad] 2018-05-16 13:46:09 -0400
-Branch: REL9_3_STABLE [bc711befd] 2018-05-16 13:46:09 -0400
--->
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [07e5a2135] 2018-06-21 10:58:42 -0400
-Branch: REL_10_STABLE [a4c95b0b8] 2018-06-21 10:58:42 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [57cd2b6e6] 2018-07-11 15:25:28 -0400
-Branch: REL_11_STABLE [5b762d96e] 2018-07-11 15:25:28 -0400
-Branch: REL_10_STABLE [c35032027] 2018-07-11 15:25:29 -0400
-Branch: REL9_6_STABLE [4b8860e2d] 2018-07-11 15:25:29 -0400
--->
- <para>
- Fix planner to avoid <quote>ORDER/GROUP BY expression not found in
- targetlist</quote> errors in some queries with set-returning functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [b6e3a3a49] 2018-07-10 15:19:40 -0400
-Branch: REL_11_STABLE [e7df94f31] 2018-07-10 15:16:27 -0400
-Branch: REL_10_STABLE [7c644b7d3] 2018-07-10 15:07:28 -0400
--->
- <para>
- Fix handling of partition keys whose data type uses a polymorphic
- btree operator class, such as arrays (Amit Langote, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master Release: REL_11_BR [1da162e1f] 2018-05-21 17:27:08 +0100
-Branch: REL_10_STABLE [cf516dc9d] 2018-05-21 17:31:01 +0100
-Branch: REL9_6_STABLE [7a0aa8d12] 2018-05-21 17:32:18 +0100
-Branch: REL9_5_STABLE [3b0fb2529] 2018-05-21 17:32:24 +0100
-Branch: REL9_4_STABLE [769e6fcd1] 2018-05-21 17:32:29 +0100
-Branch: REL9_3_STABLE [89b09db01] 2018-05-21 17:32:34 +0100
--->
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [240971675] 2018-07-19 15:41:46 -0400
-Branch: REL_11_STABLE [b1af4bcc4] 2018-07-19 15:41:46 -0400
-Branch: REL_10_STABLE [2131d4501] 2018-07-19 15:41:46 -0400
--->
- <para>
- Remove undocumented restriction against duplicate partition key
- columns (Yugo Nagata)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master Release: REL_11_BR [1c7c317cd] 2018-06-20 10:42:25 +0900
-Branch: REL_10_STABLE [5862174ec] 2018-06-20 10:48:28 +0900
--->
- <para>
- Disallow temporary tables from being partitions of non-temporary
- tables (Amit Langote, Michael Paquier)
- </para>
-
- <para>
- While previously allowed, this case didn't work reliably.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [85c9d3475] 2018-08-03 11:02:02 +0530
-Branch: REL_11_STABLE [dac7fe13b] 2018-08-03 11:16:25 +0530
-Branch: REL_10_STABLE [b805b63ac] 2018-08-03 11:27:11 +0530
-Branch: REL9_6_STABLE [19df1702f] 2018-08-03 11:43:01 +0530
-Author: Amit Kapila <akapila@postgresql.org>
-Branch: master [ccc84a956] 2018-08-03 09:11:37 +0530
-Branch: REL_11_STABLE [ef305bd59] 2018-08-03 09:29:45 +0530
-Branch: REL_10_STABLE [3f02b5150] 2018-08-03 09:50:24 +0530
-Branch: REL9_6_STABLE [7124c93fb] 2018-08-03 10:07:56 +0530
--->
- <para>
- Fix <command>EXPLAIN</command>'s accounting for resource usage,
- particularly buffer accesses, in parallel workers
- (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL_11_BR [0c8910a0c] 2018-06-08 16:19:05 -0400
-Branch: REL_10_STABLE [a25c207b2] 2018-06-08 16:27:56 -0400
--->
- <para>
- Fix <command>SHOW ALL</command> to show all settings to roles that are
- members of <literal>pg_read_all_settings</literal>, and also allow
- such roles to see source filename and line number in
- the <structname>pg_settings</structname> view (Laurenz Albe,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [1a31baf61] 2018-05-24 12:38:55 -0400
-Branch: REL_10_STABLE [e8cb8fdfd] 2018-05-24 12:38:55 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [056f52d9c] 2018-05-24 12:07:41 -0400
-Branch: REL_10_STABLE [eb1aa1b46] 2018-05-24 12:07:41 -0400
-Branch: REL9_6_STABLE [3d3165210] 2018-05-24 12:07:41 -0400
-Branch: REL9_5_STABLE [ad73c07b4] 2018-05-24 12:07:41 -0400
-Branch: REL9_4_STABLE [8f2143bc8] 2018-05-24 12:07:41 -0400
-Branch: REL9_3_STABLE [cbb37b2e1] 2018-05-24 12:07:42 -0400
--->
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function>
- and <function>getObjectIdentity</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, text search objects, publication
- relations, and extended statistics objects were not schema-qualified
- when they should be.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [05ca21b87] 2018-05-15 15:06:53 -0400
-Branch: REL_10_STABLE [17083ab7e] 2018-05-15 15:06:53 -0400
-Branch: REL9_6_STABLE [f92491186] 2018-05-15 15:06:53 -0400
--->
- <para>
- Fix <command>CREATE AGGREGATE</command> type checking so that
- parallelism support functions can be attached to variadic aggregates
- (Alexey Bashtanov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [ecac23511] 2018-05-22 13:32:52 -0400
-Branch: REL_10_STABLE [c92d1461e] 2018-05-22 13:32:52 -0400
-Branch: REL9_6_STABLE [588edd83e] 2018-05-22 13:32:52 -0400
-Branch: REL9_5_STABLE [7df277827] 2018-05-22 13:32:52 -0400
-Branch: REL9_4_STABLE [d25714d0a] 2018-05-22 13:32:52 -0400
-Branch: REL9_3_STABLE [d78028350] 2018-05-22 13:32:52 -0400
--->
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [0ce5cf2ef] 2018-07-06 16:38:30 -0400
-Branch: REL_11_STABLE [ef6464595] 2018-07-06 16:38:29 -0400
-Branch: REL_10_STABLE [a1f680d96] 2018-07-06 16:38:29 -0400
--->
- <para>
- Allow replication slots to be dropped in single-user mode
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This use-case was accidentally broken in release 10.0.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [ec4719cd1] 2018-06-21 16:18:39 -0400
-Branch: REL_10_STABLE [b8a1d0302] 2018-06-21 16:18:34 -0400
--->
- <para>
- Fix incorrect results from <function>variance(int4)</function> and
- related aggregates when run in parallel aggregation mode
- (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL_11_BR [b7f0be9a7] 2018-06-20 12:58:12 -0400
-Branch: REL_10_STABLE [e10bc161f] 2018-06-20 12:58:12 -0400
-Branch: REL_10_STABLE [04ab840b8] 2018-06-20 13:02:46 -0400
--->
- <para>
- Process <literal>TEXT</literal> and <literal>CDATA</literal> nodes
- correctly in <function>xmltable()</function> column expressions
- (Markus Winand)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Dean Rasheed <dean.a.rasheed@gmail.com>
-Branch: master [8f6ce7fb0] 2018-07-20 08:55:44 +0100
-Branch: REL_11_STABLE [1f919e663] 2018-07-20 08:57:08 +0100
-Branch: REL_10_STABLE [821200405] 2018-07-20 08:58:37 +0100
--->
- <para>
- Cope with possible failure of <application>OpenSSL</application>'s
- <function>RAND_bytes()</function> function
- (Dean Rasheed, Michael Paquier)
- </para>
-
- <para>
- Under rare circumstances, this oversight could result in <quote>could
- not generate random cancel key</quote> failures that could only be
- resolved by restarting the postmaster.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master Release: REL_11_BR [1944cdc98] 2018-03-27 12:32:18 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL_10_STABLE [62038810b] 2018-08-03 11:30:34 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [24986c955] 2018-08-03 12:12:10 -0400
-Branch: REL_11_STABLE [6efc30167] 2018-08-03 12:12:10 -0400
-Branch: REL_10_STABLE [8d00858ba] 2018-08-03 12:12:10 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c7a8f7867] 2018-08-03 12:20:47 -0400
-Branch: REL_11_STABLE [d8b2beb26] 2018-08-03 12:20:47 -0400
-Branch: REL_10_STABLE [ed5d8196c] 2018-08-03 12:20:47 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e3f99e03e] 2018-08-01 12:30:36 -0400
-Branch: REL_11_STABLE [e9bbfe608] 2018-08-01 12:30:36 -0400
-Branch: REL_10_STABLE [71e3b2890] 2018-08-01 12:30:36 -0400
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [b90d97e08] 2018-07-19 20:24:29 +0300
-Branch: REL_11_STABLE [dc961e582] 2018-07-19 20:24:59 +0300
-Branch: REL_10_STABLE [ff4fb4cc1] 2018-07-19 20:25:05 +0300
--->
- <para>
- Fix <application>libpq</application>'s handling of some cases
- where <literal>hostaddr</literal> is specified
- (Hari Babu, Tom Lane, Robert Haas)
- </para>
-
- <para>
- <function>PQhost()</function> gave misleading or incorrect results
- in some cases. Now, it uniformly returns the host name if specified,
- or the host address if only that is specified, or the default host
- name (typically <literal>/tmp</literal>
- or <literal>localhost</literal>) if both parameters are omitted.
- </para>
-
- <para>
- Also, the wrong value might be compared to the server name when
- verifying an SSL certificate.
- </para>
-
- <para>
- Also, the wrong value might be compared to the host name field in
- <filename>~/.pgpass</filename>. Now, that field is compared to the
- host name if specified, or the host address if only that is specified,
- or <literal>localhost</literal> if both parameters are omitted.
- </para>
-
- <para>
- Also, an incorrect error message was reported for an unparseable
- <literal>hostaddr</literal> value.
- </para>
-
- <para>
- Also, when the <literal>host</literal>, <literal>hostaddr</literal>,
- or <literal>port</literal> parameters contain comma-separated
- lists, <application>libpq</application> is now more careful to treat
- empty elements of a list as selecting the default behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master Release: REL_11_BR [4c8156d87] 2018-06-18 18:33:53 +1200
-Branch: REL_10_STABLE [3566873f2] 2018-06-26 19:49:52 +1200
-Branch: REL9_6_STABLE [b5b973ef0] 2018-06-26 20:54:09 +1200
-Branch: REL9_5_STABLE [3bc19d0d2] 2018-06-26 20:54:40 +1200
-Branch: REL9_4_STABLE [db05d0b90] 2018-06-26 23:21:39 +1200
-Branch: REL9_3_STABLE [edabd8f5a] 2018-06-26 23:37:49 +1200
--->
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [f586f8638] 2018-05-18 12:52:28 -0400
-Branch: REL_10_STABLE [cf39aebf1] 2018-05-18 12:52:28 -0400
-Branch: REL9_6_STABLE [25caeae8d] 2018-05-18 12:52:28 -0400
-Branch: REL9_5_STABLE [11a110595] 2018-05-18 12:52:28 -0400
-Branch: REL9_4_STABLE [385f4acbf] 2018-05-18 12:52:28 -0400
-Branch: REL9_3_STABLE [63d3e787f] 2018-05-18 12:52:28 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [a6228128f] 2018-05-18 22:42:10 -0400
-Branch: REL_10_STABLE [c964c2147] 2018-05-18 22:42:10 -0400
-Branch: REL9_6_STABLE [4ffd7909c] 2018-05-18 22:42:10 -0400
-Branch: REL9_5_STABLE [95fef6e82] 2018-05-18 22:42:10 -0400
-Branch: REL9_4_STABLE [023aa76e1] 2018-05-18 22:42:10 -0400
-Branch: REL9_3_STABLE [e9f475f99] 2018-05-18 22:42:10 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [06f66cff9] 2018-05-19 14:22:18 -0400
-Branch: REL_10_STABLE [a5be529aa] 2018-05-19 14:22:18 -0400
-Branch: REL9_6_STABLE [22d22e4bd] 2018-05-19 14:22:18 -0400
-Branch: REL9_5_STABLE [7329af6b9] 2018-05-19 14:22:18 -0400
-Branch: REL9_4_STABLE [8109f201d] 2018-05-19 14:22:19 -0400
-Branch: REL9_3_STABLE [91f3bcc9e] 2018-05-19 14:22:19 -0400
--->
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [9a8aa25cc] 2018-05-25 14:31:06 -0400
-Branch: REL_10_STABLE [5a225b0d6] 2018-05-25 14:31:06 -0400
-Branch: REL9_6_STABLE [f9ecb6cab] 2018-05-25 14:31:07 -0400
-Branch: REL9_5_STABLE [004293c66] 2018-05-25 14:31:07 -0400
-Branch: REL9_4_STABLE [98d522a1d] 2018-05-25 14:31:07 -0400
-Branch: REL9_3_STABLE [da757bf0f] 2018-05-25 14:31:07 -0400
--->
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [50485b3e2] 2018-05-23 19:04:34 -0400
-Branch: REL_10_STABLE [bed74e9d4] 2018-05-23 19:04:34 -0400
-Branch: REL9_6_STABLE [bbaf75ee0] 2018-05-23 19:04:34 -0400
-Branch: REL9_5_STABLE [085791b8a] 2018-05-23 19:04:34 -0400
-Branch: REL9_4_STABLE [09fb2d5d3] 2018-05-23 19:04:34 -0400
-Branch: REL9_3_STABLE [3466b0202] 2018-05-23 19:04:34 -0400
--->
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f3eb76b39] 2018-07-31 13:00:14 -0400
-Branch: REL_11_STABLE [a56c11d44] 2018-07-31 13:00:08 -0400
-Branch: REL_10_STABLE [31b29b1b3] 2018-07-31 13:00:08 -0400
-Branch: REL9_6_STABLE [6680d19a8] 2018-07-31 13:00:08 -0400
-Branch: REL9_5_STABLE [12f2d814a] 2018-07-31 13:00:08 -0400
-Branch: REL9_4_STABLE [88adf1add] 2018-07-31 13:00:08 -0400
-Branch: REL9_3_STABLE [461e2e433] 2018-07-31 13:00:08 -0400
--->
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c0a552921] 2018-07-30 12:35:49 -0400
-Branch: REL_11_STABLE [f6ef3ed43] 2018-07-30 12:35:49 -0400
-Branch: REL_10_STABLE [96b1d984f] 2018-07-30 12:35:49 -0400
-Branch: REL9_6_STABLE [8c7f64b0e] 2018-07-30 12:35:49 -0400
-Branch: REL9_5_STABLE [b868c08eb] 2018-07-30 12:35:49 -0400
-Branch: REL9_4_STABLE [addf9e1bd] 2018-07-30 12:35:49 -0400
--->
- <para>
- Fix <application>pg_dump</application>'s failure to
- dump <literal>REPLICA IDENTITY</literal> properties for constraint
- indexes (Tom Lane)
- </para>
-
- <para>
- Manually created unique indexes were properly marked, but not those
- created by declaring <literal>UNIQUE</literal> or <literal>PRIMARY
- KEY</literal> constraints.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [244142d32] 2018-07-28 15:01:55 -0400
-Branch: REL_11_STABLE [113224848] 2018-07-28 15:01:55 -0400
-Branch: REL_10_STABLE [9a13e7f0f] 2018-07-28 15:01:55 -0400
-Branch: REL9_6_STABLE [a326ca75b] 2018-07-28 15:01:55 -0400
-Branch: REL9_5_STABLE [260fe9f2b] 2018-07-28 15:01:55 -0400
-Branch: REL9_4_STABLE [f87878106] 2018-07-28 15:01:55 -0400
-Branch: REL9_3_STABLE [a5c84e0b7] 2018-07-28 15:01:55 -0400
-Branch: master [b6d6488a3] 2018-07-31 18:10:06 -0400
-Branch: REL_11_STABLE [920001633] 2018-07-31 18:10:06 -0400
-Branch: REL_10_STABLE [d8dd8d221] 2018-07-31 18:10:06 -0400
-Branch: REL9_6_STABLE [764e21db0] 2018-07-31 18:10:06 -0400
-Branch: REL9_5_STABLE [92a11a0d8] 2018-07-31 18:10:06 -0400
-Branch: REL9_4_STABLE [12dd07008] 2018-07-31 18:10:06 -0400
-Branch: REL9_3_STABLE [a1d383ab5] 2018-07-31 18:10:06 -0400
-Branch: REL9_3_STABLE [dfc71a1b2] 2018-07-31 19:06:32 -0400
--->
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [e3b7f7cc5] 2018-06-18 15:55:06 -0400
-Branch: REL_10_STABLE [7594b7a53] 2018-06-18 15:55:06 -0400
-Branch: REL9_6_STABLE [1bebfb9b6] 2018-06-18 15:55:06 -0400
-Branch: REL9_5_STABLE [645929c54] 2018-06-18 15:55:06 -0400
--->
- <para>
- Fix <filename>contrib/hstore_plperl</filename> to look through Perl
- scalar references, and to not crash if it doesn't find a hash
- reference where it expects one (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [28a1ae534] 2018-07-13 18:45:30 -0400
-Branch: REL_11_STABLE [dbd7f4e7c] 2018-07-13 18:45:30 -0400
-Branch: REL_10_STABLE [1f47eb08c] 2018-07-13 18:45:30 -0400
-Branch: REL9_6_STABLE [330cad2c4] 2018-07-13 18:45:30 -0400
-Branch: REL9_5_STABLE [ac6b69c19] 2018-07-13 18:45:30 -0400
-Branch: REL9_4_STABLE [f8e8be7f2] 2018-07-13 18:45:30 -0400
-Branch: REL9_3_STABLE [cbbe75fe6] 2018-07-13 18:45:30 -0400
--->
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [81256cd05] 2018-05-21 00:32:28 -0400
-Branch: REL_10_STABLE [28782d7e3] 2018-05-21 00:32:39 -0400
-Branch: REL9_6_STABLE [1545ca9a7] 2018-05-21 00:32:44 -0400
-Branch: REL9_5_STABLE [ced0cdc76] 2018-05-21 00:32:48 -0400
-Branch: REL9_4_STABLE [5517367e9] 2018-05-21 00:32:52 -0400
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master Release: REL_11_BR [6cb337241] 2018-06-25 11:19:05 +0900
-Branch: REL_10_STABLE [6eec6724f] 2018-06-25 11:20:19 +0900
-Branch: REL9_6_STABLE [7fdf56b0a] 2018-06-25 11:20:50 +0900
-Branch: REL9_5_STABLE [910e2aca1] 2018-06-25 11:21:49 +0900
-Branch: REL9_4_STABLE [79b5b101f] 2018-06-25 11:22:02 +0900
-Branch: REL9_3_STABLE [f53ed82b7] 2018-06-25 11:22:24 +0900
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [5a23c74b6] 2018-08-05 05:31:18 +0900
-Branch: REL_11_STABLE [58673b4a5] 2018-08-05 05:31:56 +0900
-Branch: REL_10_STABLE [7124e6452] 2018-08-05 05:32:12 +0900
-Branch: REL9_6_STABLE [f5b4bb881] 2018-08-05 05:32:27 +0900
-Branch: REL9_5_STABLE [afd5fde85] 2018-08-05 05:32:37 +0900
-Branch: REL9_4_STABLE [e69a3ac4a] 2018-08-05 05:32:44 +0900
-Branch: REL9_3_STABLE [69599cc49] 2018-08-05 05:32:54 +0900
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master Release: REL_11_BR [cfb758b6d] 2018-05-18 17:54:18 +0200
-Branch: REL_10_STABLE [29ce50091] 2018-05-18 17:53:12 +0200
-Branch: REL9_6_STABLE [830e8e360] 2018-05-18 17:53:15 +0200
-Branch: REL9_5_STABLE [714d8e5fa] 2018-05-18 17:53:17 +0200
-Branch: REL9_4_STABLE [b5f096d50] 2018-05-18 17:53:19 +0200
-Branch: REL9_3_STABLE [048caa556] 2018-05-18 17:53:20 +0200
--->
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [dddfc4cb2] 2018-04-03 16:26:05 -0400
-Branch: REL_10_STABLE [c74f48a4e] 2018-07-09 17:23:31 -0400
-Branch: REL9_6_STABLE [ccc286da1] 2018-07-09 17:23:31 -0400
-Branch: REL9_5_STABLE [6532ca57a] 2018-07-09 17:23:31 -0400
-Branch: REL9_4_STABLE [dd4e83674] 2018-07-09 17:23:32 -0400
-Branch: REL9_3_STABLE [f6f75539d] 2018-07-09 17:23:32 -0400
--->
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_11_BR [234bb985c] 2018-05-09 13:56:22 -0400
-Branch: REL_10_STABLE [aba2f5522] 2018-05-09 13:55:42 -0400
-Branch: REL9_6_STABLE [22e524d97] 2018-05-09 13:55:48 -0400
-Branch: REL9_5_STABLE [777918e34] 2018-05-09 13:55:54 -0400
-Branch: REL9_4_STABLE [32453bc5a] 2018-05-09 13:56:00 -0400
-Branch: REL9_3_STABLE [3f36e4fc5] 2018-05-09 13:56:06 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10-4">
- <title>Release 10.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.3.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.4</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However, if you use the <filename>adminpack</filename> extension,
- you should update it as per the first changelog entry below.
- </para>
-
- <para>
- Also, if the function marking mistakes mentioned in the second and
- third changelog entries below affect you, you will want to take steps
- to correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 10.3,
- see <xref linkend="release-10-3"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [7b347409f] 2018-05-07 10:10:33 -0400
-Branch: REL_10_STABLE [20f01fc45] 2018-05-07 10:10:41 -0400
-Branch: REL9_6_STABLE [53b79ab4f] 2018-05-07 10:10:45 -0400
--->
- <para>
- Remove public execute privilege
- from <filename>contrib/adminpack</filename>'s
- <function>pg_logfile_rotate()</function> function (Stephen Frost)
- </para>
-
- <para>
- <function>pg_logfile_rotate()</function> is a deprecated wrapper
- for the core function <function>pg_rotate_logfile()</function>.
- When that function was changed to rely on SQL privileges for access
- control rather than a hard-coded superuser
- check, <function>pg_logfile_rotate()</function> should have been
- updated as well, but the need for this was missed. Hence,
- if <filename>adminpack</filename> is installed, any user could
- request a logfile rotation, creating a minor security issue.
- </para>
-
- <para>
- After installing this update, administrators should
- update <filename>adminpack</filename> by performing
- <literal>ALTER EXTENSION adminpack UPDATE</literal> in each
- database in which <filename>adminpack</filename> is installed.
- (CVE-2018-1115)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [11002f8af] 2018-03-30 18:14:51 -0400
-Branch: REL_10_STABLE [283262cd9] 2018-03-30 18:14:51 -0400
-Branch: REL9_6_STABLE [91d82317d] 2018-03-30 18:14:51 -0400
-Branch: REL9_5_STABLE [ea83c7e66] 2018-03-30 18:14:51 -0400
-Branch: REL9_4_STABLE [b7537ffb1] 2018-03-30 18:14:51 -0400
-Branch: REL9_3_STABLE [485857d44] 2018-03-30 18:14:51 -0400
--->
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [11002f8af] 2018-03-30 18:14:51 -0400
-Branch: REL_10_STABLE [283262cd9] 2018-03-30 18:14:51 -0400
-Branch: REL9_6_STABLE [91d82317d] 2018-03-30 18:14:51 -0400
--->
- <para>
- Fix incorrect parallel-safety markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>brin_summarize_new_values</function>,
- <function>brin_summarize_range</function>,
- <function>brin_desummarize_range</function>,
- <function>gin_clean_pending_list</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>ts_rewrite</function>,
- <function>ts_stat</function>,
- <function>binary_upgrade_create_empty_extension</function>, and
- <function>pg_import_system_collations</function>
- should be marked parallel-unsafe; some because they perform database
- modifications directly, and others because they execute user-supplied
- queries that might do so. They were marked parallel-restricted
- instead, leading to a risk of unexpected query errors. This has been
- repaired for new installations by correcting the initial catalog
- data, but existing installations will continue to contain the
- incorrect markings. Practical use of these functions seems to pose
- little hazard unless <varname>force_parallel_mode</varname> is turned
- on. In case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.brin_summarize_new_values(regclass)
- PARALLEL UNSAFE</literal>. (Note that that will need to be done in
- each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0408e1ed5] 2018-04-11 17:41:22 -0400
-Branch: REL_10_STABLE [5a11bf970] 2018-04-11 17:41:23 -0400
-Branch: REL9_6_STABLE [8bba10f7e] 2018-04-11 17:41:25 -0400
-Branch: REL9_5_STABLE [3767216fb] 2018-04-11 17:41:26 -0400
-Branch: REL9_4_STABLE [5b3ed6b78] 2018-04-11 17:41:27 -0400
-Branch: REL9_3_STABLE [7448e7e23] 2018-04-11 17:41:28 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d1e907929] 2018-04-11 18:11:29 -0400
-Branch: REL_10_STABLE [08e6cda1c] 2018-04-11 18:11:29 -0400
-Branch: REL9_6_STABLE [060bb38d0] 2018-04-11 18:11:30 -0400
-Branch: REL9_5_STABLE [efbe36a2c] 2018-04-11 18:11:30 -0400
-Branch: REL9_4_STABLE [6943fb927] 2018-04-11 18:11:30 -0400
-Branch: REL9_3_STABLE [66d4b6bb8] 2018-04-11 18:11:30 -0400
--->
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [cfbecf810] 2018-04-06 11:42:28 -0400
-Branch: REL_10_STABLE [29ab1e24a] 2018-04-06 11:52:38 -0400
--->
- <para>
- Correctly enforce any <literal>CHECK</literal> constraints on
- individual partitions during <command>COPY</command> to a partitioned
- table (Etsuro Fujita)
- </para>
-
- <para>
- Previously, only constraints declared for the partitioned table as a
- whole were checked.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4df58f7ed] 2018-04-23 15:29:11 -0400
-Branch: REL_10_STABLE [1222db999] 2018-04-23 15:29:12 -0400
--->
- <para>
- Accept <literal>TRUE</literal> and <literal>FALSE</literal> as
- partition bound values (Amit Langote)
- </para>
-
- <para>
- Previously, only string-literal values were accepted for a boolean
- partitioning column. But then <application>pg_dump</application>
- would print such values as <literal>TRUE</literal>
- or <literal>FALSE</literal>, leading to dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a4d56f583] 2018-04-12 15:08:10 -0300
-Branch: REL_10_STABLE [5f11c6ec6] 2018-04-12 15:08:25 -0300
--->
- <para>
- Fix memory management for partition key comparison functions
- (&Aacute;lvaro Herrera, Amit Langote)
- </para>
-
- <para>
- This error could lead to crashes when using user-defined operator
- classes for partition keys.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [6666ee49f] 2018-03-19 17:45:53 -0300
-Branch: REL_10_STABLE [e3faddf53] 2018-03-19 17:43:55 -0300
--->
- <para>
- Fix possible crash when a query inserts tuples in several partitions
- of a partitioned table, and those partitions don't have identical row
- types (Etsuro Fujita, Amit Langote)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d04900de7] 2018-03-13 13:24:27 -0400
-Branch: REL_10_STABLE [1bfb56723] 2018-03-13 13:24:27 -0400
-Branch: REL9_6_STABLE [c2c4bc628] 2018-03-13 13:24:27 -0400
-Branch: REL9_5_STABLE [c9414e786] 2018-03-13 13:24:27 -0400
-Branch: REL9_4_STABLE [25a2ba35e] 2018-03-13 13:24:27 -0400
-Branch: REL9_3_STABLE [d44ce7b1a] 2018-03-13 13:24:27 -0400
--->
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [5564c1181] 2018-03-05 19:37:19 -0300
-Branch: REL_10_STABLE [911e6236b] 2018-03-05 19:37:19 -0300
--->
- <para>
- Include extended-statistics objects in the set of table properties
- duplicated by <command>CREATE TABLE ... LIKE ... INCLUDING
- ALL</command> (David Rowley)
- </para>
-
- <para>
- Also add an <literal>INCLUDING STATISTICS</literal> option, to allow
- finer-grained control over whether this happens.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [377b5ac48] 2018-03-13 09:41:30 -0400
-Branch: REL_10_STABLE [c32f44c4a] 2018-03-13 09:41:36 -0400
--->
- <para>
- Fix <command>CREATE TABLE ... LIKE</command> with <type>bigint</type>
- identity columns (Peter Eisentraut)
- </para>
-
- <para>
- On platforms where <type>long</type> is 32 bits (which includes
- 64-bit Windows as well as most 32-bit machines), copied sequence
- parameters would be truncated to 32 bits.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1dec82068] 2018-04-18 12:07:37 -0400
-Branch: REL_10_STABLE [94a898f69] 2018-04-18 12:07:37 -0400
-Branch: REL9_6_STABLE [69e3a548e] 2018-04-18 12:07:37 -0400
-Branch: REL9_5_STABLE [82acf3eb7] 2018-04-18 12:07:38 -0400
-Branch: REL9_4_STABLE [7490ce725] 2018-04-18 12:07:38 -0400
--->
- <para>
- Avoid deadlocks in concurrent <command>CREATE INDEX
- CONCURRENTLY</command> commands that are run
- under <literal>SERIALIZABLE</literal> or <literal>REPEATABLE
- READ</literal> transaction isolation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6fbd5cce2] 2018-03-19 17:23:21 -0400
-Branch: REL_10_STABLE [1568156d8] 2018-03-19 17:23:23 -0400
-Branch: REL9_6_STABLE [ebcf34d46] 2018-03-19 17:23:07 -0400
-Branch: REL9_5_STABLE [c553e4a50] 2018-03-19 17:23:07 -0400
-Branch: REL9_4_STABLE [b6ba94ec4] 2018-03-19 17:23:07 -0400
--->
- <para>
- Fix possible slow execution of <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8f5ac4404] 2018-03-17 14:59:49 -0400
-Branch: REL_10_STABLE [ee7bf0fd9] 2018-03-17 14:59:31 -0400
-Branch: REL9_6_STABLE [12d18b487] 2018-03-17 14:59:31 -0400
-Branch: REL9_5_STABLE [7de7ddb27] 2018-03-17 14:59:31 -0400
-Branch: REL9_4_STABLE [0a0721f84] 2018-03-17 14:59:31 -0400
-Branch: REL9_3_STABLE [5b77c11da] 2018-03-17 14:59:31 -0400
--->
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e5d83995e] 2018-04-19 15:49:30 -0400
-Branch: REL_10_STABLE [68fab04f7] 2018-04-19 15:49:12 -0400
-Branch: REL9_6_STABLE [0c141fcaa] 2018-04-19 15:49:12 -0400
-Branch: REL9_5_STABLE [e4e43a16b] 2018-04-19 15:49:12 -0400
-Branch: REL9_4_STABLE [a347d5210] 2018-04-19 15:49:12 -0400
-Branch: REL9_3_STABLE [e1d4398c0] 2018-04-19 15:49:12 -0400
-Branch: REL9_6_STABLE [306d6e59f] 2018-04-19 18:29:39 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c792c7db4] 2018-04-20 15:19:16 -0400
-Branch: REL_10_STABLE [8b6294c7a] 2018-04-20 15:19:16 -0400
-Branch: REL9_6_STABLE [64ad85860] 2018-04-20 15:19:17 -0400
-Branch: REL9_5_STABLE [80e12a621] 2018-04-20 15:19:17 -0400
-Branch: REL9_4_STABLE [58fec9526] 2018-04-20 15:19:17 -0400
-Branch: REL9_3_STABLE [9680c120e] 2018-04-20 15:19:17 -0400
--->
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b5febc1d1] 2018-03-01 15:35:03 -0500
-Branch: REL_10_STABLE [147b59971] 2018-03-01 15:35:03 -0500
-Branch: REL9_6_STABLE [3f26be83e] 2018-03-01 15:35:03 -0500
-Branch: REL9_5_STABLE [be55bfc93] 2018-03-01 15:35:03 -0500
--->
- <para>
- Fix possibly incorrect generation of an index-only-scan plan when the
- same table column appears in multiple index columns, and only some of
- those index columns use operator classes that can return the column
- value (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4a4e2442a] 2018-03-11 18:10:42 -0400
-Branch: REL_10_STABLE [e2ed3c4a3] 2018-03-11 18:10:42 -0400
-Branch: REL9_6_STABLE [976e5844e] 2018-03-11 18:10:42 -0400
-Branch: REL9_5_STABLE [106d58805] 2018-03-11 18:10:42 -0400
-Branch: REL9_4_STABLE [e556fb137] 2018-03-11 18:10:42 -0400
-Branch: REL9_3_STABLE [925581d89] 2018-03-11 18:10:43 -0400
--->
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [d2d79887e] 2018-03-21 11:39:28 +0000
-Branch: REL_10_STABLE [cf21c4649] 2018-03-21 11:41:53 +0000
--->
- <para>
- Prevent planner crash when a query has multiple <literal>GROUPING
- SETS</literal>, none of which can be implemented by sorting (Andrew
- Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c2d4eb1b1] 2018-03-28 13:26:57 -0400
-Branch: REL_10_STABLE [c98f218fb] 2018-03-28 13:26:43 -0400
-Branch: REL9_6_STABLE [90decdba3] 2018-03-28 13:26:43 -0400
-Branch: REL9_5_STABLE [e4ff71158] 2018-03-28 13:26:43 -0400
--->
- <para>
- Fix executor crash due to double free in some <literal>GROUPING
- SETS</literal> usages (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e98a4de7d] 2018-02-27 15:56:51 -0500
-Branch: REL_10_STABLE [b9dac4a6e] 2018-02-27 15:56:51 -0500
--->
- <para>
- Fix misexecution of self-joins on transition tables (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b1b71f165] 2018-04-20 17:15:31 -0400
-Branch: REL_10_STABLE [fab4ecacc] 2018-04-20 17:15:31 -0400
-Branch: REL9_6_STABLE [c76d0eed2] 2018-04-20 17:15:31 -0400
-Branch: REL9_5_STABLE [168df1b84] 2018-04-20 17:15:31 -0400
--->
- <para>
- Avoid crash if a table rewrite event trigger is added concurrently
- with a command that could call such a trigger (&Aacute;lvaro Herrera,
- Andrew Gierth, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [8f9be261f] 2018-05-03 20:08:29 +0300
-Branch: REL_10_STABLE [ee492e3de] 2018-05-03 20:09:02 +0300
-Branch: REL9_6_STABLE [d9b3bc552] 2018-05-03 20:09:28 +0300
-Branch: REL9_5_STABLE [d3fc427f4] 2018-05-03 20:09:47 +0300
-Branch: REL9_4_STABLE [6bd659f19] 2018-05-03 20:10:11 +0300
-Branch: REL9_3_STABLE [540e7a6e5] 2018-05-03 20:10:34 +0300
--->
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9e17bdb8a] 2018-03-16 16:03:45 -0400
-Branch: REL_10_STABLE [bdc7f686d] 2018-03-16 16:03:45 -0400
-Branch: REL9_6_STABLE [5149dc934] 2018-03-16 16:03:45 -0400
-Branch: REL9_5_STABLE [c17a58967] 2018-03-16 16:03:45 -0400
-Branch: REL9_4_STABLE [2709549ec] 2018-03-16 16:03:45 -0400
-Branch: REL9_3_STABLE [574386ddc] 2018-03-16 16:03:45 -0400
--->
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0b1d1a038] 2018-03-02 17:40:48 -0500
-Branch: REL_10_STABLE [76ec45756] 2018-03-02 17:40:48 -0500
-Branch: REL9_6_STABLE [96d2df840] 2018-03-02 17:40:48 -0500
--->
- <para>
- Fix possible leak or double free of visibility map buffer pins
- (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d2599ecfc] 2018-05-04 18:24:45 -0300
-Branch: REL_10_STABLE [e1d634758] 2018-05-04 18:23:58 -0300
-Branch: REL9_6_STABLE [3a11485a5] 2018-05-04 18:23:30 -0300
--->
- <para>
- Avoid spuriously marking pages as all-visible (Dan Wood,
- Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could happen if some tuples were locked (but not deleted). While
- queries would still function correctly, vacuum would normally ignore
- such pages, with the long-term effect that the tuples were never
- frozen. In recent releases this would eventually result in errors
- such as <quote>found multixact <replaceable>nnnnn</replaceable> from
- before relminmxid <replaceable>nnnnn</replaceable></quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [477ad05e1] 2018-03-01 18:07:46 -0300
-Branch: REL_10_STABLE [aad956ada] 2018-03-01 18:07:46 -0300
-Branch: REL9_6_STABLE [0ddaaa4cf] 2018-03-01 18:07:46 -0300
-Branch: REL9_5_STABLE [491bbc36e] 2018-03-01 18:07:46 -0300
-Branch: REL9_4_STABLE [3ee23834e] 2018-03-01 18:07:46 -0300
-Branch: REL9_3_STABLE [650f3863f] 2018-03-01 18:07:46 -0300
--->
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [25b692568] 2018-02-27 13:28:02 -0500
-Branch: REL_10_STABLE [b45f821e2] 2018-02-27 13:27:38 -0500
-Branch: REL9_6_STABLE [06f47297e] 2018-02-27 13:27:38 -0500
-Branch: REL9_5_STABLE [2ee44e10d] 2018-02-27 13:27:38 -0500
-Branch: REL9_4_STABLE [5ccb77586] 2018-02-27 13:27:38 -0500
-Branch: REL9_3_STABLE [9bc33ef5e] 2018-02-27 13:27:38 -0500
--->
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [38f7831d7] 2018-03-13 12:28:35 -0400
-Branch: REL_10_STABLE [4460964ae] 2018-03-13 12:28:36 -0400
-Branch: REL9_6_STABLE [4b0e71705] 2018-03-13 12:28:37 -0400
-Branch: REL9_5_STABLE [231329a17] 2018-03-13 12:28:38 -0400
-Branch: REL9_4_STABLE [95f08d32d] 2018-03-13 12:28:39 -0400
-Branch: REL9_3_STABLE [5328b6135] 2018-03-13 12:28:40 -0400
--->
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a820b4c32] 2018-04-11 23:39:48 +0300
-Branch: REL_10_STABLE [89c2ab340] 2018-04-11 23:40:03 +0300
-Branch: REL9_6_STABLE [74dc05e01] 2018-04-11 23:40:13 +0300
-Branch: REL9_5_STABLE [fd2efda5d] 2018-04-11 23:40:19 +0300
-Branch: REL9_4_STABLE [310d1379d] 2018-04-11 23:40:27 +0300
-Branch: REL9_3_STABLE [dfc383cf3] 2018-04-11 23:40:31 +0300
--->
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [811969b21] 2018-04-11 23:39:49 +0300
-Branch: REL_10_STABLE [93b3d43dc] 2018-04-11 23:52:11 +0300
--->
- <para>
- Handle <structname>pg_stat_activity</structname> information for
- auxiliary processes correctly (Edmund Horner)
- </para>
-
- <para>
- The <structfield>application_name</structfield>,
- <structfield>client_hostname</structfield>,
- and <structfield>query</structfield> fields might show incorrect
- data for such processes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [65a69dfa0] 2018-04-12 18:39:51 -0400
-Branch: REL_10_STABLE [40132187e] 2018-04-12 18:39:51 -0400
-Branch: REL9_6_STABLE [0f439c8dd] 2018-04-12 18:39:51 -0400
-Branch: REL9_5_STABLE [906e44d4d] 2018-04-12 18:39:51 -0400
-Branch: REL9_4_STABLE [f71d803c8] 2018-04-12 18:39:51 -0400
-Branch: REL9_3_STABLE [ac8ea0f27] 2018-04-12 18:39:52 -0400
--->
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b15e8f71d] 2018-04-16 16:06:58 -0400
-Branch: REL_10_STABLE [3397c6727] 2018-04-16 16:06:47 -0400
-Branch: REL9_6_STABLE [d90b2904c] 2018-04-16 16:06:47 -0400
-Branch: REL9_5_STABLE [93053aca5] 2018-04-16 16:06:47 -0400
-Branch: REL9_4_STABLE [608d1f971] 2018-04-16 16:06:47 -0400
-Branch: REL9_3_STABLE [cf73a5b34] 2018-04-16 16:06:47 -0400
--->
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [467963c3e] 2018-03-19 23:59:30 -0400
-Branch: REL_10_STABLE [d18a88acf] 2018-03-19 23:59:17 -0400
-Branch: REL9_6_STABLE [57ef2da43] 2018-03-19 23:59:17 -0400
--->
- <para>
- Prevent query-lifespan memory leakage with SP-GiST operator classes
- that use traversal values (Anton Dign&ouml;s)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [649f17925] 2018-03-22 13:24:05 -0400
-Branch: REL_10_STABLE [bf14575c8] 2018-03-22 13:23:48 -0400
-Branch: REL9_6_STABLE [db35bf507] 2018-03-22 13:23:48 -0400
-Branch: REL9_5_STABLE [eee190da7] 2018-03-22 13:23:48 -0400
-Branch: REL9_4_STABLE [7f6f8ccd9] 2018-03-22 13:23:48 -0400
-Branch: REL9_3_STABLE [46f80803a] 2018-03-22 13:23:48 -0400
--->
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [81b9b5ce4] 2018-03-02 11:22:42 -0500
-Branch: REL_10_STABLE [ccd650430] 2018-03-02 11:22:42 -0500
-Branch: REL9_6_STABLE [529137cac] 2018-03-02 11:22:42 -0500
-Branch: REL9_5_STABLE [46d98da43] 2018-03-02 11:22:42 -0500
-Branch: REL9_4_STABLE [947f06c62] 2018-03-02 11:22:42 -0500
-Branch: REL9_3_STABLE [6b56f0752] 2018-03-02 11:22:42 -0500
--->
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [066871980] 2018-05-05 01:34:53 +0300
-Branch: REL_10_STABLE [ca572db22] 2018-05-05 01:35:09 +0300
-Branch: REL9_6_STABLE [7b7521d65] 2018-05-05 01:35:12 +0300
-Branch: REL9_5_STABLE [4ea8f7d45] 2018-05-05 01:35:15 +0300
-Branch: REL9_4_STABLE [c06380e97] 2018-05-05 01:35:18 +0300
--->
- <para>
- Fix a corner case where a streaming standby gets stuck at a WAL
- continuation record (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [8aa75e138] 2018-03-06 18:34:29 -0300
-Branch: REL_10_STABLE [cee1dd1ee] 2018-03-06 16:20:54 -0300
-Branch: REL9_6_STABLE [8e5c2afa9] 2018-03-06 16:20:13 -0300
-Branch: REL9_5_STABLE [d4429d50a] 2018-03-06 16:20:03 -0300
-Branch: REL9_4_STABLE [6d30e3a2b] 2018-03-06 16:10:23 -0300
--->
- <para>
- In logical decoding, avoid possible double processing of WAL data
- when a walsender restarts (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [24c0a6c64] 2018-03-14 21:34:26 -0300
-Branch: REL_10_STABLE [3c3450e74] 2018-03-14 21:34:21 -0300
--->
- <para>
- Fix logical replication to not assume that type OIDs match between
- the local and remote servers (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [58d9acc18] 2018-03-03 20:31:35 -0500
-Branch: REL_10_STABLE [bfade0e51] 2018-03-03 20:31:35 -0500
-Branch: REL9_6_STABLE [e2108f581] 2018-03-03 20:31:35 -0500
-Branch: REL9_5_STABLE [ad3e3d731] 2018-03-03 20:31:35 -0500
-Branch: REL9_4_STABLE [165fa27fe] 2018-03-03 20:31:35 -0500
-Branch: REL9_3_STABLE [0bea99bd9] 2018-03-03 20:31:35 -0500
--->
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d25c2ee9c] 2018-04-13 12:53:45 -0400
-Branch: REL_10_STABLE [d014b38df] 2018-04-13 12:53:45 -0400
-Branch: REL9_6_STABLE [131f6a958] 2018-04-13 12:53:46 -0400
-Branch: REL9_5_STABLE [2278e94ae] 2018-04-13 12:53:46 -0400
-Branch: REL9_4_STABLE [3dd36aa4b] 2018-04-13 12:53:46 -0400
-Branch: REL9_3_STABLE [bbec33c2d] 2018-04-13 12:53:46 -0400
--->
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [b32fad52e] 2018-03-13 16:22:28 +0100
-Branch: REL_10_STABLE [fe65f5931] 2018-03-13 16:23:25 +0100
-Branch: REL9_6_STABLE [44a36a8d9] 2018-03-12 23:53:39 +0100
-Branch: REL9_5_STABLE [95f026021] 2018-03-12 23:53:46 +0100
-Branch: REL9_4_STABLE [bd7eb6fe6] 2018-03-12 23:54:22 +0100
-Branch: REL9_3_STABLE [042badc37] 2018-03-12 23:54:29 +0100
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [db2fc801f] 2018-03-14 00:51:17 +0100
-Branch: REL_10_STABLE [8559b40c5] 2018-03-14 00:50:39 +0100
-Branch: REL9_6_STABLE [8e3f3ab5b] 2018-03-14 00:51:58 +0100
-Branch: REL9_5_STABLE [837d4f739] 2018-03-14 00:52:11 +0100
-Branch: REL9_4_STABLE [fcc15bf38] 2018-03-14 00:52:21 +0100
-Branch: REL9_3_STABLE [09f4ca92b] 2018-03-14 00:52:45 +0100
--->
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [51057feaa] 2018-02-27 16:46:52 -0500
-Branch: REL_10_STABLE [fda3e6578] 2018-02-27 16:46:52 -0500
-Branch: REL9_6_STABLE [7ee8005ce] 2018-02-27 16:46:52 -0500
-Branch: REL9_5_STABLE [f171cbe0d] 2018-02-27 16:46:52 -0500
-Branch: REL9_4_STABLE [49f9014c8] 2018-02-27 16:46:52 -0500
-Branch: REL9_3_STABLE [87b7e1e88] 2018-02-27 16:46:52 -0500
--->
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [742869946] 2018-03-21 20:03:28 -0400
-Branch: REL_10_STABLE [66e92878a] 2018-03-21 20:03:28 -0400
-Branch: REL9_6_STABLE [8132f0f38] 2018-03-21 20:03:28 -0400
-Branch: REL9_5_STABLE [a35d72923] 2018-03-21 20:03:28 -0400
-Branch: REL9_4_STABLE [67e02cde7] 2018-03-21 20:03:28 -0400
-Branch: REL9_3_STABLE [be677bb5a] 2018-03-21 20:03:29 -0400
--->
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [8d2814f27] 2018-03-18 13:08:25 +0100
-Branch: REL_10_STABLE [e7d3a37d9] 2018-03-18 13:11:27 +0100
-Branch: REL9_6_STABLE [59743deca] 2018-03-18 13:11:40 +0100
-Branch: REL9_5_STABLE [24ff0fe87] 2018-03-18 13:11:49 +0100
-Branch: REL9_4_STABLE [af5fbb128] 2018-03-18 13:11:58 +0100
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [6336b6dfc] 2018-04-25 18:50:29 -0700
-Branch: REL_10_STABLE [c7cc9b7d4] 2018-04-25 18:50:32 -0700
-Branch: REL9_6_STABLE [32c247629] 2018-04-25 18:50:33 -0700
-Branch: REL9_5_STABLE [24f1e9ca0] 2018-04-25 18:50:33 -0700
-Branch: REL9_4_STABLE [bb532859f] 2018-04-25 18:50:34 -0700
--->
- <para>
- Fix <application>pg_recvlogical</application> to not fail against
- pre-v10 <productname>PostgreSQL</productname> servers
- (Michael Paquier)
- </para>
-
- <para>
- A previous fix caused <application>pg_recvlogical</application> to
- issue a command regardless of server version, but it should only be
- issued to v10 and later servers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [09e96b3f3] 2018-03-29 04:00:21 +0900
-Branch: REL_10_STABLE [f1e07d576] 2018-03-29 04:01:43 +0900
-Branch: REL9_6_STABLE [52c32d8d8] 2018-03-29 04:02:08 +0900
-Branch: REL9_5_STABLE [b33e38cb1] 2018-03-29 04:02:34 +0900
--->
- <para>
- Ensure that <application>pg_rewind</application> deletes files on the
- target server if they are deleted from the source server during the
- run (Takayuki Tsunakawa)
- </para>
-
- <para>
- Failure to do this could result in data inconsistency on the target,
- particularly if the file in question is a WAL segment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [2f3e2340c] 2018-03-06 02:08:18 +0900
-Branch: REL_10_STABLE [bca696ab0] 2018-03-06 02:09:12 +0900
-Branch: REL9_6_STABLE [7aba4f23f] 2018-03-06 02:10:41 +0900
-Branch: REL9_5_STABLE [cb5c141ed] 2018-03-06 02:12:06 +0900
--->
- <para>
- Fix <application>pg_rewind</application> to handle tables in
- non-default tablespaces correctly (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2dbee9f19] 2018-03-17 15:38:15 -0400
-Branch: REL_10_STABLE [04c76acab] 2018-03-17 15:38:15 -0400
-Branch: REL9_6_STABLE [5917297bf] 2018-03-17 15:38:15 -0400
-Branch: REL9_5_STABLE [b3fade55c] 2018-03-17 15:38:15 -0400
-Branch: REL9_4_STABLE [092401b14] 2018-03-17 15:38:15 -0400
-Branch: REL9_3_STABLE [f1f7a85d8] 2018-03-17 15:38:15 -0400
--->
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [fa03769e4] 2018-05-03 13:13:09 -0400
-Branch: master [7d8679975] 2018-05-03 20:29:54 -0400
-Branch: REL_10_STABLE [8f1787a8f] 2018-05-05 23:03:44 -0400
-Branch: REL9_6_STABLE [ab7825ead] 2018-05-05 23:34:41 -0400
-Branch: REL9_5_STABLE [b812d6372] 2018-05-05 23:48:19 -0400
-Branch: REL9_4_STABLE [af9e0d5cd] 2018-05-05 23:53:05 -0400
-Branch: REL9_3_STABLE [e7f904715] 2018-05-05 23:54:04 -0400
--->
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [966268c76] 2018-05-04 15:22:48 -0400
-Branch: REL_10_STABLE [56a45646d] 2018-05-04 15:32:31 -0400
-Branch: REL9_6_STABLE [a9fbf550b] 2018-05-04 15:33:06 -0400
-Branch: REL9_5_STABLE [c1f3638d2] 2018-05-04 15:33:18 -0400
-Branch: REL9_4_STABLE [134db37d2] 2018-05-04 15:51:31 -0400
-Branch: REL9_3_STABLE [af39c1da7] 2018-05-04 15:56:01 -0400
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [2b9bdda74] 2018-05-06 07:37:05 -0400
-Branch: REL_10_STABLE [0e6114be8] 2018-05-06 07:39:05 -0400
-Branch: REL9_6_STABLE [289bafdbc] 2018-05-06 07:39:37 -0400
-Branch: REL9_5_STABLE [3b17d4b9d] 2018-05-06 07:39:51 -0400
-Branch: REL9_4_STABLE [1eb24720c] 2018-05-06 07:40:04 -0400
-Branch: REL9_3_STABLE [a75b01c61] 2018-05-06 07:40:25 -0400
--->
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c35b47286] 2018-03-22 13:14:07 -0400
-Branch: REL_10_STABLE [76e2b5ae4] 2018-03-22 13:13:58 -0400
-Branch: REL9_6_STABLE [df9040155] 2018-03-22 13:13:58 -0400
--->
- <para>
- Fix errors in initial build of <filename>contrib/bloom</filename>
- indexes (Tomas Vondra, Tom Lane)
- </para>
-
- <para>
- Fix possible omission of the table's last tuple from the index.
- Count the number of index tuples correctly, in case it is a partial
- index.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [43e949086] 2018-02-28 18:33:45 -0500
-Branch: REL_10_STABLE [aac6286d8] 2018-02-28 18:33:45 -0500
-Branch: REL9_6_STABLE [11e7700e5] 2018-02-28 18:33:45 -0500
-Branch: REL9_5_STABLE [679df2b8d] 2018-02-28 18:33:45 -0500
-Branch: REL9_4_STABLE [d07f79a9c] 2018-02-28 18:33:45 -0500
-Branch: REL9_3_STABLE [10102c91e] 2018-02-28 18:33:45 -0500
--->
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b45f6613e] 2018-05-04 12:26:25 -0400
-Branch: REL_10_STABLE [b49f4e69a] 2018-05-04 12:26:34 -0400
-Branch: REL9_6_STABLE [7a83323f2] 2018-05-04 12:26:39 -0400
-Branch: REL9_5_STABLE [4e0e9e59b] 2018-05-04 12:26:43 -0400
-Branch: REL9_4_STABLE [2d123b310] 2018-05-04 12:26:48 -0400
-Branch: REL9_3_STABLE [9469ebc71] 2018-05-04 12:26:52 -0400
--->
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [df629586e] 2018-04-29 15:50:08 -0400
-Branch: REL_10_STABLE [783e8f56d] 2018-04-29 15:50:23 -0400
-Branch: REL9_6_STABLE [2acbeea48] 2018-04-29 15:50:31 -0400
-Branch: REL9_5_STABLE [eaed0d230] 2018-04-29 15:50:37 -0400
-Branch: REL9_4_STABLE [37c02b2b0] 2018-04-29 15:50:43 -0400
-Branch: REL9_3_STABLE [adcd0c2be] 2018-04-29 15:50:50 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10-3">
- <title>Release 10.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.2.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.3</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 10.2,
- see <xref linkend="release-10-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [5770172cb] 2018-02-26 07:39:44 -0800
-Branch: REL_10_STABLE [ee0d1966e] 2018-02-26 07:39:47 -0800
-Branch: REL9_6_STABLE [70396dbe3] 2018-02-26 07:39:48 -0800
-Branch: REL9_5_STABLE [1f47ea7b8] 2018-02-26 07:39:48 -0800
-Branch: REL9_4_STABLE [f28955e38] 2018-02-26 07:39:48 -0800
-Branch: REL9_3_STABLE [41ee473a4] 2018-02-26 07:39:48 -0800
--->
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [582edc369] 2018-02-26 07:39:44 -0800
-Branch: REL_10_STABLE [10d598354] 2018-02-26 07:39:47 -0800
-Branch: REL9_6_STABLE [e170b8c8c] 2018-02-26 07:39:48 -0800
-Branch: REL9_5_STABLE [91f3ffc52] 2018-02-26 07:39:48 -0800
-Branch: REL9_4_STABLE [928bca1a3] 2018-02-26 07:39:48 -0800
-Branch: REL9_3_STABLE [3db38b0ce] 2018-02-26 07:39:48 -0800
-Author: Noah Misch <noah@leadboat.com>
-Branch: REL9_4_STABLE [461c32b55] 2018-02-26 07:39:48 -0800
-Branch: REL9_3_STABLE [de8ffd666] 2018-02-26 07:39:48 -0800
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3d2aed664] 2018-02-26 10:18:21 -0500
-Branch: REL_10_STABLE [b8a2908f0] 2018-02-26 10:18:22 -0500
-Branch: REL9_6_STABLE [815172ba8] 2018-02-26 10:18:22 -0500
-Branch: REL9_5_STABLE [a8fc37a63] 2018-02-26 10:18:22 -0500
-Branch: REL9_4_STABLE [9f6e5296a] 2018-02-26 10:18:22 -0500
-Branch: REL9_3_STABLE [fe8b95b7e] 2018-02-26 10:18:22 -0500
--->
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [bc1adc651] 2018-02-23 22:13:21 -0500
-Branch: REL_10_STABLE [b9bf23abb] 2018-02-23 22:09:26 -0500
--->
- <para>
- Prevent logical replication from trying to ship changes for
- unpublishable relations (Peter Eisentraut)
- </para>
-
- <para>
- A publication marked <literal>FOR ALL TABLES</literal> would
- incorrectly ship changes in materialized views
- and <structname>information_schema</structname> tables, which are
- supposed to be omitted from the change stream.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [159efe4af] 2018-02-19 16:00:31 -0500
-Branch: REL_10_STABLE [517e0fe86] 2018-02-19 16:00:18 -0500
-Branch: REL9_6_STABLE [795f2112e] 2018-02-19 16:00:18 -0500
-Branch: REL9_5_STABLE [340d63bfb] 2018-02-19 16:00:18 -0500
-Branch: REL9_4_STABLE [e11b6488e] 2018-02-19 16:00:18 -0500
-Branch: REL9_3_STABLE [ea6d67cf8] 2018-02-19 16:00:18 -0500
--->
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9afd513df] 2018-02-23 13:47:33 -0500
-Branch: REL_10_STABLE [c458970ad] 2018-02-23 13:47:33 -0500
-Branch: REL9_6_STABLE [e7c02a54a] 2018-02-23 13:47:33 -0500
-Branch: REL9_5_STABLE [7dc5f316f] 2018-02-23 13:47:33 -0500
-Branch: REL9_4_STABLE [f6dd08489] 2018-02-23 13:47:33 -0500
-Branch: REL9_3_STABLE [71a0d0c5a] 2018-02-23 13:47:33 -0500
--->
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [38b41f182] 2018-02-21 18:40:24 -0500
-Branch: REL_10_STABLE [5ab5d21aa] 2018-02-21 18:40:24 -0500
-Branch: REL9_6_STABLE [66e203c85] 2018-02-21 18:40:24 -0500
-Branch: REL9_5_STABLE [9936f1499] 2018-02-21 18:40:24 -0500
-Branch: REL9_4_STABLE [2d12c5593] 2018-02-21 18:40:24 -0500
-Branch: REL9_3_STABLE [d3b0a23a2] 2018-02-21 18:40:24 -0500
--->
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3486bcf9e] 2018-02-20 11:23:42 -0500
-Branch: REL_10_STABLE [6753f6c41] 2018-02-20 11:23:34 -0500
--->
- <para>
- Fix incorrect <application>pg_dump</application> output for some
- non-default sequence limit values (Alexey Bashtanov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5c9f2564f] 2018-02-11 13:24:15 -0500
-Branch: REL_10_STABLE [1298fccef] 2018-02-11 13:24:15 -0500
--->
- <para>
- Fix <application>pg_dump</application>'s mishandling
- of <literal>STATISTICS</literal> objects (Tom Lane)
- </para>
-
- <para>
- An extended statistics object's schema was mislabeled in the dump's
- table of contents, possibly leading to the wrong results in a
- schema-selective restore. Its ownership was not correctly restored,
- either. Also, change the logic so that statistics objects are
- dumped/restored, or not, as independent objects rather than tying
- them to the dump/restore decision for the table they are on. The
- original definition could not scale to the planned future extension to
- cross-table statistics.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e748e902d] 2018-02-14 14:47:18 -0500
-Branch: REL_10_STABLE [4081e1136] 2018-02-14 14:47:18 -0500
-Branch: REL9_6_STABLE [0a2381d13] 2018-02-14 14:47:18 -0500
-Branch: REL9_5_STABLE [db1c597f3] 2018-02-14 14:47:18 -0500
-Branch: REL9_4_STABLE [bd8718637] 2018-02-14 14:47:18 -0500
-Branch: REL9_3_STABLE [457e9e88e] 2018-02-14 14:47:18 -0500
--->
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8af87f411] 2018-02-23 14:39:17 -0500
-Branch: REL_10_STABLE [0222e897d] 2018-02-23 14:39:18 -0500
-Branch: REL9_6_STABLE [be87cd2a0] 2018-02-23 14:39:20 -0500
-Branch: REL9_5_STABLE [753875ed4] 2018-02-23 14:39:21 -0500
-Branch: REL9_4_STABLE [3ba503bde] 2018-02-23 14:39:22 -0500
-Branch: REL9_3_STABLE [a7a6051cf] 2018-02-23 14:39:23 -0500
--->
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [935dee9ad] 2018-02-09 15:54:45 -0500
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL_10_STABLE [2ff2baa22] 2018-02-22 12:54:45 -0800
-Branch: REL9_6_STABLE [83fce670e] 2018-02-22 12:58:43 -0800
--->
- <para>
- Mark assorted GUC variables as <literal>PGDLLIMPORT</literal>, to
- ease porting extension modules to Windows (Metin Doslu)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10-2">
- <title>Release 10.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.1.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.2</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However,
- if you use <filename>contrib/cube</filename>'s <literal>~&gt;</literal>
- operator, see the entry below about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 10.1,
- see <xref linkend="release-10-1"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3492a0af0] 2018-02-05 10:37:30 -0500
-Branch: REL_10_STABLE [fe921a360] 2018-02-05 10:37:30 -0500
--->
- <para>
- Fix processing of partition keys containing multiple expressions
- (&Aacute;lvaro Herrera, David Rowley)
- </para>
-
- <para>
- This error led to crashes or, with carefully crafted input, disclosure
- of arbitrary backend memory.
- (CVE-2018-1052)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a926eb84e] 2018-02-05 10:58:27 -0500
-Branch: REL_10_STABLE [6ba52aeb2] 2018-02-05 10:58:27 -0500
-Branch: REL9_6_STABLE [1341e017d] 2018-02-05 10:58:27 -0500
-Branch: REL9_5_STABLE [17aa02368] 2018-02-05 10:58:27 -0500
-Branch: REL9_4_STABLE [c3456208d] 2018-02-05 10:58:27 -0500
-Branch: REL9_3_STABLE [9c59e48a2] 2018-02-05 10:58:27 -0500
--->
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [9c2f0a6c3] 2017-12-14 18:20:47 -0800
-Branch: REL_10_STABLE [1224383e8] 2017-12-14 18:20:48 -0800
-Branch: REL9_6_STABLE [937494c0e] 2017-12-14 18:20:48 -0800
-Branch: REL9_5_STABLE [32c0295b1] 2017-12-14 18:20:48 -0800
-Branch: REL9_4_STABLE [4eff5a8c9] 2017-12-14 18:20:48 -0800
-Branch: REL9_3_STABLE [387abe870] 2017-12-14 18:20:48 -0800
--->
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [ad25a6b1f] 2018-02-01 15:23:45 -0500
-Branch: REL_10_STABLE [b94988fad] 2018-02-01 15:31:31 -0500
--->
- <para>
- Fix failure to mark a hash index's metapage dirty after
- adding a new overflow page, potentially leading to index corruption
- (Lixian Zou, Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [3b2787e1f] 2017-11-16 14:19:27 -0500
-Branch: REL_10_STABLE [c8df4831e] 2017-11-16 15:24:19 -0500
-Branch: REL9_6_STABLE [19648ce55] 2017-11-16 15:26:49 -0500
--->
- <para>
- Ensure that vacuum will always clean up the pending-insertions list of
- a GIN index (Masahiko Sawada)
- </para>
-
- <para>
- This is necessary to ensure that dead index entries get removed.
- The old code got it backwards, allowing vacuum to skip the cleanup if
- some other process were running cleanup concurrently, thus risking
- invalid entries being left behind in the index.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [272c2ab9f] 2018-01-09 17:06:31 -0300
-Branch: REL_10_STABLE [37dd11281] 2018-01-09 17:08:10 -0300
-Branch: REL9_6_STABLE [012683866] 2018-01-09 17:07:47 -0300
-Branch: REL9_5_STABLE [38a23790e] 2018-01-09 17:07:36 -0300
-Branch: REL9_4_STABLE [c61879640] 2018-01-09 17:07:24 -0300
-Branch: REL9_3_STABLE [469fa9ad6] 2018-01-09 17:07:00 -0300
--->
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [90947674f] 2018-01-12 12:24:50 -0500
-Branch: REL_10_STABLE [d3ca1a6c3] 2018-01-12 12:24:50 -0500
-Branch: REL9_6_STABLE [6520d4a96] 2018-01-12 12:24:50 -0500
-Branch: REL9_5_STABLE [ff99d7761] 2018-01-12 12:24:50 -0500
--->
- <para>
- Fix incorrect query results from cases involving flattening of
- subqueries whose outputs are used in <literal>GROUPING SETS</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [3ccdc6f9a] 2018-01-31 15:43:11 -0500
-Branch: REL_10_STABLE [86fba2865] 2018-01-31 16:08:39 -0500
--->
- <para>
- Fix handling of list partitioning constraints for partition keys of
- boolean or array types (Amit Langote)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [680d54050] 2018-01-12 15:46:37 -0500
-Branch: REL_10_STABLE [55e5eb4d9] 2018-01-12 15:46:37 -0500
-Branch: REL9_6_STABLE [c2a7044a5] 2018-01-12 15:46:37 -0500
-Branch: REL9_5_STABLE [a99922f96] 2018-01-12 15:46:37 -0500
-Branch: REL9_4_STABLE [8b0e5e7e7] 2018-01-12 15:46:38 -0500
-Branch: REL9_3_STABLE [4e7170058] 2018-01-12 15:46:38 -0500
--->
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [54eff5311] 2018-01-02 19:16:16 -0300
-Branch: REL_10_STABLE [6d2a9ae0e] 2018-01-02 19:16:16 -0300
-Branch: REL9_6_STABLE [fb7b43903] 2018-01-02 19:16:16 -0300
-Branch: REL9_5_STABLE [82f1c3b7d] 2018-01-02 19:16:16 -0300
-Branch: REL9_4_STABLE [47a3a1317] 2018-01-02 19:16:16 -0300
--->
- <para>
- Fix spurious deadlock failures when multiple sessions are
- running <command>CREATE INDEX CONCURRENTLY</command> (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [ad337c76b] 2017-12-27 18:25:37 +0300
-Branch: REL_10_STABLE [bdbf29aae] 2017-12-27 18:26:58 +0300
--->
- <para>
- During <command>VACUUM FULL</command>, update the table's size fields
- in <structname>pg_class</structname> sooner (Amit Kapila)
- </para>
-
- <para>
- This prevents poor behavior when rebuilding hash indexes on the
- table, since those use the <structname>pg_class</structname>
- statistics to govern the initial hash size.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c4c2885cb] 2017-12-22 12:08:06 -0500
-Branch: REL_10_STABLE [c252ccda7] 2017-12-22 12:08:18 -0500
--->
- <para>
- Fix
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>
- over zero columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [005ac298b] 2017-12-08 12:13:04 -0500
-Branch: REL_10_STABLE [a2c6cf366] 2017-12-08 12:25:41 -0500
--->
- <para>
- Disallow identity columns on typed tables and partitions
- (Michael Paquier)
- </para>
-
- <para>
- These cases will be treated as unsupported features for now.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [2d2d06b7e] 2017-12-08 09:18:18 -0500
-Branch: REL_10_STABLE [ee5b59549] 2017-12-08 09:39:55 -0500
-Branch: master [533c5d8bd] 2018-02-02 14:39:10 -0500
-Branch: REL_10_STABLE [1597948c9] 2018-02-02 15:06:52 -0500
--->
- <para>
- Fix assorted failures to apply the correct default value when
- inserting into an identity column (Michael Paquier, Peter Eisentraut)
- </para>
-
- <para>
- In several contexts, notably <command>COPY</command>
- and <command>ALTER TABLE ADD COLUMN</command>, the expected default
- value was not applied and instead a null value was inserted.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9a785ad57] 2017-11-27 17:54:07 -0500
-Branch: REL_10_STABLE [a57aa430b] 2017-11-27 17:54:09 -0500
-Branch: REL9_6_STABLE [06ba53096] 2017-11-27 17:54:10 -0500
-Branch: REL9_5_STABLE [39f180fdd] 2017-11-27 17:54:11 -0500
--->
- <para>
- Fix failures when an inheritance tree contains foreign child tables
- (Etsuro Fujita)
- </para>
-
- <para>
- A mix of regular and foreign tables in an inheritance tree resulted in
- creation of incorrect plans for <command>UPDATE</command>
- and <command>DELETE</command> queries. This led to visible failures in
- some cases, notably when there are row-level triggers on a foreign
- child table.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9b63c13f0] 2017-11-25 14:15:48 -0500
-Branch: REL_10_STABLE [5dc7faa91] 2017-11-25 14:15:48 -0500
-Branch: REL9_6_STABLE [497e79b96] 2017-11-25 14:15:48 -0500
-Branch: REL9_5_STABLE [ae6ed0784] 2017-11-25 14:15:48 -0500
-Branch: REL9_4_STABLE [2e105cf6d] 2017-11-25 14:15:48 -0500
-Branch: REL9_3_STABLE [d538f6568] 2017-11-25 14:15:48 -0500
--->
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bb94ce4d2] 2018-01-23 16:50:34 -0500
-Branch: REL_10_STABLE [c5e59bb60] 2018-01-23 16:50:34 -0500
-Branch: REL9_6_STABLE [ae3699a6a] 2018-01-23 16:50:35 -0500
-Branch: REL9_5_STABLE [8a2228b2f] 2018-01-23 16:50:35 -0500
-Branch: REL9_4_STABLE [54e1599c7] 2018-01-23 16:50:35 -0500
-Branch: REL9_3_STABLE [b100a5274] 2018-01-23 16:50:35 -0500
--->
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ecc27d55f] 2017-12-04 11:51:43 -0500
-Branch: REL_10_STABLE [bf2b317f1] 2017-12-04 11:51:43 -0500
--->
- <para>
- Allow functional dependency statistics to be used for boolean columns
- (Tom Lane)
- </para>
-
- <para>
- Previously, although extended statistics could be declared and
- collected on boolean columns, the planner failed to apply them.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [df3a66e28] 2017-11-25 11:48:09 -0500
-Branch: REL_10_STABLE [b9fc2d0b9] 2017-11-25 11:48:09 -0500
--->
- <para>
- Avoid underestimating the number of groups emitted by subqueries
- containing set-returning functions in their grouping columns (Tom Lane)
- </para>
-
- <para>
- Cases similar to <literal>SELECT DISTINCT unnest(foo)</literal> got a
- lower output rowcount estimate in 10.0 than they did in earlier
- releases, possibly resulting in unfavorable plan choices. Restore the
- prior estimation behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [7e17a6889] 2017-11-22 16:28:14 +1100
-Branch: REL_10_STABLE [7015bb389] 2017-11-28 09:37:22 +0000
--->
- <para>
- Fix use of triggers in logical replication workers (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [df9f682c7] 2018-01-05 12:17:10 -0300
-Branch: REL_10_STABLE [a19c262f3] 2018-01-05 12:17:10 -0300
-Branch: REL9_6_STABLE [9a5e4a6e0] 2018-01-05 12:17:10 -0300
-Branch: REL9_5_STABLE [132cd58d6] 2018-01-05 12:17:10 -0300
-Branch: REL9_4_STABLE [f68c49f86] 2018-01-05 12:17:10 -0300
--->
- <para>
- Fix logical decoding to correctly clean up disk files for crashed
- transactions (Atsushi Torikoshi)
- </para>
-
- <para>
- Logical decoding may spill WAL records to disk for transactions
- generating many WAL records. Normally these files are cleaned up
- after the transaction's commit or abort record arrives; but if
- no such record is ever seen, the removal code misbehaved.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [0fedb4ea6] 2017-12-14 11:13:14 -0500
-Branch: REL_10_STABLE [14c15b1f4] 2017-12-14 11:29:34 -0500
-Branch: REL9_6_STABLE [c28e0b1e0] 2017-12-14 11:31:13 -0500
-Branch: REL9_5_STABLE [87056267e] 2017-12-14 11:32:00 -0500
-Branch: REL9_4_STABLE [f5c7e0cdd] 2017-12-14 11:32:25 -0500
--->
- <para>
- Fix walsender timeout failure and failure to respond to interrupts
- when processing a large transaction (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8a906204a] 2018-01-09 12:09:30 -0500
-Branch: REL_10_STABLE [1f5adbd79] 2018-01-09 12:09:30 -0500
--->
- <para>
- Fix race condition during replication origin drop that could allow the
- dropping process to wait indefinitely (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [6668a54eb] 2018-01-06 11:48:21 +0000
-Branch: REL_10_STABLE [76e117dbe] 2018-01-28 16:14:31 +0000
--->
- <para>
- Allow members of the <literal>pg_read_all_stats</literal> role to see
- walsender statistics in the <structname>pg_stat_replication</structname>
- view (Feike Steenbergen)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [d02974e32] 2017-12-29 16:28:32 +0100
-Branch: REL_10_STABLE [b38c3d58e] 2017-12-29 16:22:43 +0100
--->
- <para>
- Show walsenders that are sending base backups as active in
- the <structname>pg_stat_activity</structname> view (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [38d485fda] 2018-01-30 16:50:30 -0500
-Branch: REL_10_STABLE [167a22b2a] 2018-01-30 17:05:35 -0500
--->
- <para>
- Fix reporting of <literal>scram-sha-256</literal> authentication
- method in the <structname>pg_hba_file_rules</structname> view
- (Michael Paquier)
- </para>
-
- <para>
- Previously this was printed as <literal>scram-sha256</literal>,
- possibly confusing users as to the correct spelling.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [752714dd9] 2017-11-26 09:49:40 -0800
-Branch: REL_10_STABLE [9e051b674] 2017-11-26 09:50:00 -0800
-Branch: REL9_6_STABLE [997015ef2] 2017-11-26 09:50:15 -0800
-Branch: REL9_5_STABLE [db714c62b] 2017-11-26 09:50:27 -0800
-Branch: REL9_4_STABLE [d8d9c97cd] 2017-11-26 09:50:42 -0800
-Branch: REL9_3_STABLE [69e5b1e9c] 2017-11-26 09:50:53 -0800
--->
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [2918fcedb] 2017-11-11 11:10:53 -0800
-Branch: REL_10_STABLE [30a5e940a] 2017-11-11 11:11:15 -0800
-Branch: REL9_6_STABLE [46fb15f48] 2017-11-11 11:11:19 -0800
-Branch: REL9_5_STABLE [e7083dfce] 2017-11-11 11:11:21 -0800
-Branch: REL9_4_STABLE [2f4061aff] 2017-11-11 11:11:24 -0800
-Branch: REL9_3_STABLE [d8406b9de] 2017-11-11 11:11:28 -0800
-Branch: master [4b865aee2] 2017-11-11 13:07:46 -0800
-Branch: REL_10_STABLE [075ced2a4] 2017-11-11 13:07:54 -0800
-Branch: REL9_6_STABLE [742471ef9] 2017-11-11 13:07:55 -0800
-Branch: REL9_5_STABLE [739f1f6ac] 2017-11-11 13:07:55 -0800
-Branch: REL9_4_STABLE [e48fb50d8] 2017-11-11 13:07:55 -0800
-Branch: REL9_3_STABLE [f5260d5ad] 2017-11-11 13:07:55 -0800
--->
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [ae65f6066] 2017-11-21 13:56:24 -0500
-Branch: REL_10_STABLE [5b2a87707] 2017-11-21 14:03:51 -0500
-Branch: REL9_6_STABLE [7c84bc0b3] 2017-11-21 14:30:33 -0500
-Branch: REL9_5_STABLE [c703aa625] 2017-11-21 14:34:26 -0500
-Branch: REL9_4_STABLE [294136d42] 2017-11-21 14:38:29 -0500
-Branch: REL9_3_STABLE [aa3a78c3d] 2017-11-21 14:45:29 -0500
--->
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: REL_10_STABLE [218b024a7] 2017-12-08 10:17:46 -0500
--->
- <para>
- Allow a client that supports SCRAM channel binding (such as v11 or
- later <application>libpq</application>) to connect to a v10 server
- (Michael Paquier)
- </para>
-
- <para>
- v10 does not have this feature, and the connection-time negotiation
- about whether to use it was done incorrectly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aced5a92b] 2018-01-05 19:21:30 -0500
-Branch: REL_10_STABLE [1c77e9908] 2018-01-05 19:21:30 -0500
--->
- <para>
- Avoid live-lock in <function>ConditionVariableBroadcast()</function>
- (Tom Lane, Thomas Munro)
- </para>
-
- <para>
- Given repeatedly-unlucky timing, a process attempting to awaken all
- waiters for a condition variable could loop indefinitely. Due to the
- limited usage of condition variables in v10, this affects only
- parallel index scans and some operations on replication slots.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [59d1e2b95] 2017-12-21 09:24:30 -0500
-Branch: REL_10_STABLE [f3decdc94] 2017-12-21 09:24:48 -0500
--->
- <para>
- Clean up waits for condition variables correctly during subtransaction
- abort (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [80259d4db] 2018-01-09 12:34:57 -0500
-Branch: REL_10_STABLE [d56a5f994] 2018-01-09 12:34:46 -0500
--->
- <para>
- Ensure that child processes that are waiting for a condition variable
- will exit promptly if the postmaster process dies (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [fd7c0fa73] 2017-12-18 12:22:31 -0500
-Branch: REL_10_STABLE [b70ea4c75] 2017-12-18 12:31:10 -0500
--->
- <para>
- Fix crashes in parallel queries using more than one Gather node
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [884a60840] 2017-12-13 16:15:44 -0500
-Branch: REL_10_STABLE [192ffe1cb] 2017-12-13 16:09:00 -0500
--->
- <para>
- Fix hang in parallel index scan when processing a deleted or half-dead
- index page (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [c6755e233] 2017-11-28 11:44:59 -0500
-Branch: REL_10_STABLE [ec7629dfb] 2017-11-28 11:49:01 -0500
--->
- <para>
- Avoid crash if parallel bitmap heap scan is unable to allocate a
- shared memory segment (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [28724fd90] 2017-12-06 08:58:27 -0500
-Branch: REL_10_STABLE [a8ef4e81e] 2017-12-06 09:01:21 -0500
-Branch: REL9_6_STABLE [b75644066] 2017-12-06 09:04:02 -0500
-Branch: REL9_5_STABLE [0426a77ce] 2017-12-06 09:06:25 -0500
-Branch: REL9_4_STABLE [facd94e72] 2017-12-06 09:08:30 -0500
-Branch: master [2badb5afb] 2018-01-23 11:03:03 -0500
-Branch: REL_10_STABLE [383e4268f] 2018-01-23 11:13:42 -0500
-Branch: REL9_6_STABLE [2843c01a5] 2018-01-23 11:13:50 -0500
--->
- <para>
- Cope with failure to start a parallel worker process
- (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- Parallel query previously tended to hang indefinitely if a worker
- could not be started, as the result of <literal>fork()</literal>
- failure or other low-probability problems.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [445dbd82a] 2017-11-28 12:15:38 -0500
-Branch: REL_10_STABLE [dba6e75c1] 2017-11-28 12:19:19 -0500
--->
- <para>
- Avoid unnecessary failure when no parallel workers can be obtained
- during parallel query startup (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [8526bcb2d] 2017-12-19 12:21:56 -0500
-Branch: REL_10_STABLE [72567f617] 2017-12-19 12:44:21 -0500
-Branch: REL9_6_STABLE [2157a61b5] 2018-01-04 12:46:00 -0500
--->
- <para>
- Fix collection of <command>EXPLAIN</command> statistics from parallel
- workers (Amit Kapila, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [f94eec490] 2017-12-20 17:26:50 -0500
-Branch: REL_10_STABLE [7be0d775a] 2017-12-20 17:27:25 -0500
--->
- <para>
- Ensure that query strings passed to parallel workers are correctly
- null-terminated (Thomas Munro)
- </para>
-
- <para>
- This prevents emitting garbage in postmaster log output from such
- workers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [751804998] 2017-11-14 15:03:55 -0500
-Branch: REL_10_STABLE [619a8c47d] 2017-11-14 17:49:49 -0500
-Branch: REL9_6_STABLE [4a15f87d2] 2017-11-14 17:49:49 -0500
-Branch: REL9_5_STABLE [d4e38489f] 2017-11-14 17:49:49 -0500
--->
- <para>
- Avoid unsafe alignment assumptions when working
- with <type>__int128</type> (Tom Lane)
- </para>
-
- <para>
- Typically, compilers assume that <type>__int128</type> variables are
- aligned on 16-byte boundaries, but our memory allocation
- infrastructure isn't prepared to guarantee that, and increasing the
- setting of MAXALIGN seems infeasible for multiple reasons. Adjust the
- code to allow use of <type>__int128</type> only when we can tell the
- compiler to assume lesser alignment. The only known symptom of this
- problem so far is crashes in some parallel aggregation queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [35a528062] 2018-01-28 13:39:07 -0500
-Branch: REL_10_STABLE [1b2a3860d] 2018-01-28 13:39:07 -0500
-Branch: REL9_6_STABLE [4e9fb4bfe] 2018-01-28 13:39:07 -0500
-Branch: REL9_5_STABLE [e194f1383] 2018-01-28 13:39:07 -0500
-Branch: REL9_4_STABLE [06efc5cf5] 2018-01-28 13:39:07 -0500
-Branch: REL9_3_STABLE [c03fc8462] 2018-01-28 13:39:07 -0500
--->
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2e668c522] 2018-01-27 13:52:24 -0500
-Branch: REL_10_STABLE [78433f41f] 2018-01-27 13:52:24 -0500
--->
- <para>
- Avoid crash during an EvalPlanQual recheck of an indexscan that is the
- inner child of a merge join (Tom Lane)
- </para>
-
- <para>
- This could only happen during an update or <command>SELECT FOR
- UPDATE</command> of a join, when there is a concurrent update of some
- selected row.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [414cd434f] 2017-11-28 23:40:11 -0300
-Branch: REL_10_STABLE [d4607590b] 2017-11-28 23:42:42 -0300
--->
- <para>
- Fix crash in autovacuum when extended statistics are defined
- for a table but can't be computed (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [0c98d0dd5] 2017-11-10 14:21:32 -0500
-Branch: REL_10_STABLE [f9e2885d5] 2017-11-10 14:27:51 -0500
-Branch: REL9_6_STABLE [d380d080f] 2017-11-10 14:29:13 -0500
-Branch: REL9_5_STABLE [9efd83bfd] 2017-11-10 14:30:06 -0500
-Branch: REL9_4_STABLE [0bcdab58e] 2017-11-10 14:30:34 -0500
-Branch: REL9_3_STABLE [62906461c] 2017-11-10 14:30:48 -0500
--->
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [ab9f2c429] 2018-01-29 11:24:57 -0800
-Branch: REL_10_STABLE [d1aac2998] 2018-01-29 11:24:57 -0800
-Branch: master [c068f8772] 2018-01-29 11:24:57 -0800
-Branch: REL_10_STABLE [d18d4bca8] 2018-01-29 11:24:57 -0800
-Branch: REL_10_STABLE [c0fda304d] 2018-01-29 11:24:57 -0800
--->
- <para>
- Prevent out-of-memory failures due to excessive growth of simple hash
- tables (Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3c1e9fd23] 2018-01-10 17:13:47 -0500
-Branch: REL_10_STABLE [08adf688f] 2018-01-10 17:13:29 -0500
-Branch: REL9_6_STABLE [122605194] 2018-01-10 17:13:29 -0500
-Branch: REL9_5_STABLE [10bcd4165] 2018-01-10 17:13:29 -0500
-Branch: REL9_4_STABLE [493cdc8ee] 2018-01-10 17:13:29 -0500
-Branch: REL9_3_STABLE [45bfef7fb] 2018-01-10 17:13:29 -0500
--->
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2b792ab09] 2018-01-22 12:06:18 -0500
-Branch: REL_10_STABLE [46246fd9d] 2018-01-22 12:06:18 -0500
-Branch: REL9_6_STABLE [52cc1b484] 2018-01-22 12:06:19 -0500
-Branch: REL9_5_STABLE [367e2b230] 2018-01-22 12:06:19 -0500
-Branch: REL9_4_STABLE [da83ca7d9] 2018-01-22 12:06:19 -0500
-Branch: REL9_3_STABLE [ef115621c] 2018-01-22 12:06:19 -0500
--->
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [3e68686e2] 2018-01-03 12:40:32 -0800
-Branch: REL_10_STABLE [e3fdb7c00] 2018-01-03 12:39:59 -0800
-Branch: REL9_6_STABLE [ceee51e38] 2018-01-03 12:39:59 -0800
-Branch: REL9_5_STABLE [ea4cbf8f1] 2018-01-03 12:39:59 -0800
--->
- <para>
- Rename <application>pg_rewind</application>'s
- <function>copy_file_range</function> function to avoid conflict
- with new Linux system call of that name (Andres Freund)
- </para>
-
- <para>
- This change prevents build failures with newer glibc versions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [649aeb123] 2018-01-13 14:57:49 +0100
-Branch: REL_10_STABLE [8b89b7aac] 2018-01-15 10:00:56 +0100
-Branch: REL9_6_STABLE [f082ef836] 2018-01-15 10:01:15 +0100
-Branch: REL9_5_STABLE [4eae1e6f5] 2018-01-15 10:02:03 +0100
-Branch: REL9_4_STABLE [2c1c4b060] 2018-01-15 10:02:16 +0100
-Branch: REL9_3_STABLE [a0f5890a6] 2018-01-15 10:02:23 +0100
--->
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [563a053bd] 2018-01-11 14:41:14 +0300
-Branch: REL_10_STABLE [b8279a783] 2018-01-11 14:42:16 +0300
-Branch: REL9_6_STABLE [bda5281fd] 2018-01-11 14:43:13 +0300
--->
- <para>
- Change the behavior of <filename>contrib/cube</filename>'s
- <type>cube</type> <literal>~&gt;</literal> <type>int</type>
- operator to make it compatible with KNN search (Alexander Korotkov)
- </para>
-
- <para>
- The meaning of the second argument (the dimension selector) has been
- changed to make it predictable which value is selected even when
- dealing with cubes of varying dimensionalities.
- </para>
-
- <para>
- This is an incompatible change, but since the point of the operator
- was to be used in KNN searches, it seems rather useless as-is.
- After installing this update, any expression indexes or materialized
- views using this operator will need to be reindexed/refreshed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d3f4e8a8a] 2017-11-25 14:42:10 -0500
-Branch: REL_10_STABLE [ddba32005] 2017-11-25 14:42:25 -0500
-Branch: REL9_6_STABLE [630aceda5] 2017-11-25 14:42:32 -0500
-Branch: REL9_5_STABLE [47226971e] 2017-11-25 14:42:36 -0500
-Branch: REL9_4_STABLE [5c38ddebd] 2017-11-25 14:42:41 -0500
-Branch: REL9_3_STABLE [6e9ac0a2e] 2017-11-25 14:42:46 -0500
--->
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [39cfe8619] 2018-01-04 14:59:00 -0500
-Branch: REL_10_STABLE [5ad1b1728] 2018-01-04 14:59:00 -0500
-Branch: REL9_6_STABLE [ad592f4a6] 2018-01-04 14:59:00 -0500
-Branch: master [18869e202] 2018-01-04 16:00:21 -0500
-Branch: REL_10_STABLE [0dc5dfcd7] 2018-01-04 15:59:30 -0500
--->
- <para>
- Fix incorrect display of tuples' null bitmaps
- in <filename>contrib/pageinspect</filename> (Maksim Milyutin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [b0313f9cc] 2018-01-26 09:56:33 -0500
-Branch: REL_10_STABLE [51fc1b09a] 2018-01-26 09:59:14 -0500
--->
- <para>
- Fix incorrect output from <filename>contrib/pageinspect</filename>'s
- <function>hash_page_items()</function> function (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [4bbf6edfb] 2018-01-17 16:18:39 -0500
-Branch: REL_10_STABLE [3f05a30b5] 2018-01-17 16:57:53 -0500
-Branch: REL9_6_STABLE [4a81c0229] 2018-01-17 17:09:20 -0500
-Branch: master [99f6a17dd] 2018-01-30 14:44:30 -0500
-Branch: REL_10_STABLE [92123c6ea] 2018-01-30 14:47:02 -0500
-Branch: REL9_6_STABLE [d397f558d] 2018-01-30 14:55:14 -0500
--->
- <para>
- In <filename>contrib/postgres_fdw</filename>, avoid
- <quote>outer pathkeys do not match mergeclauses</quote>
- planner error when constructing a plan involving a remote join
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e9f2703ab] 2018-01-12 16:52:49 -0500
-Branch: REL_10_STABLE [67854bc59] 2018-01-12 16:52:49 -0500
--->
- <para>
- In <filename>contrib/postgres_fdw</filename>, avoid planner failure
- when there are duplicate <literal>GROUP BY</literal> entries
- (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ac3b96268] 2017-11-17 12:46:52 -0500
-Branch: REL_10_STABLE [6313995c2] 2017-11-17 12:47:11 -0500
-Branch: REL9_6_STABLE [0d9243903] 2017-11-17 12:47:21 -0500
-Branch: REL9_5_STABLE [9508d422b] 2017-11-17 12:47:29 -0500
-Branch: REL9_4_STABLE [7d98dc133] 2017-11-17 12:47:36 -0500
-Branch: REL9_3_STABLE [77b76fea9] 2017-11-17 12:47:44 -0500
--->
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [99d5a3ffb] 2018-01-03 15:36:54 -0500
-Branch: REL_10_STABLE [0fb69340b] 2018-01-03 15:33:12 -0500
-Branch: REL9_6_STABLE [85cdcde1f] 2018-01-03 15:33:32 -0500
-Branch: REL9_5_STABLE [d329d2d3e] 2018-01-03 15:33:47 -0500
-Branch: REL9_4_STABLE [2d03daa7b] 2018-01-03 15:34:02 -0500
-Branch: REL9_3_STABLE [5404145c5] 2018-01-03 15:34:21 -0500
--->
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [84c4313c6] 2017-11-23 20:22:04 -0800
-Branch: REL_10_STABLE [f16a0958d] 2017-11-23 20:22:24 -0800
-Branch: REL9_6_STABLE [1695ce068] 2017-11-23 20:24:53 -0800
-Branch: REL9_5_STABLE [da8eae56e] 2017-11-23 20:25:08 -0800
-Branch: REL9_4_STABLE [558f62079] 2017-11-23 20:29:48 -0800
-Branch: REL9_3_STABLE [83e6b1434] 2017-11-23 20:32:01 -0800
-Branch: master [7e0c574ee] 2017-12-09 00:58:55 -0800
-Branch: REL_10_STABLE [e2cc65050] 2017-12-09 00:58:58 -0800
-Branch: REL9_6_STABLE [055532bad] 2017-12-09 00:58:58 -0800
-Branch: REL9_5_STABLE [470de6a24] 2017-12-09 00:58:59 -0800
-Branch: REL9_4_STABLE [d78c3ca0e] 2017-12-09 00:58:59 -0800
-Branch: REL9_3_STABLE [70dc7ad58] 2017-12-09 00:58:59 -0800
--->
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [65a00f303] 2017-12-08 18:06:05 -0800
-Branch: REL_10_STABLE [9b5c99790] 2017-12-08 18:06:22 -0800
-Branch: REL9_6_STABLE [140fa2fba] 2017-12-08 18:06:25 -0800
-Branch: REL9_5_STABLE [1c1a572d0] 2017-12-08 18:06:29 -0800
-Branch: REL9_4_STABLE [aed8d41af] 2017-12-08 18:13:49 -0800
-Branch: REL9_3_STABLE [188689942] 2017-12-08 18:14:08 -0800
--->
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [cbfffee41] 2017-11-12 14:31:00 -0800
-Branch: REL_10_STABLE [d6387e27e] 2017-11-12 14:31:04 -0800
-Branch: REL9_6_STABLE [8c92e66f1] 2017-11-12 14:31:04 -0800
-Branch: REL9_5_STABLE [b2df91f2f] 2017-11-12 14:31:04 -0800
-Branch: REL9_4_STABLE [e17b38db6] 2017-11-12 14:31:04 -0800
-Branch: REL9_3_STABLE [1c065901e] 2017-11-12 14:31:05 -0800
--->
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [e02571b73] 2017-11-12 13:03:15 -0800
-Branch: REL_10_STABLE [dcbec53f4] 2017-11-12 13:03:28 -0800
-Branch: REL9_6_STABLE [fd5da32fc] 2017-11-12 13:03:28 -0800
-Branch: REL9_5_STABLE [d74db7a35] 2017-11-12 13:03:28 -0800
-Branch: REL9_4_STABLE [19cf9e96a] 2017-11-12 13:03:29 -0800
-Branch: REL9_3_STABLE [30e99efe8] 2017-11-12 13:05:55 -0800
--->
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [84669c9b0] 2017-11-20 18:05:17 -0500
-Branch: REL_10_STABLE [ae772bbf9] 2017-11-20 18:05:02 -0500
-Branch: REL9_6_STABLE [fa9a69d3d] 2017-11-20 18:05:02 -0500
-Branch: REL9_5_STABLE [2cfafabe6] 2017-11-20 18:05:02 -0500
-Branch: REL9_4_STABLE [13f2bdb63] 2017-11-20 18:05:03 -0500
-Branch: REL9_3_STABLE [1056dd0e9] 2017-11-20 18:05:03 -0500
--->
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f3bd00c01] 2017-11-20 18:05:17 -0500
-Branch: REL_10_STABLE [1ecf7eeb8] 2017-11-20 17:57:46 -0500
-Branch: REL9_6_STABLE [940bafa75] 2017-11-20 17:57:46 -0500
-Branch: REL9_5_STABLE [516cea4bb] 2017-11-20 17:57:46 -0500
-Branch: REL9_4_STABLE [8bd8b4b77] 2017-11-20 17:57:46 -0500
-Branch: REL9_3_STABLE [0245c75f4] 2017-11-20 17:57:46 -0500
--->
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [41fc04ff9] 2018-01-27 16:42:28 -0500
-Branch: REL_10_STABLE [2d71b2700] 2018-01-27 16:42:36 -0500
-Branch: REL9_6_STABLE [462402be8] 2018-01-27 16:42:44 -0500
-Branch: REL9_5_STABLE [b00e7555e] 2018-01-27 16:42:49 -0500
-Branch: REL9_4_STABLE [fa86a32f9] 2018-01-27 16:42:55 -0500
-Branch: REL9_3_STABLE [e5e2cc6f8] 2018-01-27 16:43:00 -0500
--->
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10-1">
- <title>Release 10.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 10.0.
- For information about new features in major release 10, see
- <xref linkend="release-10"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 10.1</title>
-
- <para>
- A dump/restore is not required for those running 10.X.
- </para>
-
- <para>
- However, if you use BRIN indexes, see the fourth changelog entry below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Dean Rasheed <dean.a.rasheed@gmail.com>
-Branch: master [87b2ebd35] 2017-11-06 09:19:22 +0000
-Branch: REL_10_STABLE [3f8089572] 2017-11-06 09:17:44 +0000
-Branch: REL9_6_STABLE [1f23d1cd2] 2017-11-06 09:16:24 +0000
-Branch: REL9_5_STABLE [045a18888] 2017-11-06 09:15:11 +0000
--->
- <para>
- Ensure that <literal>INSERT ... ON CONFLICT DO UPDATE</literal> checks
- table permissions and RLS policies in all cases (Dean Rasheed)
- </para>
-
- <para>
- The update path of <literal>INSERT ... ON CONFLICT DO UPDATE</literal>
- requires <literal>SELECT</literal> permission on the columns of the
- arbiter index, but it failed to check for that in the case of an
- arbiter specified by constraint name.
- In addition, for a table with row level security enabled, it failed to
- check updated rows against the table's <literal>SELECT</literal>
- policies (regardless of how the arbiter index was specified).
- (CVE-2017-15099)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b57422871] 2017-11-06 10:29:37 -0500
-Branch: REL_10_STABLE [c30f082d2] 2017-11-06 10:29:38 -0500
-Branch: REL9_6_STABLE [38e825632] 2017-11-06 10:29:39 -0500
-Branch: REL9_5_STABLE [d5fe5fb23] 2017-11-06 10:29:40 -0500
-Branch: REL9_4_STABLE [70846ee05] 2017-11-06 10:29:41 -0500
-Branch: REL9_3_STABLE [c0c8807de] 2017-11-06 10:29:42 -0500
--->
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [dfc015dcf] 2017-11-06 07:11:10 -0800
-Branch: REL_10_STABLE [6b0b983f7] 2017-11-06 07:11:13 -0800
-Branch: REL9_6_STABLE [b7d6f7507] 2017-11-06 07:11:13 -0800
-Branch: REL9_5_STABLE [ed546dd06] 2017-11-06 07:11:13 -0800
-Branch: REL9_4_STABLE [29d067051] 2017-11-06 07:11:13 -0800
-Branch: REL9_3_STABLE [b50029768] 2017-11-06 07:11:13 -0800
-Branch: REL9_2_STABLE [eda780281] 2017-11-06 07:11:13 -0800
--->
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [ec42a1dcb] 2017-11-03 17:23:13 +0100
-Branch: REL_10_STABLE [37a856567] 2017-11-03 17:23:13 +0100
-Branch: REL9_6_STABLE [bd8e2b3cf] 2017-11-03 17:23:13 +0100
-Branch: REL9_5_STABLE [cf0612aa2] 2017-11-03 17:23:13 +0100
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [1b890562b] 2017-11-03 20:45:36 +0100
-Branch: REL_10_STABLE [b17870d75] 2017-11-03 20:47:44 +0100
--->
- <para>
- Fix BRIN index summarization to handle concurrent table extension
- correctly (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously, a race condition allowed some table rows to be omitted from
- the index. It may be necessary to reindex existing BRIN indexes to
- recover from past occurrences of this problem.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [62a16572d] 2017-11-02 12:54:55 -0400
-Branch: REL_10_STABLE [97ba7b8c8] 2017-11-02 12:54:22 -0400
-Branch: REL9_6_STABLE [a43cd427e] 2017-11-02 12:54:23 -0400
-Branch: REL9_5_STABLE [43276abc6] 2017-11-02 12:54:23 -0400
--->
- <para>
- Fix possible failures during concurrent updates of a BRIN index
- (Tom Lane)
- </para>
-
- <para>
- These race conditions could result in errors like <quote>invalid index
- offnum</quote> or <quote>inconsistent range map</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [a9fce6672] 2017-11-03 12:27:59 -0400
-Branch: REL_10_STABLE [a14b52c61] 2017-11-03 12:28:08 -0400
--->
- <para>
- Prevent logical replication from setting non-replicated columns to
- nulls when replicating an <command>UPDATE</command> (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [360fd1a7b] 2017-10-12 10:26:55 -0400
-Branch: REL_10_STABLE [7cde649ab] 2017-10-12 10:26:54 -0400
--->
- <para>
- Fix logical replication to fire <literal>BEFORE ROW DELETE</literal>
- triggers when expected (Masahiko Sawada)
- </para>
-
- <para>
- Previously, that failed to happen unless the table also had
- a <literal>BEFORE ROW UPDATE</literal> trigger.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1518d0784] 2017-10-06 19:18:58 -0400
-Branch: REL_10_STABLE [485d49dbc] 2017-10-06 19:18:58 -0400
-Branch: REL9_6_STABLE [185279da3] 2017-10-06 19:18:58 -0400
-Branch: REL9_5_STABLE [13d2ed921] 2017-10-06 19:18:59 -0400
-Branch: REL9_4_STABLE [bfb69b1e5] 2017-10-06 19:18:59 -0400
--->
- <para>
- Fix crash when logical decoding is invoked from a SPI-using function,
- in particular any function written in a PL language
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7421f4b89] 2017-10-16 17:56:54 -0400
-Branch: REL_10_STABLE [799037099] 2017-10-16 17:56:43 -0400
--->
- <para>
- Ignore CTEs when looking up the target table for
- <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>,
- and prevent matching schema-qualified target table names to trigger
- transition table names (Thomas Munro)
- </para>
-
- <para>
- This restores the pre-v10 behavior for CTEs attached to DML commands.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c3dfe0fec] 2017-10-16 15:24:36 -0400
-Branch: REL_10_STABLE [72e9cc971] 2017-10-16 15:24:36 -0400
--->
- <para>
- Avoid evaluating an aggregate function's argument expression(s) at rows
- where its <literal>FILTER</literal> test fails (Tom Lane)
- </para>
-
- <para>
- This restores the pre-v10 (and SQL-standard) behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [08f1e1f0a] 2017-10-26 12:17:40 -0400
-Branch: REL_10_STABLE [6a81ba1d4] 2017-10-26 12:17:40 -0400
-Branch: REL9_6_STABLE [37b4e0fe9] 2017-10-26 12:17:40 -0400
--->
- <para>
- Fix incorrect query results when multiple <literal>GROUPING
- SETS</literal> columns contain the same simple variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a1c2c430d] 2017-10-06 14:28:42 -0400
-Branch: REL_10_STABLE [0c25e9652] 2017-10-06 14:28:42 -0400
--->
- <para>
- Fix query-lifespan memory leakage while evaluating a set-returning
- function in a <command>SELECT</command>'s target list (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [682ce911f] 2017-10-27 22:22:39 +0200
-Branch: REL_10_STABLE [a87c0c763] 2017-10-29 20:48:51 +0530
--->
- <para>
- Allow parallel execution of prepared statements with generic plans
- (Amit Kapila, Kuntal Ghosh)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [639c1a6bb] 2017-10-27 16:04:01 +0200
-Branch: REL_10_STABLE [965a16fa9] 2017-10-27 16:04:10 +0200
-Branch: REL9_6_STABLE [036b6bd50] 2017-10-27 16:12:16 +0200
--->
- <para>
- Fix incorrect parallelization decisions for nested queries
- (Amit Kapila, Kuntal Ghosh)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [846fcc851] 2017-10-29 12:58:40 +0530
-Branch: REL_10_STABLE [69125c883] 2017-10-29 13:04:37 +0530
-Branch: REL9_6_STABLE [f74f871b8] 2017-10-29 13:14:37 +0530
--->
- <para>
- Fix parallel query handling to not fail when a recently-used role is
- dropped (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [6393613b6] 2017-10-13 15:02:45 -0400
-Branch: REL_10_STABLE [a3b1c2218] 2017-10-13 15:05:14 -0400
--->
- <para>
- Fix crash in parallel execution of a bitmap scan having a BitmapAnd
- plan node below a BitmapOr node (Dilip Kumar)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [f3c6e8a27] 2017-10-25 07:13:11 -0400
-Branch: REL_10_STABLE [fb17082d7] 2017-10-25 07:14:21 -0400
-Branch: REL9_6_STABLE [5c3a1bbb4] 2017-10-25 07:19:59 -0400
-Branch: REL9_5_STABLE [5c8dcd322] 2017-10-25 07:20:37 -0400
-Branch: REL9_4_STABLE [7f89fc418] 2017-10-25 07:20:48 -0400
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [18fc4ecf4] 2017-10-25 07:34:00 -0400
-Branch: REL_10_STABLE [06d5ba0d4] 2017-10-25 07:40:33 -0400
-Branch: REL9_6_STABLE [98efa5ebf] 2017-10-25 07:48:36 -0400
-Branch: REL9_5_STABLE [3cc5f0550] 2017-10-25 07:49:13 -0400
-Branch: REL9_4_STABLE [9cb28e98b] 2017-10-25 07:52:45 -0400
--->
- <para>
- Fix <function>json_build_array()</function>,
- <function>json_build_object()</function>, and their <type>jsonb</type>
- equivalents to handle explicit <literal>VARIADIC</literal> arguments
- correctly (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [be72b9c37] 2017-10-30 15:52:02 +0100
-Branch: REL_10_STABLE [52ca7572c] 2017-10-30 15:52:13 +0100
--->
- <para>
- Fix autovacuum's <quote>work item</quote> logic to prevent possible
- crashes and silent loss of work items (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d5b760ecb] 2017-10-27 17:28:54 -0400
-Branch: REL_10_STABLE [ddde3b4f3] 2017-10-27 17:10:21 -0400
-Branch: REL9_6_STABLE [7e5e8b36d] 2017-10-27 17:10:21 -0400
-Branch: REL9_5_STABLE [acd3287e4] 2017-10-27 17:10:21 -0400
-Branch: REL9_4_STABLE [66104119e] 2017-10-27 17:10:21 -0400
-Branch: REL9_3_STABLE [9d15b8b36] 2017-10-27 17:10:21 -0400
-Branch: REL9_2_STABLE [80e79718d] 2017-10-27 17:10:21 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d76886c2d] 2017-10-27 18:16:24 -0400
-Branch: REL_10_STABLE [291a31c42] 2017-10-27 18:16:25 -0400
-Branch: REL9_6_STABLE [21daada10] 2017-10-27 18:16:25 -0400
-Branch: REL9_5_STABLE [1f81c2cd5] 2017-10-27 18:16:25 -0400
-Branch: REL9_4_STABLE [d01d97c25] 2017-10-27 18:16:25 -0400
-Branch: REL9_3_STABLE [e06b9e9dc] 2017-10-27 18:16:25 -0400
-Branch: REL9_2_STABLE [a4c11c103] 2017-10-27 18:16:25 -0400
--->
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f3ea3e3e8] 2017-10-23 13:57:45 -0400
-Branch: REL_10_STABLE [df4aa6e4e] 2017-10-23 13:57:45 -0400
-Branch: REL9_6_STABLE [285b850d5] 2017-10-23 13:57:45 -0400
-Branch: REL9_5_STABLE [aa0518301] 2017-10-23 13:57:45 -0400
-Branch: REL9_4_STABLE [d8a3be52f] 2017-10-23 13:57:45 -0400
-Branch: REL9_3_STABLE [dde99de11] 2017-10-23 13:57:46 -0400
-Branch: REL9_2_STABLE [900a9fd64] 2017-10-23 13:57:46 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6784d7a1d] 2017-10-27 12:19:09 -0400
-Branch: REL_10_STABLE [8be102242] 2017-10-27 12:19:11 -0400
-Branch: REL9_6_STABLE [cf0331a54] 2017-10-27 12:18:57 -0400
-Branch: REL9_5_STABLE [37fb01cb0] 2017-10-27 12:18:57 -0400
-Branch: REL9_4_STABLE [376ac922d] 2017-10-27 12:18:57 -0400
-Branch: REL9_3_STABLE [be203c36a] 2017-10-27 12:18:57 -0400
-Branch: REL9_2_STABLE [adcfa7bd1] 2017-10-27 12:18:57 -0400
--->
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [36ea99c84] 2017-10-20 17:12:27 -0400
-Branch: REL_10_STABLE [7a5f8de55] 2017-10-20 17:12:27 -0400
-Branch: REL9_6_STABLE [b1752c3a7] 2017-10-20 17:12:27 -0400
-Branch: REL9_5_STABLE [63fbc51e3] 2017-10-20 17:12:27 -0400
-Branch: REL9_4_STABLE [d1ced6114] 2017-10-20 17:12:27 -0400
-Branch: REL9_3_STABLE [7c70a129e] 2017-10-20 17:12:27 -0400
-Branch: REL9_2_STABLE [0270ad1f7] 2017-10-20 17:12:28 -0400
--->
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [e9ef11ac8] 2017-10-12 17:23:47 +0200
-Branch: REL_10_STABLE [a01a3d931] 2017-10-12 17:32:48 +0200
--->
- <para>
- Correctly ignore <structname>RelabelType</structname> expression nodes
- when examining functional-dependency statistics (David Rowley)
- </para>
-
- <para>
- This allows, e.g., extended statistics on <type>varchar</type> columns
- to be used properly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [52328727b] 2017-10-11 22:18:10 -0400
-Branch: REL_10_STABLE [604723d29] 2017-10-11 22:18:01 -0400
-Branch: REL9_6_STABLE [96cfc7e19] 2017-10-11 22:18:01 -0400
--->
- <para>
- Prevent sharing transition states between ordered-set aggregates
- (David Rowley)
- </para>
-
- <para>
- This causes a crash with the built-in ordered-set aggregates, and
- probably with user-written ones as well. v11 and later will include
- provisions for dealing with such cases safely, but in released
- branches, just disable the optimization.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [f67661665] 2017-10-11 14:02:41 -0700
-Branch: REL_10_STABLE [61ace8fe7] 2017-10-11 14:02:41 -0700
-Branch: REL9_6_STABLE [0da46d75e] 2017-10-11 14:02:41 -0700
--->
- <para>
- Prevent <varname>idle_in_transaction_session_timeout</varname> from
- being ignored when a <varname>statement_timeout</varname> occurred
- earlier (Lukas Fittl)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [118e99c3d] 2017-10-11 14:28:33 -0400
-Branch: REL_10_STABLE [f4cdf781a] 2017-10-11 14:28:33 -0400
-Branch: REL9_6_STABLE [36c687a22] 2017-10-11 14:28:33 -0400
-Branch: REL9_5_STABLE [69bc245d9] 2017-10-11 14:28:33 -0400
-Branch: REL9_4_STABLE [0e84f7075] 2017-10-11 14:28:33 -0400
-Branch: REL9_3_STABLE [7573d122f] 2017-10-11 14:28:33 -0400
-Branch: REL9_2_STABLE [525b09ada] 2017-10-11 14:28:34 -0400
--->
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [643c27e36] 2017-10-08 15:25:26 -0400
-Branch: REL_10_STABLE [c3723317d] 2017-10-08 15:25:26 -0400
-Branch: REL9_6_STABLE [13a8924ec] 2017-10-08 15:25:26 -0400
--->
- <para>
- Reduce the frequency of data flush requests during bulk file copies to
- avoid performance problems on macOS, particularly with its new APFS
- file system (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [bab3a714b] 2017-11-05 09:25:52 -0800
-Branch: REL_10_STABLE [2168f37c4] 2017-11-05 09:25:59 -0800
-Branch: REL9_6_STABLE [1cac62dac] 2017-11-05 09:26:28 -0800
-Branch: REL9_5_STABLE [7932891ab] 2017-11-05 09:26:43 -0800
-Branch: REL9_4_STABLE [2a2e2e85e] 2017-11-05 09:26:47 -0800
--->
- <para>
- Allow <command>COPY</command>'s <literal>FREEZE</literal> option to
- work when the transaction isolation level is <literal>REPEATABLE
- READ</literal> or higher (Noah Misch)
- </para>
-
- <para>
- This case was unintentionally broken by a previous bug fix.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [305cf1fd7] 2017-10-12 15:20:16 -0400
-Branch: REL_10_STABLE [d48bf6a94] 2017-10-12 15:20:04 -0400
-Branch: REL9_6_STABLE [aa1e9b3a4] 2017-10-12 15:20:04 -0400
--->
- <para>
- Fix <function>AggGetAggref()</function> to return the
- correct <structname>Aggref</structname> nodes to aggregate final
- functions whose transition calculations have been merged (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [080351466] 2017-10-31 13:40:23 -0400
-Branch: REL_10_STABLE [9cf2b854a] 2017-10-31 13:40:23 -0400
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [51f4d3ed7] 2017-11-01 19:16:14 -0700
-Branch: REL_10_STABLE [f4e13963c] 2017-11-01 19:16:17 -0700
--->
- <para>
- Fix insufficient schema-qualification in some new queries
- in <application>pg_dump</application>
- and <application>psql</application>
- (Vitaly Burovoy, Tom Lane, Noah Misch)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [471d55859] 2017-10-22 16:45:16 -0400
-Branch: REL_10_STABLE [852e3224e] 2017-10-22 16:45:26 -0400
--->
- <para>
- Avoid use of <literal>@&gt;</literal> operator
- in <application>psql</application>'s queries for <command>\d</command>
- (Tom Lane)
- </para>
-
- <para>
- This prevents problems when the <application>parray_gin</application>
- extension is installed, since that defines a conflicting operator.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [067a2259f] 2017-11-01 10:20:05 -0400
-Branch: REL_10_STABLE [dd12b5307] 2017-11-01 21:41:45 -0400
-Branch: REL9_6_STABLE [4ba0ffaae] 2017-11-01 21:44:55 -0400
-Branch: REL9_5_STABLE [3064f0e25] 2017-11-01 21:45:11 -0400
--->
- <para>
- Fix <application>pg_basebackup</application>'s matching of tablespace
- paths to canonicalize both paths before comparing (Michael Paquier)
- </para>
-
- <para>
- This is particularly helpful on Windows.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [db6986f47] 2017-10-25 19:32:24 -0400
-Branch: REL_10_STABLE [51e9fffba] 2017-10-25 19:32:24 -0400
-Branch: REL9_6_STABLE [7dc66a2f6] 2017-10-25 19:32:24 -0400
-Branch: REL9_5_STABLE [ee02c1c89] 2017-10-25 19:32:24 -0400
-Branch: REL9_4_STABLE [9f7afb25b] 2017-10-25 19:32:24 -0400
-Branch: REL9_3_STABLE [6dd7a1207] 2017-10-25 19:32:24 -0400
-Branch: REL9_2_STABLE [caeae886e] 2017-10-25 19:32:25 -0400
--->
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [0af98a95c] 2017-10-26 10:16:04 +0200
-Branch: REL_10_STABLE [65ba1b5c2] 2017-10-26 10:39:37 +0200
-Branch: REL9_6_STABLE [41753604b] 2017-10-26 10:39:46 +0200
-Branch: REL9_5_STABLE [9b01a21fc] 2017-10-26 10:39:54 +0200
-Branch: REL9_4_STABLE [c6a396888] 2017-10-26 10:40:03 +0200
--->
- <para>
- In ecpglib, correctly handle backslashes in string literals depending
- on whether <varname>standard_conforming_strings</varname> is set
- (Tsunakawa Takayuki)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [63d6b97fd] 2017-11-01 13:32:18 +0100
-Branch: REL_10_STABLE [e4381c039] 2017-11-01 13:40:27 +0100
-Branch: REL9_6_STABLE [e0ec1cbff] 2017-11-01 13:40:50 +0100
-Branch: REL9_5_STABLE [d2e6bd13a] 2017-11-01 13:41:00 +0100
-Branch: REL9_4_STABLE [18647e21d] 2017-11-01 13:41:12 +0100
-Branch: REL9_3_STABLE [d64a4d368] 2017-11-01 13:41:21 +0100
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [6976a4f05] 2017-11-02 20:49:47 +0100
-Branch: REL_10_STABLE [ee46980a7] 2017-11-02 20:51:00 +0100
-Branch: REL9_6_STABLE [049dab009] 2017-11-02 20:51:13 +0100
-Branch: REL9_5_STABLE [b6d95939e] 2017-11-02 20:51:23 +0100
-Branch: REL9_4_STABLE [ad24e7bc2] 2017-11-02 20:51:34 +0100
-Branch: REL9_3_STABLE [7a35507ac] 2017-11-02 20:51:44 +0100
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [7164991ca] 2017-11-03 11:15:14 +0100
-Branch: REL_10_STABLE [c63568b06] 2017-11-03 12:41:39 +0100
-Branch: REL9_6_STABLE [6cf68e223] 2017-11-03 12:41:23 +0100
-Branch: REL9_5_STABLE [90d61bd1d] 2017-11-03 12:41:11 +0100
-Branch: REL9_4_STABLE [946f16518] 2017-11-03 12:40:54 +0100
-Branch: REL9_3_STABLE [deb429b51] 2017-11-03 12:40:42 +0100
--->
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [c66b438db] 2017-11-05 18:51:08 -0800
-Branch: REL_10_STABLE [937f67800] 2017-11-05 18:51:15 -0800
-Branch: REL9_6_STABLE [971983f42] 2017-11-05 18:52:38 -0800
-Branch: REL9_5_STABLE [014c5cd87] 2017-11-05 18:54:52 -0800
--->
- <para>
- Fix missing temp-install prerequisites
- for <literal>check</literal>-like Make targets (Noah Misch)
- </para>
-
- <para>
- Some non-default test procedures that are meant to work
- like <literal>make check</literal> failed to ensure that the temporary
- installation was up to date.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8df4ce1ea] 2017-10-23 18:15:36 -0400
-Branch: REL_10_STABLE [0cde56247] 2017-10-23 18:15:42 -0400
-Branch: REL9_6_STABLE [fae550e52] 2017-10-23 18:15:47 -0400
-Branch: REL9_5_STABLE [1e57d85cd] 2017-10-23 18:15:51 -0400
-Branch: REL9_4_STABLE [ba67fac85] 2017-10-23 18:15:56 -0400
-Branch: REL9_3_STABLE [da82bb1d8] 2017-10-23 18:16:00 -0400
-Branch: REL9_2_STABLE [7e8d84c36] 2017-10-23 18:16:04 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [49df45acd] 2017-11-03 14:14:02 -0400
-Branch: REL_10_STABLE [5159626af] 2017-11-03 14:14:16 -0400
--->
- <para>
- In the documentation, restore HTML anchors to being upper-case strings
- (Peter Eisentraut)
- </para>
-
- <para>
- Due to a toolchain change, the 10.0 user manual had lower-case strings
- for intrapage anchors, thus breaking some external links into our
- website documentation. Return to our previous convention of using
- upper-case strings.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-10">
- <title>Release 10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-10-05</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 10 include:
- </para>
-
- <!-- Items in this list summarize one or more items below -->
-
- <itemizedlist>
-
- <listitem><para>Logical replication using publish/subscribe</para></listitem>
- <listitem><para>Declarative table partitioning</para></listitem>
- <listitem><para>Improved query parallelism</para></listitem>
- <listitem><para>Significant general performance improvements</para></listitem>
- <listitem><para>Stronger password authentication based on SCRAM-SHA-256</para></listitem>
- <listitem><para>Improved monitoring and control</para></listitem>
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 10</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 10 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-04-03 [ea69a0dea] Expand hash indexes more gradually.
-2017-05-19 [a95410e2e] pg_upgrade: Handle hash index upgrades more smoothly.
-2017-08-04 [620b49a16] hash: Increase the number of possible overflow bitmaps b
--->
- <para>
- Hash indexes must be rebuilt after <application>pg_upgrade</application>-ing
- from any previous major <productname>PostgreSQL</productname> version (Mithun
- Cy, Robert Haas, Amit Kapila)
- </para>
-
- <para>
- Major hash index improvements necessitated this requirement.
- <application>pg_upgrade</application> will create a script to assist with this.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-20 [f82ec32ac] Rename "pg_xlog" directory to "pg_wal"
-2017-03-17 [88e66d193] Rename "pg_clog" directory to "pg_xact".
--->
- <para>
- Rename write-ahead log directory <filename>pg_xlog</filename>
- to <link linkend="wal"><filename>pg_wal</filename></link>, and rename transaction
- status directory <filename>pg_clog</filename> to <filename>pg_xact</filename>
- (Michael Paquier)
- </para>
-
- <para>
- Users have occasionally thought that these directories contained only
- inessential log files, and proceeded to remove write-ahead log files
- or transaction status files manually, causing irrecoverable data
- loss. These name changes are intended to discourage such errors in
- future.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-09 [806091c96] Remove all references to "xlog" from SQL-callable functi
-2017-02-09 [85c11324c] Rename user-facing tools with "xlog" in the name to say
-2017-02-09 [62e8b3875] Rename command line options for ongoing xlog -> wal conv
-2017-02-15 [0dfa89ba2] Replace reference to "xlog-method" with "wal-method" in
--->
- <para>
- Rename <acronym>SQL</acronym> functions, tools, and options that reference
- <quote>xlog</quote> to <quote>wal</quote> (Robert Haas)
- </para>
-
- <para>
- For example, <function>pg_switch_xlog()</function> becomes
- <function>pg_switch_wal()</function>, <application>pg_receivexlog</application>
- becomes <application>pg_receivewal</application>, and <option>--xlogdir</option>
- becomes <option>--waldir</option>. This is for consistency with the
- change of the <filename>pg_xlog</filename> directory name; in general,
- the <quote>xlog</quote> terminology is no longer used in any user-facing
- places.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-05-11 [d10c626de] Rename WAL-related functions and views to use "lsn" not
--->
- <para>
- Rename <acronym>WAL</acronym>-related functions and views to use <literal>lsn</literal>
- instead of <literal>location</literal> (David Rowley)
- </para>
-
- <para>
- There was previously an inconsistent mixture of the two terminologies.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-16 [d43a619c6] Fix check_srf_call_placement() to handle VALUES cases co
-2017-01-18 [69f4b9c85] Move targetlist SRF handling from expression evaluation
-2017-01-18 [f13a1277a] Doc: improve documentation of new SRF-in-tlist behavior.
-2017-06-13 [0436f6bde] Disallow set-returning functions inside CASE or COALESCE
--->
- <para>
- Change the implementation of set-returning functions appearing in
- a query's <literal>SELECT</literal> list (Andres Freund)
- </para>
-
- <para>
- Set-returning functions are now evaluated before evaluation of scalar
- expressions in the <literal>SELECT</literal> list, much as though they had
- been placed in a <literal>LATERAL FROM</literal>-clause item. This allows
- saner semantics for cases where multiple set-returning functions are
- present. If they return different numbers of rows, the shorter results
- are extended to match the longest result by adding nulls. Previously
- the results were cycled until they all terminated at the same time,
- producing a number of rows equal to the least common multiple of the
- functions' periods. In addition, set-returning functions are now
- disallowed within <literal>CASE</literal> and <literal>COALESCE</literal> constructs.
- For more information
- see <xref linkend="xfunc-sql-functions-returning-set"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-22 [906bfcad7] Improve handling of "UPDATE ... SET (column_list) = row_
--->
- <para>
- Use standard row constructor syntax in <literal>UPDATE ... SET
- (<replaceable>column_list</replaceable>) = <replaceable>row_constructor</replaceable></literal>
- (Tom Lane)
- </para>
-
- <para>
- The <replaceable>row_constructor</replaceable> can now begin with the
- keyword <literal>ROW</literal>; previously that had to be omitted.
- If just one column name appears in
- the <replaceable>column_list</replaceable>, then
- the <replaceable>row_constructor</replaceable> now must use
- the <literal>ROW</literal> keyword, since otherwise it is not a valid
- row constructor but just a parenthesized expression.
- Also, an occurrence
- of <literal><replaceable>table_name</replaceable>.*</literal> within
- the <replaceable>row_constructor</replaceable> is now expanded into
- multiple columns, as occurs in other uses
- of <replaceable>row_constructor</replaceable>s.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-04 [c30f1770a] Apply ALTER ... SET NOT NULL recursively in ALTER ... AD
--->
- <para>
- When <command>ALTER TABLE ... ADD PRIMARY KEY</command> marks
- columns <literal>NOT NULL</literal>, that change now propagates to
- inheritance child tables as well (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-16 [54d4d0ff6] Fix SQL-spec incompatibilities in new transition table f
-2017-09-17 [5cc234931] Ensure that BEFORE STATEMENT triggers fire the right num
--->
- <para>
- Prevent statement-level triggers from firing more than once per
- statement (Tom Lane)
- </para>
-
- <para>
- Cases involving writable CTEs updating the same table updated by the
- containing statement, or by another writable CTE, fired <literal>BEFORE
- STATEMENT</literal> or <literal>AFTER STATEMENT</literal> triggers more than once.
- Also, if there were statement-level triggers on a table affected by a
- foreign key enforcement action (such as <literal>ON DELETE CASCADE</literal>),
- they could fire more than once per outer SQL statement. This is
- contrary to the SQL standard, so change it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-20 [1753b1b02] Add pg_sequence system catalog
-2016-11-18 [67dc4ccbb] Add pg_sequences view
-2017-05-15 [f8dc1985f] Fix ALTER SEQUENCE locking
-2017-06-01 [3d79013b9] Make ALTER SEQUENCE, including RESTART, fully transactio
-2017-09-29 [5cc5987ce] psql: Update \d sequence display
--->
- <para>
- Move sequences' metadata fields into a new <link
- linkend="catalog-pg-sequence"><structname>pg_sequence</structname></link>
- system catalog (Peter Eisentraut)
- </para>
-
- <para>
- A sequence relation now stores only the fields that can be modified
- by <function>nextval()</function>, that
- is <structfield>last_value</structfield>, <structfield>log_cnt</structfield>,
- and <structfield>is_called</structfield>. Other sequence properties, such as
- the starting value and increment, are kept in a corresponding row of
- the <structname>pg_sequence</structname> catalog.
- <command>ALTER SEQUENCE</command> updates are now fully transactional,
- implying that the sequence is locked until commit.
- The <function>nextval()</function> and <function>setval()</function> functions
- remain nontransactional.
- </para>
-
- <para>
- The main incompatibility introduced by this change is that selecting
- from a sequence relation now returns only the three fields named
- above. To obtain the sequence's other properties, applications must
- look into <structname>pg_sequence</structname>. The new system
- view <link linkend="view-pg-sequences"><structname>pg_sequences</structname></link>
- can also be used for this purpose; it provides column names that are
- more compatible with existing code.
- </para>
-
- <para>
- Also, sequences created for <literal>SERIAL</literal> columns now generate
- positive 32-bit wide values, whereas previous versions generated 64-bit
- wide values. This has no visible effect if the values are only stored in
- a column.
- </para>
-
- <para>
- The output of <application>psql</application>'s <command>\d</command> command for a
- sequence has been redesigned, too.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-04 [9a4d51077] Make wal streaming the default mode for pg_basebackup
--->
- <para>
- Make <application><xref linkend="app-pgbasebackup"/></application> stream the
- <acronym>WAL</acronym> needed to restore the backup by default (Magnus
- Hagander)
- </para>
-
- <para>
- This changes <application>pg_basebackup</application>'s
- <option>-X</option>/<option>--wal-method</option> default to <literal>stream</literal>.
- An option value <literal>none</literal> has been added to reproduce the old
- behavior. The <application>pg_basebackup</application> option <option>-x</option>
- has been removed (instead, use <literal>-X fetch</literal>).
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-13 [8df9bd0b4] Change logical replication pg_hba.conf use
--->
- <para>
- Change how logical replication
- uses <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- In previous releases, a logical replication connection required
- the <literal>replication</literal> keyword in the database column. As
- of this release, logical replication matches a normal entry with a
- database name or keywords such as <literal>all</literal>. Physical
- replication continues to use the <literal>replication</literal> keyword.
- Since built-in logical replication is new in this release, this
- change only affects users of third-party logical replication plugins.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-14 [05cd12ed5] pg_ctl: Change default to wait for all actions
--->
- <para>
- Make all <application><xref linkend="app-pg-ctl"/></application> actions wait
- for completion by default (Peter Eisentraut)
- </para>
-
- <para>
- Previously some <application>pg_ctl</application> actions didn't wait for
- completion, and required the use of <option>-w</option> to do so.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-27 [3371e4d9b] Change default of log_directory to 'log'
--->
- <para>
- Change the default value of the <xref linkend="guc-log-directory"/>
- server parameter from <filename>pg_log</filename> to <filename>log</filename>
- (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-07-31 [c0a15e07c] Always use 2048 bit DH parameters for OpenSSL ephemeral
--->
- <para>
- Add configuration option <xref linkend="guc-ssl-dh-params-file"/> to
- specify file name for custom OpenSSL DH parameters (Heikki Linnakangas)
- </para>
-
- <para>
- This replaces the hardcoded, undocumented file
- name <filename>dh1024.pem</filename>. Note that <filename>dh1024.pem</filename> is
- no longer examined by default; you must set this option if you want
- to use custom DH parameters.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-07-31 [c0a15e07c] Always use 2048 bit DH parameters for OpenSSL ephemeral
--->
- <para>
- Increase the size of the default DH parameters used for OpenSSL
- ephemeral DH ciphers to 2048 bits (Heikki Linnakangas)
- </para>
-
- <para>
- The size of the compiled-in DH parameters has been increased from
- 1024 to 2048 bits, making DH key exchange more resistant to
- brute-force attacks. However, some old SSL implementations, notably
- some revisions of Java Runtime Environment version 6, will not accept
- DH parameters longer than 1024 bits, and hence will not be able to
- connect over SSL. If it's necessary to support such old clients, you
- can use custom 1024-bit DH parameters instead of the compiled-in
- defaults. See <xref linkend="guc-ssl-dh-params-file"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-05-08 [eb61136dc] Remove support for password_encryption='off' / 'plain'.
--->
- <para>
- Remove the ability to store unencrypted passwords on the server
- (Heikki Linnakangas)
- </para>
-
- <para>
- The <xref linkend="guc-password-encryption"/> server parameter
- no longer supports <literal>off</literal> or <literal>plain</literal>.
- The <literal>UNENCRYPTED</literal> option is no longer supported in
- <command>CREATE/ALTER USER ... PASSWORD</command>. Similarly, the
- <option>--unencrypted</option> option has been removed
- from <application>createuser</application>. Unencrypted passwords migrated from
- older versions will be stored encrypted in this release. The default
- setting for <varname>password_encryption</varname> is still
- <literal>md5</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-15 [51ee6f316] Replace min_parallel_relation_size with two new GUCs.
--->
- <para>
- Add <xref linkend="guc-min-parallel-table-scan-size"/>
- and <xref linkend="guc-min-parallel-index-scan-size"/> server
- parameters to control parallel queries (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- These replace <varname>min_parallel_relation_size</varname>, which was
- found to be too generic.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-06-20 [a69dfe5f4] Don't downcase entries within shared_preload_libraries e
--->
- <para>
- Don't downcase unquoted text
- within <xref linkend="guc-shared-preload-libraries"/> and related
- server parameters (QL Zhuo)
- </para>
-
- <para>
- These settings are really lists of file names, but they were
- previously treated as lists of SQL identifiers, which have different
- parsing rules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-23 [e13486eba] Remove sql_inheritance GUC.
--->
- <para>
- Remove <varname>sql_inheritance</varname> server parameter (Robert Haas)
- </para>
-
- <para>
- Changing this setting from the default value caused queries referencing
- parent tables to not include child tables. The <acronym>SQL</acronym>
- standard requires them to be included, however, and this has been the
- default since <productname>PostgreSQL</productname> 7.1.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-26 [94aceed31] Support multi-dimensional arrays in PL/python.
-2016-10-26 [cfd9c87a5] Only treat Python Lists as array dimensions.
--->
- <para>
- Allow multi-dimensional arrays to be passed into PL/Python functions,
- and returned as nested Python lists (Alexey Grishchenko, Dave Cramer,
- Heikki Linnakangas)
- </para>
-
- <para>
- This feature requires a backwards-incompatible change to the handling
- of arrays of composite types in PL/Python. Previously, you could
- return an array of composite values by writing, e.g., <literal>[[col1,
- col2], [col1, col2]]</literal>; but now that is interpreted as a
- two-dimensional array. Composite types in arrays must now be written
- as Python tuples, not lists, to resolve the ambiguity; that is,
- write <literal>[(col1, col2), (col1, col2)]</literal> instead.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-27 [817f2a586] Remove PL/Tcl's "module" facility.
--->
- <para>
- Remove PL/Tcl's <quote>module</quote> auto-loading facility (Tom Lane)
- </para>
-
- <para>
- This functionality has been replaced by new server
- parameters <xref linkend="guc-pltcl-start-proc"/>
- and <xref linkend="guc-pltclu-start-proc"/>, which are easier to use
- and more similar to features available in other PLs.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-12 [64f3524e2] Remove pg_dump/pg_dumpall support for dumping from pre-8
--->
- <para>
- Remove <application>pg_dump</application>/<application>pg_dumpall</application> support
- for dumping from pre-8.0 servers (Tom Lane)
- </para>
-
- <para>
- Users needing to dump from pre-8.0 servers will need to use dump
- programs from <productname>PostgreSQL</productname> 9.6 or earlier. The
- resulting output should still load successfully into newer servers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-23 [b6aa17e0a] De-support floating-point timestamps.
--->
- <para>
- Remove support for floating-point timestamps and intervals (Tom Lane)
- </para>
-
- <para>
- This removes configure's <option>--disable-integer-datetimes</option>
- option. Floating-point timestamps have few advantages and have not
- been the default since <productname>PostgreSQL</productname> 8.3.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-11 [2f1eaf87e] Drop server support for FE/BE protocol version 1.0.
--->
- <para>
- Remove server support for client/server protocol version 1.0 (Tom Lane)
- </para>
-
- <para>
- This protocol hasn't had client support
- since <productname>PostgreSQL</productname> 6.3.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-13 [7ada2d31f] Remove contrib/tsearch2.
--->
- <para>
- Remove <filename>contrib/tsearch2</filename> module (Robert Haas)
- </para>
-
- <para>
- This module provided compatibility with the version of full text
- search that shipped in pre-8.3 <productname>PostgreSQL</productname> releases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-23 [50c956add] Remove createlang and droplang
--->
- <para>
- Remove <application>createlang</application> and <application>droplang</application>
- command-line applications (Peter Eisentraut)
- </para>
-
- <para>
- These had been deprecated since <productname>PostgreSQL</productname> 9.1.
- Instead, use <command>CREATE EXTENSION</command> and <command>DROP
- EXTENSION</command> directly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-30 [5ded4bd21] Remove support for version-0 calling conventions.
--->
- <para>
- Remove support for version-0 function calling conventions (Andres
- Freund)
- </para>
-
- <para>
- Extensions providing C-coded functions must now conform to version 1
- calling conventions. Version 0 has been deprecated since 2001.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 10 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Parallel Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-02-15 [569174f1b] btree: Support parallel index scans.
-2017-02-15 [5262f7a4f] Add optimizer and executor support for parallel index sc
-2017-02-19 [0414b26ba] Add optimizer and executor support for parallel index-on
--->
- <para>
- Support parallel B-tree index scans (Rahila Syed, Amit Kapila,
- Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows B-tree index pages to be searched by separate
- parallel workers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-08 [98e6e8904] tidbitmap: Support shared iteration.
-2017-03-08 [f35742ccb] Support parallel bitmap heap scans.
--->
- <para>
- Support parallel bitmap heap scans (Dilip Kumar)
- </para>
-
- <para>
- This allows a single index scan to dispatch parallel workers to
- process different areas of the heap.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-07 [3bc7dafa9] Consider parallel merge joins.
--->
- <para>
- Allow merge joins to be performed in parallel (Dilip Kumar)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-14 [5e6d8d2bb] Allow parallel workers to execute subplans.
--->
- <para>
- Allow non-correlated subqueries to be run in parallel (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-09 [355d3993c] Add a Gather Merge executor node.
--->
- <para>
- Improve ability of parallel workers to return pre-sorted data
- (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-24 [61c2e1a95] Improve access to parallel query from procedural languag
--->
- <para>
- Increase parallel query usage in procedural language functions
- (Robert Haas, Rafia Sabih)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-02 [b460f5d66] Add max_parallel_workers GUC.
-2016-12-05 [2b959d495] Reduce the default for max_worker_processes back to 8.
--->
- <para>
- Add <xref linkend="guc-max-parallel-workers"/> server parameter
- to limit the number of worker processes that can be used for
- query parallelism (Julien Rouhaud)
- </para>
-
- <para>
- This parameter can be set lower than <xref
- linkend="guc-max-worker-processes"/> to reserve worker processes
- for purposes other than parallel queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-This was disabled in the PG 9.6 branch so there is no commit here.
--->
- <para>
- Enable parallelism by default by changing the default setting
- of <xref linkend="guc-max-parallel-workers-per-gather"/> to
- <literal>2</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-02-27 [30df93f69] hash: Refactor overflow page allocation.
-2017-03-14 [c11453ce0] hash: Add write-ahead logging support.
-2017-02-27 [b0f18cb77] hash: Refactor bucket squeeze code.
--->
- <para>
- Add write-ahead logging support to hash indexes (Amit Kapila)
- </para>
-
- <para>
- This makes hash indexes crash-safe and replicatable.
- The former warning message about their use is removed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-30 [6d46f4783] Improve hash index bucket split behavior.
-2017-02-07 [293e24e50] Cache hash index's metapage in rel->rd_amcache.
-2017-03-15 [6977b8b7f] Port single-page btree vacuum logic to hash indexes.
-2017-04-03 [ea69a0dea] Expand hash indexes more gradually.
-2017-08-04 [620b49a16] hash: Increase the number of possible overflow bitmaps b
--->
- <para>
- Improve hash index performance (Amit Kapila, Mithun Cy, Ashutosh
- Sharma)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-23 [77e290682] Create an SP-GiST opclass for inet/cidr.
--->
- <para>
- Add <acronym>SP-GiST</acronym> index support for <type>INET</type> and
- <type>CIDR</type> data types (Emre Hasegeli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-01 [7526e1022] BRIN auto-summarization
--->
- <para>
- Add option to allow <acronym>BRIN</acronym> index summarization to happen
- more aggressively (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- A new <link linkend="sql-createindex"><command>CREATE
- INDEX</command></link> option enables auto-summarization of the
- previous <acronym>BRIN</acronym> page range when a new page
- range is created.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-01 [c655899ba] BRIN de-summarization
--->
- <para>
- Add functions to remove and re-add <acronym>BRIN</acronym>
- summarization for <acronym>BRIN</acronym> index ranges (&Aacute;lvaro
- Herrera)
- </para>
-
- <para>
- The new <acronym>SQL</acronym> function <link
- linkend="functions-admin-index-table"><function>brin_summarize_range()</function></link>
- updates <acronym>BRIN</acronym> index summarization for a specified
- range and <function>brin_desummarize_range()</function> removes it.
- This is helpful to update summarization of a range that is now
- smaller due to <command>UPDATE</command>s and <command>DELETE</command>s.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-06 [7e534adcd] Fix BRIN cost estimation
--->
- <para>
- Improve accuracy in determining if a <acronym>BRIN</acronym> index scan
- is beneficial (David Rowley, Emre Hasegeli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-09 [b1328d78f] Invent PageIndexTupleOverwrite, and teach BRIN and GiST
--->
- <para>
- Allow faster <acronym>GiST</acronym> inserts and updates by reusing
- index space more efficiently (Andrey Borodin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-23 [218f51584] Reduce page locking in GIN vacuum
--->
- <para>
- Reduce page locking during vacuuming of <acronym>GIN</acronym> indexes
- (Andrey Borodin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
-
- <title>Locking</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-06 [21d4e2e20] Reduce lock levels for table storage params related to p
-2017-04-05 [68ea2b7f9] Reduce lock level for CREATE STATISTICS
--->
- <para>
- Reduce locking required to change table parameters (Simon Riggs,
- Fabr&iacute;zio Mello)
- </para>
-
- <para>
- For example, changing a table's <xref
- linkend="guc-effective-io-concurrency"/> setting can now be done
- with a more lightweight lock.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-07 [c63172d60] Add GUCs for predicate lock promotion thresholds.
--->
- <para>
- Allow tuning of predicate lock promotion thresholds (Dagfinn
- Ilmari Manns&aring;ker)
- </para>
-
- <para>
- Lock promotion can now be controlled through two new server
- parameters, <xref
- linkend="guc-max-pred-locks-per-relation"/> and
- <xref linkend="guc-max-pred-locks-per-page"/>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-24 [7b504eb28] Implement multivariate n-distinct coefficients
-2017-04-05 [2686ee1b7] Collect and use multi-column dependency stats
-2017-05-12 [bc085205c] Change CREATE STATISTICS syntax
--->
- <para>
- Add multi-column optimizer statistics to compute the correlation
- ratio and number of distinct values (Tomas Vondra, David Rowley,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- New commands are <link
- linkend="sql-createstatistics"><command>CREATE STATISTICS</command></link>,
- <link linkend="sql-alterstatistics"><command>ALTER STATISTICS</command></link>, and
- <link linkend="sql-dropstatistics"><command>DROP STATISTICS</command></link>.
- This feature is helpful in estimating query memory usage and when
- combining the statistics from individual columns.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-18 [215b43cdc] Improve RLS planning by marking individual quals with se
--->
- <para>
- Improve performance of queries affected by row-level security
- restrictions (Tom Lane)
- </para>
-
- <para>
- The optimizer now has more knowledge about where it can place RLS
- filter conditions, allowing better plans to be generated while still
- enforcing the RLS conditions safely.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-09-02 [9cca11c91] Speed up SUM calculation in numeric aggregates.
--->
- <para>
- Speed up aggregate functions that calculate a running sum
- using <type>numeric</type>-type arithmetic, including some variants
- of <function>SUM()</function>, <function>AVG()</function>,
- and <function>STDDEV()</function> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-13 [aeed17d00] Use radix tree for character encoding conversions.
--->
- <para>
- Improve performance of character encoding conversions by
- using radix trees (Kyotaro Horiguchi, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-25 [b8d7f053c] Faster expression evaluation and targetlist projection.
-2017-07-30 [cc9f08b6b] Move ExecProcNode from dispatch to function pointer base
--->
- <para>
- Reduce expression evaluation overhead during query execution,
- as well as plan node calling overhead (Andres Freund)
- </para>
-
- <para>
- This is particularly helpful for queries that process many rows.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-27 [b5635948a] Support hashed aggregation with grouping sets.
--->
- <para>
- Allow hashed aggregation to be used with grouping sets (Andrew
- Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-07 [9c7f5229a] Optimize joins when the inner relation can be proven uni
-2017-06-03 [23886581b] Fix old corner-case logic error in final_cost_nestloop()
--->
- <para>
- Use uniqueness guarantees to optimize certain join types (David
- Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-29 [f90d23d0c] Implement SortSupport for macaddr data type
--->
- <para>
- Improve sort performance of the <type>macaddr</type> data type (Brandur Leach)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-27 [090010f2e] Improve performance of find_tabstat_entry()/get_tabstat_
--->
- <para>
- Reduce statistics tracking overhead in sessions that reference
- many thousands of relations (Aleksander Alekseev)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-08 [f9b1a0dd4] Expose explain's SUMMARY option
--->
- <para>
- Allow explicit control
- over <link linkend="sql-explain"><command>EXPLAIN</command></link>'s display
- of planning and execution time (Ashutosh Bapat)
- </para>
-
- <para>
- By default planning and execution time are displayed by
- <command>EXPLAIN ANALYZE</command> and are not displayed in other cases.
- The new <command>EXPLAIN</command> option <literal>SUMMARY</literal> allows
- explicit control of this.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-30 [25fff4079] Default monitoring roles
--->
- <para>
- Add default monitoring roles (Dave Page)
- </para>
-
- <para>
- New roles <literal>pg_monitor</literal>, <literal>pg_read_all_settings</literal>,
- <literal>pg_read_all_stats</literal>, and <literal>pg_stat_scan_tables</literal>
- allow simplified permission configuration.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-18 [17f8ffa1e] Fix REFRESH MATERIALIZED VIEW to report activity to the
--->
- <para>
- Properly update the statistics collector during <link
- linkend="sql-refreshmaterializedview"><command>REFRESH MATERIALIZED
- VIEW</command></link> (Jim Mlodgenski)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title>Logging</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-10-17 [7d3235ba4] By default, set log_line_prefix = '%m [%p] '.
--->
- <para>
- Change the default value of <xref linkend="guc-log-line-prefix"/>
- to include current timestamp (with milliseconds) and the process ID
- in each line of postmaster log output (Christoph Berg)
- </para>
-
- <para>
- The previous default was an empty prefix.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-16 [befd73c50] Add pg_ls_logdir() and pg_ls_waldir() functions.
--->
- <para>
- Add functions to return the log and <acronym>WAL</acronym> directory
- contents (Dave Page)
- </para>
-
- <para>
- The new functions
- are <link linkend="functions-admin-genfile-table"><function>pg_ls_logdir()</function></link>
- and <link linkend="functions-admin-genfile-table"><function>pg_ls_waldir()</function></link>
- and can be executed by non-superusers with the proper
- permissions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-03 [19dc233c3] Add pg_current_logfile() function.
--->
- <para>
- Add function <link
- linkend="functions-info-session-table"><function>pg_current_logfile()</function></link>
- to read logging collector's current stderr and csvlog output file names
- (Gilles Darold)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-10 [f9dfa5c97] Improve postmaster's logging of listen socket creation.
-2017-03-14 [2b32ac2a5] Include port number when logging successful binding to a
--->
- <para>
- Report the address and port number of each listening socket
- in the server log during postmaster startup (Tom Lane)
- </para>
-
- <para>
- Also, when logging failure to bind a listening socket, include
- the specific address we attempted to bind to.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-10 [6ec4c8584] Reduce log verbosity of startup/shutdown for launcher su
--->
- <para>
- Reduce log chatter about the starting and stopping of launcher
- subprocesses (Tom Lane)
- </para>
-
- <para>
- These are now <literal>DEBUG1</literal>-level messages.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-17 [a43f1939d] Remove or reduce verbosity of some debug messages.
--->
- <para>
- Reduce message verbosity of lower-numbered debug levels
- controlled by
- <xref linkend="guc-log-min-messages"/> (Robert Haas)
- </para>
-
- <para>
- This also changes the verbosity of <xref
- linkend="guc-client-min-messages"/> debug levels.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- <sect5>
- <title><link linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-10-04 [6f3bd98eb] Extend framework from commit 53be0b1ad to report latch w
-2017-03-18 [249cf070e] Create and use wait events for read, write, and fsync op
--->
- <para>
- Add <structname>pg_stat_activity</structname> reporting of low-level wait
- states (Michael Paquier, Robert Haas, Rushabh Lathia)
- </para>
-
- <para>
- This change enables reporting of numerous low-level wait conditions,
- including latch waits, file reads/writes/fsyncs, client reads/writes,
- and synchronous replication.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-12 [fc3d4a44e] Identify walsenders in pg_stat_activity
-2017-03-26 [fc70a4b0d] Show more processes in pg_stat_activity.
--->
- <para>
- Show auxiliary processes, background workers, and walsender
- processes in <structname>pg_stat_activity</structname> (Kuntal Ghosh,
- Michael Paquier)
- </para>
-
- <para>
- This simplifies monitoring. A new
- column <structfield>backend_type</structfield> identifies the process type.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-22 [4c728f382] Pass the source text for a parallel query to the workers
--->
- <para>
- Allow <structname>pg_stat_activity</structname> to show the SQL query
- being executed by parallel workers (Rafia Sabih)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-16 [3761fe3c2] Simplify LWLock tranche machinery by removing array_base
--->
- <para>
- Rename
- <structname>pg_stat_activity</structname>.<structfield>wait_event_type</structfield>
- values <literal>LWLockTranche</literal> and
- <literal>LWLockNamed</literal> to <literal>LWLock</literal> (Robert Haas)
- </para>
-
- <para>
- This makes the output more consistent.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
- </sect4>
-
- <sect4>
- <title><acronym>Authentication</acronym></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-07 [818fd4a67] Support SCRAM-SHA-256 authentication (RFC 5802 and 7677)
-2017-03-24 [7ac955b34] Allow SCRAM authentication, when pg_hba.conf says 'md5'.
-2017-04-07 [60f11b87a] Use SASLprep to normalize passwords for SCRAM authentica
-2017-04-18 [c727f120f] Rename "scram" to "scram-sha-256" in pg_hba.conf and pas
--->
- <para>
- Add <link linkend="auth-password">SCRAM-SHA-256</link>
- support for password negotiation and storage (Michael Paquier,
- Heikki Linnakangas)
- </para>
-
- <para>
- This provides better security than the existing <literal>md5</literal>
- negotiation and storage method.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-28 [babe05bc2] Turn password_encryption GUC into an enum.
--->
- <para>
- Change the <xref linkend="guc-password-encryption"/> server parameter
- from <type>boolean</type> to <type>enum</type> (Michael Paquier)
- </para>
-
- <para>
- This was necessary to support additional password hashing options.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-30 [de16ab723] Invent pg_hba_file_rules view to show the content of pg_
--->
- <para>
- Add view <link
- linkend="view-pg-hba-file-rules"><structname>pg_hba_file_rules</structname></link>
- to display the contents of <filename>pg_hba.conf</filename> (Haribabu
- Kommi)
- </para>
-
- <para>
- This shows the file contents, not the currently active settings.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-22 [6b76f1bb5] Support multiple RADIUS servers
--->
- <para>
- Support multiple <acronym>RADIUS</acronym> servers (Magnus Hagander)
- </para>
-
- <para>
- All the <acronym>RADIUS</acronym> related parameters are now plural and
- support a comma-separated list of servers.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Configuration</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-01-02 [de41869b6] Allow SSL configuration to be updated at SIGHUP.
-2017-01-03 [1e942c747] Disable prompting for passphrase while (re)loading SSL c
-2017-01-04 [6667d9a6d] Re-allow SSL passphrase prompt at server start, but not
--->
- <para>
- Allow <acronym>SSL</acronym> configuration to be updated during
- configuration reload (Andreas Karlsson, Tom Lane)
- </para>
-
- <para>
- This allows <acronym>SSL</acronym> to be reconfigured without a server
- restart, by using <command>pg_ctl reload</command>, <command>SELECT
- pg_reload_conf()</command>, or sending a <literal>SIGHUP</literal> signal.
- However, reloading the <acronym>SSL</acronym> configuration does not work
- if the server's <acronym>SSL</acronym> key requires a passphrase, as there
- is no way to re-prompt for the passphrase. The original
- configuration will apply for the life of the postmaster in that
- case.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-02 [14ca9abfb] Increase upper bound for bgwriter_lru_maxpages.
--->
- <para>
- Make the maximum value of <xref
- linkend="guc-bgwriter-lru-maxpages"/> effectively unlimited
- (Jim Nasby)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Reliability</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-27 [1b02be21f] Fsync directory after creating or unlinking file.
--->
- <para>
- After creating or unlinking files, perform an fsync on their parent
- directory (Michael Paquier)
- </para>
-
- <para>
- This reduces the risk of data loss after a power failure.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="wal">Write-Ahead Log</link> (<acronym>WAL</acronym>)</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-12-22 [6ef2eba3f] Skip checkpoints, archiving on idle systems.
--->
- <para>
- Prevent unnecessary checkpoints and <acronym>WAL</acronym> archiving on
- otherwise-idle systems (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-08 [a507b8690] Add WAL consistency checking facility.
-2017-03-14 [bb4a39637] hash: Support WAL consistency checking.
--->
- <para>
- Add <xref linkend="guc-wal-consistency-checking"/> server parameter
- to add details to <acronym>WAL</acronym> that can be sanity-checked on
- the standby (Kuntal Ghosh, Robert Haas)
- </para>
-
- <para>
- Any sanity-check failure generates a fatal error on the standby.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-05 [00b6b6feb] Allow -\-with-wal-segsize=n up to n=1024MB
--->
- <para>
- Increase the maximum configurable <acronym>WAL</acronym> segment size
- to one gigabyte (Beena Emerson)
- </para>
-
- <para>
- A larger <acronym>WAL</acronym> segment size allows for fewer
- <xref linkend="guc-archive-command"/> invocations and fewer
- <acronym>WAL</acronym> files to manage.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-01-20 [665d1fad9] Logical replication
-2017-03-23 [7c4f52409] Logical replication support for initial data copy
-2017-04-12 [ff7bce174] Add max_sync_workers_per_subscription to postgresql.conf
--->
- <para>
- Add the ability to <link linkend="logical-replication">logically
- replicate</link> tables to standby servers (Petr Jelinek)
- </para>
-
- <para>
- Logical replication allows more flexibility than physical
- replication does, including replication between different major
- versions of <productname>PostgreSQL</productname> and selective
- replication.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-19 [3901fd70c] Support quorum-based synchronous replication.
--->
- <para>
- Allow waiting for commit acknowledgment from standby
- servers irrespective of the order they appear in <xref
- linkend="guc-synchronous-standby-names"/> (Masahiko Sawada)
- </para>
-
- <para>
- Previously the server always waited for the active standbys that
- appeared first in <varname>synchronous_standby_names</varname>. The new
- <varname>synchronous_standby_names</varname> keyword <literal>ANY</literal> allows
- waiting for any number of standbys irrespective of their ordering.
- This is known as quorum commit.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-14 [f6d6d2920] Change default values for backup and replication paramet
-2017-05-02 [34fc61673] Change hot_standby default value to 'on'
--->
- <para>
- Reduce configuration changes necessary to perform streaming backup
- and replication (Magnus Hagander, Dang Minh Huong)
- </para>
-
- <para>
- Specifically, the defaults were changed for <xref
- linkend="guc-wal-level"/>, <xref linkend="guc-max-wal-senders"/>,
- <xref linkend="guc-max-replication-slots"/>, and <xref
- linkend="guc-hot-standby"/> to make them suitable for these usages
- out-of-the-box.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-09 [be37c2120] Enable replication connections by default in pg_hba.conf
--->
- <para>
- Enable replication from localhost connections by default in
- <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- (Michael Paquier)
- </para>
-
- <para>
- Previously <filename>pg_hba.conf</filename>'s replication connection
- lines were commented out by default. This is particularly useful for
- <application><xref linkend="app-pgbasebackup"/></application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-23 [6912acc04] Replication lag tracking for walsenders
--->
- <para>
- Add columns to <link
- linkend="pg-stat-replication-view"><structname>pg_stat_replication</structname></link>
- to report replication delay times (Thomas Munro)
- </para>
-
- <para>
- The new columns are <structfield>write_lag</structfield>,
- <structfield>flush_lag</structfield>, and <structfield>replay_lag</structfield>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-03 [35250b6ad] New recovery target recovery_target_lsn
--->
- <para>
- Allow specification of the recovery stopping point by Log Sequence
- Number (<acronym>LSN</acronym>) in
- <filename>recovery.conf</filename>
- (Michael Paquier)
- </para>
-
- <para>
- Previously the stopping point could only be selected by timestamp or
- XID.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-22 [017e4f258] Expose waitforarchive option through pg_stop_backup()
-2017-08-05 [52f8a59dd] Make pg_stop_backup's wait_for_archive flag work on stan
--->
- <para>
- Allow users to disable <link
- linkend="functions-admin"><function>pg_stop_backup()</function></link>'s
- waiting for all <acronym>WAL</acronym> to be archived (David Steele)
- </para>
-
- <para>
- An optional second argument to <function>pg_stop_backup()</function>
- controls that behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-12 [a924c327e] Add support for temporary replication slots
--->
- <para>
- Allow creation of <link
- linkend="functions-replication-table">temporary replication slots</link>
- (Petr Jelinek)
- </para>
-
- <para>
- Temporary slots are automatically removed on session exit or error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-22 [9b013dc23] Improve performance of replay of AccessExclusiveLocks
--->
- <para>
- Improve performance of hot standby replay with better tracking of
- Access Exclusive locks (Simon Riggs, David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-04 [728bd991c] Speedup 2PC recovery by skipping two phase state files i
--->
- <para>
- Speed up two-phase commit recovery performance (Stas Kelvich,
- Nikhil Sontakke, Michael Paquier)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-08 [fcec6caaf] Support XMLTABLE query expression
--->
- <para>
- Add <link
- linkend="functions-xml-processing-xmltable"><function>XMLTABLE</function></link>
- function that converts <type>XML</type>-formatted data into a row set
- (Pavel Stehule, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-05 [c54159d44] Make locale-dependent regex character classes work for l
--->
- <para>
- Fix regular expressions' character class handling for large character
- codes, particularly Unicode characters above <literal>U+7FF</literal>
- (Tom Lane)
- </para>
-
- <para>
- Previously, such characters were never recognized as belonging to
- locale-dependent character classes such as <literal>[[:alpha:]]</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-12-07 [f0e44751d] Implement table partitioning.
--->
- <para>
- Add table <link linkend="sql-createtable-partition">partitioning
- syntax</link> that automatically creates partition constraints and
- handles routing of tuple insertions and updates (Amit Langote)
- </para>
-
- <para>
- The syntax supports range and list partitioning.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-04 [8c48375e5] Implement syntax for transition tables in AFTER triggers
-2017-04-04 [5ebeb579b] Follow-on cleanup for the transition table patch.
-2017-03-31 [597027163] Add transition table support to plpgsql.
--->
- <para>
- Add <link linkend="sql-createtrigger"><literal>AFTER</literal> trigger</link>
- transition tables to record changed rows (Kevin Grittner, Thomas
- Munro)
- </para>
-
- <para>
- Transition tables are accessible from triggers written in
- server-side languages.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-05 [093129c9d] Add support for restrictive RLS policies
--->
- <para>
- Allow <link linkend="sql-createpolicy">restrictive row-level
- security policies</link> (Stephen Frost)
- </para>
-
- <para>
- Previously all security policies were permissive, meaning that any
- matching policy allowed access. A restrictive policy must
- match for access to be granted. These policy types can be combined.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-31 [64d4da511] For foreign keys, check REFERENCES privilege only on the
--->
- <para>
- When creating a foreign-key constraint, check
- for <literal>REFERENCES</literal> permission on only the referenced table
- (Tom Lane)
- </para>
-
- <para>
- Previously <literal>REFERENCES</literal> permission on the referencing
- table was also required. This appears to have stemmed from a
- misreading of the SQL standard. Since creating a foreign key (or
- any other type of) constraint requires ownership privilege on the
- constrained table, additionally requiring <literal>REFERENCES</literal>
- permission seems rather pointless.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-28 [ab89e465c] Altering default privileges on schemas
--->
- <para>
- Allow <link linkend="sql-alterdefaultprivileges">default
- permissions</link> on schemas (Matheus Oliveira)
- </para>
-
- <para>
- This is done using the <literal>ALTER DEFAULT PRIVILEGES</literal> command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-10 [2ea5b06c7] Add CREATE SEQUENCE AS <data type> clause
--->
- <para>
- Add <link linkend="sql-createsequence"><command>CREATE SEQUENCE
- AS</command></link> command to create a sequence matching an integer data type
- (Peter Eisentraut)
- </para>
-
- <para>
- This simplifies the creation of sequences matching the range of
- base columns.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-10 [279c439c7] Support "COPY view FROM" for views with INSTEAD OF INSER
--->
- <para>
- Allow <literal>COPY <replaceable>view</replaceable>
- FROM <replaceable>source</replaceable></literal> on views with <literal>INSTEAD
- INSERT</literal> triggers (Haribabu Kommi)
- </para>
-
- <para>
- The triggers are fed the data rows read by <command>COPY</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-14 [aefeb6874] Allow referring to functions without arguments when uniq
--->
- <para>
- Allow the specification of a function name without arguments in
- <acronym>DDL</acronym> commands, if it is unique (Peter Eisentraut)
- </para>
-
- <para>
- For example, allow <link linkend="sql-dropfunction"><command>DROP
- FUNCTION</command></link> on a function name without arguments if there
- is only one function with that name. This behavior is required by the
- <acronym>SQL</acronym> standard.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-06 [583f6c414] Allow dropping multiple functions at once
--->
- <para>
- Allow multiple functions, operators, and aggregates to be dropped
- with a single <command>DROP</command> command (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-15 [6d16ecc64] Add CREATE COLLATION IF NOT EXISTS clause
-2017-03-20 [b6fb534f1] Add IF NOT EXISTS for CREATE SERVER and CREATE USER MAPP
--->
- <para>
- Support <literal>IF NOT EXISTS</literal>
- in <link linkend="sql-createserver"><command>CREATE SERVER</command></link>,
- <link linkend="sql-createusermapping"><command>CREATE USER MAPPING</command></link>,
- and <link linkend="sql-createcollation"><command>CREATE COLLATION</command></link>
- (Anastasia Lubennikova, Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-25 [70adf2fbe] Make VACUUM VERBOSE report the number of skipped frozen
-2017-03-03 [9eb344faf] Allow vacuums to report oldestxmin
--->
- <para>
- Make <link linkend="sql-vacuum"><command>VACUUM VERBOSE</command></link> report
- the number of skipped frozen pages and oldest xmin (Masahiko
- Sawada, Simon Riggs)
- </para>
-
- <para>
- This information is also included in <xref
- linkend="guc-log-autovacuum-min-duration"/> output.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-23 [7e26e02ee] Prefetch blocks during lazy vacuum's truncation scan
--->
- <para>
- Improve speed of <command>VACUUM</command>'s removal of trailing empty
- heap pages (Claudio Freire, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-31 [e306df7f9] Full Text Search support for JSON and JSONB
--->
- <para>
- Add full text search support for <type>JSON</type> and <type>JSONB</type>
- (Dmitry Dolgov)
- </para>
-
- <para>
- The functions <function>ts_headline()</function> and
- <function>to_tsvector()</function> can now be used on these data types.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-15 [c7a9fa399] Add support for EUI-64 MAC addresses as macaddr8
--->
- <para>
- Add support for <acronym>EUI-64</acronym> <acronym>MAC</acronym> addresses, as a
- new data type <link linkend="datatype-macaddr8"><type>macaddr8</type></link>
- (Haribabu Kommi)
- </para>
-
- <para>
- This complements the existing support
- for <acronym>EUI-48</acronym> <acronym>MAC</acronym> addresses
- (type <type>macaddr</type>).
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-06 [321732705] Identity columns
--->
- <para>
- Add <link linkend="sql-createtable">identity columns</link> for
- assigning a numeric value to columns on insert (Peter Eisentraut)
- </para>
-
- <para>
- These are similar to <type>SERIAL</type> columns, but are
- <acronym>SQL</acronym> standard compliant.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-07 [0ab9c56d0] Support renaming an existing value of an enum type.
--->
- <para>
- Allow <link linkend="datatype-enum"><type>ENUM</type></link> values to be
- renamed (Dagfinn Ilmari Manns&aring;ker)
- </para>
-
- <para>
- This uses the syntax <link linkend="sql-altertype"><command>ALTER
- TYPE ... RENAME VALUE</command></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-22 [502a3832c] Correctly handle array pseudotypes in to_json and to_jso
--->
- <para>
- Properly treat array pseudotypes
- (<type>anyarray</type>) as arrays in <link
- linkend="functions-json-creation-table"><function>to_json()</function></link>
- and <function>to_jsonb()</function> (Andrew Dunstan)
- </para>
-
- <para>
- Previously columns declared as <type>anyarray</type> (particularly those
- in the <structname>pg_stats</structname> view) were converted to <type>JSON</type>
- strings rather than arrays.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-17 [323b96aa3] Register missing money operators in system catalogs
--->
- <para>
- Add operators for multiplication and division
- of <link linkend="datatype-money"><type>money</type></link> values
- with <type>int8</type> values (Peter Eisentraut)
- </para>
-
- <para>
- Previously such cases would result in converting the <type>int8</type>
- values to <type>float8</type> and then using
- the <type>money</type>-and-<type>float8</type> operators. The new behavior
- avoids possible precision loss. But note that division
- of <type>money</type> by <type>int8</type> now truncates the quotient, like
- other integer-division cases, while the previous behavior would have
- rounded.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-14 [656df624c] Add overflow checks to money type input function
--->
- <para>
- Check for overflow in the <type>money</type> type's input function
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-08-17 [cf9b0fea5] Implement regexp_match(), a simplified alternative to re
--->
- <para>
- Add simplified <link
- linkend="functions-posix-regexp"><function>regexp_match()</function></link>
- function (Emre Hasegeli)
- </para>
-
- <para>
- This is similar to <function>regexp_matches()</function>, but it only
- returns results from the first match so it does not need to return a
- set, making it easier to use for simple cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-18 [d00ca333c] Implement array version of jsonb_delete and operator
--->
- <para>
- Add a version of <type>jsonb</type>'s <link
- linkend="functions-jsonb-op-table">delete operator</link> that takes
- an array of keys to delete (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-06 [cf35346e8] Make json_populate_record and friends operate recursivel
--->
- <para>
- Make <link linkend="functions-json-processing-table"><function>json_populate_record()</function></link>
- and related functions process JSON arrays and objects recursively
- (Nikita Glukhov)
- </para>
-
- <para>
- With this change, array-type fields in the destination SQL type are
- properly converted from JSON arrays, and composite-type fields are
- properly converted from JSON objects. Previously, such cases would
- fail because the text representation of the JSON value would be fed
- to <function>array_in()</function> or <function>record_in()</function>, and its
- syntax would not match what those input functions expect.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-23 [86f31695f] Add txid_current_ifassigned().
--->
- <para>
- Add function <link
- linkend="functions-txid-snapshot"><function>txid_current_if_assigned()</function></link>
- to return the current transaction ID or <literal>NULL</literal> if no
- transaction ID has been assigned (Craig Ringer)
- </para>
-
- <para>
- This is different from <link
- linkend="functions-txid-snapshot"><function>txid_current()</function></link>,
- which always returns a transaction ID, assigning one if necessary.
- Unlike that function, this function can be run on standby servers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-24 [857ee8e39] Add a txid_status function.
--->
- <para>
- Add function <link
- linkend="functions-txid-snapshot"><function>txid_status()</function></link>
- to check if a transaction was committed (Craig Ringer)
- </para>
-
- <para>
- This is useful for checking after an abrupt disconnection whether
- your previous transaction committed and you just didn't receive
- the acknowledgment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-19 [30bcebbdc] Allow negative years in make_date to represent BC years
--->
- <para>
- Allow <link
- linkend="functions-datetime-table"><function>make_date()</function></link>
- to interpret negative years as <acronym>BC</acronym> years (&Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-28 [d3cd36a13] Make to_timestamp() and to_date() range-check fields of
--->
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- and <function>to_date()</function> reject
- out-of-range input fields (Artur Zakirov)
- </para>
-
- <para>
- For example,
- previously <literal>to_date('2009-06-40','YYYY-MM-DD')</literal> was
- accepted and returned <literal>2009-07-10</literal>. It will now generate
- an error.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-27 [70ec3f1f8] PL/Python: Add cursor and execute methods to plan object
--->
- <para>
- Allow PL/Python's <function>cursor()</function> and <function>execute()</function>
- functions to be called as methods of their plan-object arguments
- (Peter Eisentraut)
- </para>
-
- <para>
- This allows a more object-oriented programming style.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-13 [55caaaeba] Improve handling of array elements as getdiag_targets an
--->
- <para>
- Allow PL/pgSQL's <command>GET DIAGNOSTICS</command> statement to retrieve
- values into array elements (Tom Lane)
- </para>
-
- <para>
- Previously, a syntactic restriction prevented the target variable
- from being an array element.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="pltcl">PL/Tcl</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-11-06 [26abb50c4] Support PL/Tcl functions that return composite types and
--->
- <para>
- Allow PL/Tcl functions to return composite types and sets
- (Karl Lehenbauer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-11 [b58fd4a9c] Add a "subtransaction" command to PL/Tcl.
--->
- <para>
- Add a subtransaction command to PL/Tcl (Victor Wagner)
- </para>
-
- <para>
- This allows PL/Tcl queries to fail without aborting the entire
- function.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-07 [0d2b1f305] Invent start_proc parameters for PL/Tcl.
--->
- <para>
- Add server parameters <xref linkend="guc-pltcl-start-proc"/>
- and <xref linkend="guc-pltclu-start-proc"/>, to allow initialization
- functions to be called on PL/Tcl startup (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
- </sect3>
-
- <sect3>
- <title>Client Interfaces</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-11-03 [274bb2b38] libpq: Allow connection strings and URIs to specify mult
-2017-05-19 [5f374fe7a] libpq: Try next host if one of them times out.
-2017-07-10 [7b02ba62e] Allow multiple hostaddrs to go with multiple hostnames.
--->
- <para>
- Allow specification of <link linkend="libpq-connect-host">multiple
- host names or addresses</link> in libpq connection strings and URIs
- (Robert Haas, Heikki Linnakangas)
- </para>
-
- <para>
- libpq will connect to the first responsive server in the list.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-29 [721f7bd3c] libpq: Add target_session_attrs parameter.
--->
- <para>
- Allow libpq connection strings and URIs to request a <link
- linkend="libpq-connect-target-session-attrs">read/write host</link>,
- that is a master server rather than a standby server
- (Victor Wagner, Mithun Cy)
- </para>
-
- <para>
- This is useful when multiple host names are
- specified. It is controlled by libpq connection parameter
- <option>target_session_attrs</option>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-24 [ba005f193] Allow password file name to be specified as a libpq conn
--->
- <para>
- Allow the <link linkend="libpq-connect-passfile">password file name</link>
- to be specified as a libpq connection parameter (Julian Markwort)
- </para>
-
- <para>
- Previously this could only be specified via an environment variable.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-05-03 [8f8b9be51] Add PQencryptPasswordConn function to libpq, use it in p
--->
- <para>
- Add function <link
- linkend="libpq-pqencryptpasswordconn"><function>PQencryptPasswordConn()</function></link>
- to allow creation of more types of encrypted passwords on the
- client side (Michael Paquier, Heikki Linnakangas)
- </para>
-
- <para>
- Previously only <literal>MD5</literal>-encrypted passwords could be created
- using <link
- linkend="libpq-pqencryptpassword"><function>PQencryptPassword()</function></link>.
- This new function can also create <link
- linkend="auth-pg-hba-conf"><literal>SCRAM-SHA-256</literal></link>-encrypted
- passwords.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-16 [a7b5573d6] Remove separate version numbering for ecpg preprocessor.
--->
- <para>
- Change <application>ecpg</application> preprocessor version from 4.12 to 10
- (Tom Lane)
- </para>
-
- <para>
- Henceforth the <application>ecpg</application> version will match
- the <productname>PostgreSQL</productname> distribution version number.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-03-30 [e984ef586] Support \if ... \elif ... \else ... \endif in psql scrip
-2017-04-02 [5dbc5da11] Fix behavior of psql's \p to agree with \g, \w, etc.
-2017-04-02 [68dba97a4] Document psql's behavior of recalling the previously exe
--->
- <para>
- Add conditional branch support to <application>psql</application> (Corey
- Huinker)
- </para>
-
- <para>
- This feature adds <application>psql</application>
- meta-commands <command>\if</command>, <command>\elif</command>, <command>\else</command>,
- and <command>\endif</command>. This is primarily helpful for scripting.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-07 [b2678efd4] psql: Add \gx command
--->
- <para>
- Add <application>psql</application> <command>\gx</command> meta-command to execute
- (<command>\g</command>) a query in expanded mode (<command>\x</command>)
- (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-01 [f833c847b] Allow psql variable substitution to occur in backtick co
--->
- <para>
- Expand <application>psql</application> variable references in
- backtick-executed strings (Tom Lane)
- </para>
-
- <para>
- This is particularly useful in the new <application>psql</application>
- conditional branch commands.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-30 [511ae628f] Make psql reject attempts to set special variables to in
-2017-02-01 [86322dc7e] Improve psql's behavior for \set and \unset of its contr
-2017-02-02 [fd6cd6980] Clean up psql's behavior for a few more control variable
--->
- <para>
- Prevent <application>psql</application>'s special variables from being set to
- invalid values (Daniel V&eacute;rit&eacute;, Tom Lane)
- </para>
-
- <para>
- Previously, setting one of <application>psql</application>'s special variables
- to an invalid value silently resulted in the default behavior.
- <command>\set</command> on a special variable now fails if the proposed
- new value is invalid. As a special exception, <command>\set</command>
- with an empty or omitted new value, on a boolean-valued special
- variable, still has the effect of setting the variable
- to <literal>on</literal>; but now it actually acquires that value rather
- than an empty string. <command>\unset</command> on a special variable now
- explicitly sets the variable to its default value, which is also
- the value it acquires at startup. In sum, a control variable now
- always has a displayable value that reflects
- what <application>psql</application> is actually doing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-06 [a6c678f01] Add psql variables showing server version and psql versi
--->
- <para>
- Add variables showing server version and <application>psql</application> version
- (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-03 [a0f357e57] psql: Split up "Modifiers" column in \d and \dD
--->
- <para>
- Improve <application>psql</application>'s <command>\d</command> (display relation)
- and <command>\dD</command> (display domain) commands to show collation,
- nullable, and default properties in separate columns (Peter
- Eisentraut)
- </para>
-
- <para>
- Previously they were shown in a single <quote>Modifiers</quote> column.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-07-27 [77cb4a1d6] Standardize describe.c's behavior for no-matching-object
--->
- <para>
- Make the various <command>\d</command> commands handle no-matching-object
- cases more consistently (Daniel Gustafsson)
- </para>
-
- <para>
- They now all print the message about that to stderr, not stdout,
- and the message wording is more consistent.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-18 [49917dbd7] Improve psql's tab completion for ALTER EXTENSION foo UP
-2016-08-18 [8019b5a89] Improve psql's tab completion for \l.
-2016-09-01 [76f9dd4fa] Improve tab completion for BEGIN & START|SET TRANSACTION
-2016-09-11 [52803098a] psql tab completion for CREATE DATABASE ... TEMPLATE ...
-2016-09-12 [63c1a8719] Fix recent commit for tab-completion of database templat
-2016-11-03 [1d15d0db5] psql: Tab-complete LOCK [TABLE] ... IN {ACCESS|ROW|SHARE
-2016-11-04 [927d7bb6b] Improve tab completion for CREATE TRIGGER.
-2016-11-08 [577f0bdd2] psql: Tab completion for renaming enum values.
-2017-03-01 [b5a388392] psql: Add tab completion for DEALLOCATE
-2017-03-16 [d7d77f382] psql: Add completion for \help DROP|ALTER
--->
- <para>
- Improve <application>psql</application>'s tab completion (Jeff Janes,
- Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro,
- Kevin Grittner, Dagfinn Ilmari Manns&aring;ker)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="pgbench"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-11-09 [41124a91e] pgbench: Allow the transaction log file prefix to be cha
--->
- <para>
- Add <application>pgbench</application> option <option>--log-prefix</option> to
- control the log file prefix (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-20 [cdc2a7047] Allow backslash line continuations in pgbench's meta com
--->
- <para>
- Allow <application>pgbench</application>'s meta-commands to span multiple
- lines (Fabien Coelho)
- </para>
-
- <para>
- A meta-command can now be continued onto the next line by writing
- backslash-return.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-11 [796818442] Remove pgbench's restriction on placement of -M switch.
--->
- <para>
- Remove restriction on placement of <option>-M</option> option relative to
- other command line options (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-01-17 [cada1af31] Add compression support to pg_receivexlog
--->
- <para>
- Add <link
- linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
- option <option>-Z</option>/<option>--compress</option> to specify compression
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-04 [7c030783a] Add pg_recvlogical -\-endpos=LSN
--->
- <para>
- Add <link
- linkend="app-pgrecvlogical"><application>pg_recvlogical</application></link> option
- <option>--endpos</option> to specify the ending position (Craig Ringer)
- </para>
-
- <para>
- This complements the existing <option>--startpos</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-19 [5d58c07a4] initdb pg_basebackup: Rename -\-noxxx options to -\-no-x
--->
- <para>
- Rename <link linkend="app-initdb"><application>initdb</application></link>
- options <option>--noclean</option> and <option>--nosync</option> to be spelled
- <option>--no-clean</option> and <option>--no-sync</option> (Vik Fearing,
- Peter Eisentraut)
- </para>
-
- <para>
- The old spellings are still supported.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link>,
- <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
- <link linkend="app-pgrestore"><application>pg_restore</application></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-09-20 [46b55e7f8] pg_restore: Add -N option to exclude schemas
--->
- <para>
- Allow <application>pg_restore</application> to exclude schemas (Michael Banck)
- </para>
-
- <para>
- This adds a new <option>-N</option>/<option>--exclude-schema</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-29 [4fafa579b] Add -\-no-blobs option to pg_dump
--->
- <para>
- Add <option>--no-blobs</option> option to
- <application>pg_dump</application> (Guillaume Lelarge)
- </para>
-
- <para>
- This suppresses dumping of large objects.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-07 [9a83d56b3] Allow pg_dumpall to dump roles w/o user passwords
--->
- <para>
- Add <application>pg_dumpall</application> option
- <option>--no-role-passwords</option> to omit role passwords
- (Robins Tharakan, Simon Riggs)
- </para>
-
- <para>
- This allows use of <application>pg_dumpall</application> by non-superusers;
- without this option, it fails due to inability to read passwords.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-16 [e4892c681] pg_dump: Support using synchronized snapshots on standby
--->
- <para>
- Support using synchronized snapshots when dumping from a standby
- server (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-22 [96a7128b7] Sync pg_dump and pg_dumpall output
--->
- <para>
- Issue <function>fsync()</function> on the output files generated by
- <application>pg_dump</application> and
- <application>pg_dumpall</application> (Michael Paquier)
- </para>
-
- <para>
- This provides more security that the output is safely stored on
- disk before the program exits. This can be disabled with
- the new <option>--no-sync</option> option.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
-
- <title><xref linkend="app-pgbasebackup"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-10-23 [56c7d8d45] Allow pg_basebackup to stream transaction log in tar mod
-2016-12-21 [ecbdc4c55] Forbid invalid combination of options in pg_basebackup.
--->
- <para>
- Allow <application>pg_basebackup</application> to stream write-ahead log in
- tar mode (Magnus Hagander)
- </para>
-
- <para>
- The <acronym>WAL</acronym> will be stored in a separate tar file from
- the base backup.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-16 [e7b020f78] Make pg_basebackup use temporary replication slots
--->
- <para>
- Make <application>pg_basebackup</application> use temporary replication slots
- (Magnus Hagander)
- </para>
-
- <para>
- Temporary replication slots will be used by default when
- <application>pg_basebackup</application> uses WAL streaming with default
- options.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-29 [bc34223bc] pg_basebackup pg_receivexlog: Issue fsync more carefully
--->
- <para>
- Be more careful about fsync'ing in all required places
- in <application>pg_basebackup</application> and
- <application>pg_receivewal</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-29 [6ed2d8584] pg_basebackup: Add -\-nosync option
-2016-10-19 [5d58c07a4] initdb pg_basebackup: Rename -\-noxxx options to -\-no-x
--->
- <para>
- Add <application>pg_basebackup</application> option <option>--no-sync</option> to
- disable fsync (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-28 [6ad8ac602] Exclude additional directories in pg_basebackup
--->
- <para>
- Improve <application>pg_basebackup</application>'s handling of which
- directories to skip (David Steele)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><application><xref linkend="app-pg-ctl"/></application></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-09-21 [e7010ce47] pg_ctl: Add wait option to promote action
--->
- <para>
- Add wait option for <application><xref linkend="app-pg-ctl"/></application>'s
- promote operation (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-19 [0be22457d] pg_ctl: Add long options for -w and -W
--->
- <para>
- Add long options for <application>pg_ctl</application> wait (<option>--wait</option>)
- and no-wait (<option>--no-wait</option>) (Vik Fearing)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-19 [caf936b09] pg_ctl: Add long option for -o
--->
- <para>
- Add long option for <application>pg_ctl</application> server options
- (<option>--options</option>) (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-06-28 [f13ea95f9] Change pg_ctl to detect server-ready by watching status
--->
- <para>
- Make <literal>pg_ctl start --wait</literal> detect server-ready by
- watching <filename>postmaster.pid</filename>, not by attempting connections
- (Tom Lane)
- </para>
-
- <para>
- The postmaster has been changed to report its ready-for-connections
- status in <filename>postmaster.pid</filename>, and <application>pg_ctl</application>
- now examines that file to detect whether startup is complete.
- This is more efficient and reliable than the old method, and it
- eliminates postmaster log entries about rejected connection
- attempts during startup.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-06-26 [c61559ec3] Reduce pg_ctl's reaction time when waiting for postmaste
--->
- <para>
- Reduce <application>pg_ctl</application>'s reaction time when waiting for
- postmaster start/stop (Tom Lane)
- </para>
-
- <para>
- <application>pg_ctl</application> now probes ten times per second when waiting
- for a postmaster state change, rather than once per second.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-07-05 [1bac5f552] pg_ctl: Make failure to complete operation a nonzero exi
--->
- <para>
- Ensure that <application>pg_ctl</application> exits with nonzero status if an
- operation being waited for does not complete within the timeout
- (Peter Eisentraut)
- </para>
-
- <para>
- The <literal>start</literal> and <literal>promote</literal> operations now return
- exit status 1, not 0, in such cases. The <literal>stop</literal> operation
- has always done that.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-08-15 [ca9112a42] Stamp HEAD as 10devel.
--->
- <para>
- Change to two-part release version numbering (Peter Eisentraut, Tom
- Lane)
- </para>
-
- <para>
- Release numbers will now have two parts (e.g., <literal>10.1</literal>)
- rather than three (e.g., <literal>9.6.3</literal>).
- Major versions will now increase just the first number, and minor
- releases will increase just the second number.
- Release branches will be referred to by single numbers
- (e.g., <literal>10</literal> rather than <literal>9.6</literal>).
- This change is intended to reduce user confusion about what is a
- major or minor release of <productname>PostgreSQL</productname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-06-16 [cea258b63] Teach pgindent to skip files generated by bison or flex
-2017-06-21 [8ff6d4ec7] Adjust pgindent script to use pg_bsd_indent 2.0.
-2017-06-21 [e3860ffa4] Initial pgindent run with pg_bsd_indent version 2.0.
-2017-06-21 [c7b8998eb] Phase 2 of pgindent updates.
-2017-06-21 [382ceffdf] Phase 3 of pgindent updates.
-2017-06-21 [81f056c72] Remove entab and associated detritus.
--->
- <para>
- Improve behavior of <application>pgindent</application>
- (Piotr Stefaniak, Tom Lane)
- </para>
-
- <para>
- We have switched to a new version of <application>pg_bsd_indent</application>
- based on recent improvements made by the FreeBSD project. This
- fixes numerous small bugs that led to odd C code formatting
- decisions. Most notably, lines within parentheses (such as in a
- multi-line function call) are now uniformly indented to match the
- opening paren, even if that would result in code extending past the
- right margin.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-23 [eccfef81e] ICU support
--->
- <para>
- Allow the <link linkend="configure"><acronym>ICU</acronym></link> library to
- optionally be used for collation support (Peter Eisentraut)
- </para>
-
- <para>
- The <acronym>ICU</acronym> library has versioning that allows detection
- of collation changes between versions. It is enabled via configure
- option <option>--with-icu</option>. The default still uses the operating
- system's native collation library.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-04 [c8ead2a39] Provide DLLEXPORT markers for C functions via PG_FUNCTIO
--->
- <para>
- Automatically mark all <link
- linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</function></link> functions
- as <literal>DLLEXPORT</literal>-ed on
- <systemitem class="osname">Windows</systemitem> (Laurenz Albe)
- </para>
-
- <para>
- If third-party code is using <literal>extern</literal> function
- declarations, they should also add <literal>DLLEXPORT</literal> markers
- to those declarations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-08 [1833f1a1c] Simplify code by getting rid of SPI_push, SPI_pop, SPI_r
--->
- <para>
- Remove <acronym>SPI</acronym> functions <function>SPI_push()</function>,
- <function>SPI_pop()</function>, <function>SPI_push_conditional()</function>,
- <function>SPI_pop_conditional()</function>,
- and <function>SPI_restore_connection()</function> as unnecessary (Tom Lane)
- </para>
-
- <para>
- Their functionality now happens automatically. There are now no-op
- macros by these names so that external modules don't need to be
- updated immediately, but eventually such calls should be removed.
- </para>
-
- <para>
- A side effect of this change is that <function>SPI_palloc()</function> and
- allied functions now require an active SPI connection; they do not
- degenerate to simple <function>palloc()</function> if there is none. That
- previous behavior was not very useful and posed risks of unexpected
- memory leaks.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-02 [13e14a78e] Management of free memory pages.
-2016-12-02 [13df76a53] Introduce dynamic shared memory areas.
-2016-12-19 [e13029a5c] Provide a DSA area for all parallel queries.
--->
- <para>
- Allow shared memory to be dynamically allocated (Thomas Munro,
- Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-27 [58b25e981] Add "Slab" MemoryContext implementation for efficient eq
--->
- <para>
- Add slab-like memory allocator for efficient fixed-size allocations
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-09 [ecb0d20a9] Use unnamed POSIX semaphores, if available, on Linux and
--->
- <para>
- Use <acronym>POSIX</acronym> semaphores rather than SysV semaphores
- on <systemitem class="osname">Linux</systemitem> and <systemitem
- class="osname">FreeBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- This avoids platform-specific limits on SysV semaphore usage.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-07 [e8fdbd58f] Improve 64bit atomics support.
--->
- <para>
- Improve support for 64-bit atomics (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-10 [f8f1430ae] Enable 64 bit atomics on ARM64.
--->
- <para>
- Enable 64-bit atomic operations on <acronym>ARM64</acronym> (Roman
- Shaposhnik)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-01-02 [1d63f7d2d] Use clock_gettime(), if available, in instr_time measure
--->
- <para>
- Switch to using <function>clock_gettime()</function>, if available, for
- duration measurements (Tom Lane)
- </para>
-
- <para>
- <function>gettimeofday()</function> is still used
- if <function>clock_gettime()</function> is not available.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-12-05 [fe0a0b599] Replace PostmasterRandom() with a stronger source, secon
-2017-07-03 [bf723a274] Forbid gen_random_uuid() with -\-disable-strong-random
--->
- <para>
- Add more robust random number generators to be used for
- cryptographically secure uses (Magnus Hagander, Michael Paquier,
- Heikki Linnakangas)
- </para>
-
- <para>
- If no strong random number generator can be
- found, <link linkend="configure">configure</link> will fail unless
- the <option>--disable-strong-random</option> option is used. However, with
- this option, <link linkend="pgcrypto"><application>pgcrypto</application></link>
- functions requiring a strong random number generator will be disabled.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-15 [d7ab908fb] Distinguish wait-for-connection from wait-for-write-read
--->
- <para>
- Allow <function>WaitLatchOrSocket()</function> to wait for socket
- connection on Windows (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-06 [3f902354b] Clean up after insufficiently-researched optimization of
--->
- <para>
- <filename>tupconvert.c</filename> functions no longer convert tuples just to
- embed a different composite-type OID in them (Ashutosh Bapat, Tom Lane)
- </para>
-
- <para>
- The majority of callers don't care about the composite-type OID;
- but if the result tuple is to be used as a composite Datum, steps
- should be taken to make sure the correct OID is inserted in it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-11 [2b860f52e] Remove "sco" and "unixware" ports.
--->
- <para>
- Remove <systemitem class="osname">SCO</systemitem> and <systemitem
- class="osname">Unixware</systemitem> ports (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-18 [e8306745e] doc: Speed up XSLT builds
-2016-08-24 [0e4cc1fc5] doc: Fix XSLT speedup with older upstream stylesheet ver
--->
- <para>
- Overhaul documentation <link linkend="docguide-toolsets">build
- process</link> (Alexander Lakhin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-06 [510074f9f] Remove use of Jade and DSSSL
--->
- <para>
- Use <acronym>XSLT</acronym> to build the <productname>PostgreSQL</productname>
- documentation (Peter Eisentraut)
- </para>
-
- <para>
- Previously <application>Jade</application>, <acronym>DSSSL</acronym>, and
- <application>JadeTex</application> were used.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-15 [e36ddab11] Build HTML documentation using XSLT stylesheets by defau
--->
- <para>
- Build <acronym>HTML</acronym> documentation using <acronym>XSLT</acronym>
- stylesheets by default (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-09-29 [8e91e12bc] Allow contrib/file_fdw to read from a program, like COPY
--->
- <para>
- Allow <link linkend="file-fdw"><application>file_fdw</application></link> to read
- from program output as well as files (Corey Huinker, Adam Gomaa)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-21 [7012b132d] postgres_fdw: Push down aggregates to remote servers.
--->
- <para>
- In <link linkend="postgres-fdw"><application>postgres_fdw</application></link>,
- push aggregate functions to the remote server, when possible
- (Jeevan Chalke, Ashutosh Bapat)
- </para>
-
- <para>
- This reduces the amount of data that must be passed from the remote
- server, and offloads aggregate computation from the requesting server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-16 [b30fb56b0] postgres_fdw: Push down FULL JOINs with restriction clau
-2017-04-24 [332bec1e6] postgres_fdw: Fix join push down with extensions
--->
- <para>
- In <application>postgres_fdw</application>, push joins to the remote server in
- more cases (David Rowley, Ashutosh Bapat, Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-26 [ae025a159] Support OID system column in postgres_fdw.
--->
- <para>
- Properly support <type>OID</type> columns in
- <application>postgres_fdw</application> tables (Etsuro Fujita)
- </para>
-
- <para>
- Previously <type>OID</type> columns always returned zeros.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-21 [f7946a92b] Add btree_gist support for enum types.
--->
- <para>
- Allow <link linkend="btree-gist"><application>btree_gist</application></link>
- and <link linkend="btree-gin"><application>btree_gin</application></link> to
- index enum types (Andrew Dunstan)
- </para>
-
- <para>
- This allows enums to be used in exclusion constraints.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-11-29 [11da83a0e] Add uuid to the set of types supported by contrib/btree_
--->
- <para>
- Add indexing support to <application>btree_gist</application> for the
- <type>UUID</type> data type (Paul Jungwirth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-09 [3717dc149] Add amcheck extension to contrib.
--->
- <para>
- Add <link linkend="amcheck"><application>amcheck</application></link> which can
- check the validity of B-tree indexes (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-27 [a6f22e835] Show ignored constants as "$N" rather than "?" in pg_sta
--->
- <para>
- Show ignored constants as <literal>$N</literal> rather than <literal>?</literal>
- in
- <link
- linkend="pgstatstatements"><application>pg_stat_statements</application></link>
- (Lukas Fittl)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-27 [f31a931fa] Improve contrib/cube's handling of zero-D cubes, infinit
--->
- <para>
- Improve <link linkend="cube"><application>cube</application></link>'s handling
- of zero-dimensional cubes (Tom Lane)
- </para>
-
- <para>
- This also improves handling of <literal>infinite</literal> and
- <literal>NaN</literal> values.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-29 [6e654546f] Don't bother to lock bufmgr partitions in pg_buffercache
--->
- <para>
- Allow <link
- linkend="pgbuffercache"><application>pg_buffercache</application></link> to run
- with fewer locks (Ivan Kartyshov)
- </para>
-
- <para>
- This makes it less disruptive when run on production systems.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-03 [e759854a0] pgstattuple: Add pgstathashindex.
--->
- <para>
- Add <link linkend="pgstattuple"><application>pgstattuple</application></link>
- function <function>pgstathashindex()</function> to view hash index
- statistics (Ashutosh Sharma)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-29 [fd321a1df] Remove superuser checks in pgstattuple
--->
- <para>
- Use <command>GRANT</command> permissions to
- control <application>pgstattuple</application> function usage (Stephen Frost)
- </para>
-
- <para>
- This allows DBAs to allow non-superusers to run these functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-10-28 [d4b5d4cad] pgstattuple: Don't take heavyweight locks when examining
--->
- <para>
- Reduce locking when <application>pgstattuple</application> examines hash
- indexes (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-03-17 [fef2bcdcb] pageinspect: Add page_checksum function
--->
- <para>
- Add <link linkend="pageinspect"><application>pageinspect</application></link>
- function <function>page_checksum()</function> to show a page's checksum
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-04-04 [193f5f9e9] pageinspect: Add bt_page_items function with bytea argum
--->
- <para>
- Add <application>pageinspect</application>
- function <function>bt_page_items()</function> to print page items from a
- page image (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-02-02 [08bf6e529] pageinspect: Support hash indexes.
--->
- <para>
- Add hash index support to <application>pageinspect</application> (Jesper
- Pedersen, Ashutosh Sharma)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2 id="release-10-acknowledgements">
- <title>Acknowledgments</title>
-
- <para>
- The following individuals (in alphabetical order) have contributed to this
- release as patch authors, committers, reviewers, testers, or reporters of
- issues.
- </para>
-
- <simplelist>
- <member>Adam Brightwell</member>
- <member>Adam Brusselback</member>
- <member>Adam Gomaa</member>
- <member>Adam Sah</member>
- <member>Adrian Klaver</member>
- <member>Aidan Van Dyk</member>
- <member>Aleksander Alekseev</member>
- <member>Alexander Korotkov</member>
- <member>Alexander Lakhin</member>
- <member>Alexander Sosna</member>
- <member>Alexey Bashtanov</member>
- <member>Alexey Grishchenko</member>
- <member>Alexey Isayko</member>
- <member>&Aacute;lvaro Hern&aacute;ndez Tortosa</member>
- <member>&Aacute;lvaro Herrera</member>
- <member>Amit Kapila</member>
- <member>Amit Khandekar</member>
- <member>Amit Langote</member>
- <member>Amul Sul</member>
- <member>Anastasia Lubennikova</member>
- <member>Andreas Joseph Krogh</member>
- <member>Andreas Karlsson</member>
- <member>Andreas Scherbaum</member>
- <member>Andreas Seltenreich</member>
- <member>Andres Freund</member>
- <member>Andrew Dunstan</member>
- <member>Andrew Gierth</member>
- <member>Andrew Wheelwright</member>
- <member>Andrey Borodin</member>
- <member>Andrey Lizenko</member>
- <member>Andy Abelisto</member>
- <member>Antonin Houska</member>
- <member>Ants Aasma</member>
- <member>Arjen Nienhuis</member>
- <member>Arseny Sher</member>
- <member>Artur Zakirov</member>
- <member>Ashutosh Bapat</member>
- <member>Ashutosh Sharma</member>
- <member>Ashwin Agrawal</member>
- <member>Atsushi Torikoshi</member>
- <member>Ayumi Ishii</member>
- <member>Basil Bourque</member>
- <member>Beena Emerson</member>
- <member>Ben de Graaff</member>
- <member>Benedikt Grundmann</member>
- <member>Bernd Helmle</member>
- <member>Brad DeJong</member>
- <member>Brandur Leach</member>
- <member>Breen Hagan</member>
- <member>Bruce Momjian</member>
- <member>Bruno Wolff III</member>
- <member>Catalin Iacob</member>
- <member>Chapman Flack</member>
- <member>Chen Huajun</member>
- <member>Choi Doo-Won</member>
- <member>Chris Bandy</member>
- <member>Chris Richards</member>
- <member>Chris Ruprecht</member>
- <member>Christian Ullrich</member>
- <member>Christoph Berg</member>
- <member>Chuanting Wang</member>
- <member>Claudio Freire</member>
- <member>Clinton Adams</member>
- <member>Const Zhang</member>
- <member>Constantin Pan</member>
- <member>Corey Huinker</member>
- <member>Craig Ringer</member>
- <member>Cynthia Shang</member>
- <member>Dagfinn Ilmari Manns&aring;ker</member>
- <member>Daisuke Higuchi</member>
- <member>Damian Quiroga</member>
- <member>Dan Wood</member>
- <member>Dang Minh Huong</member>
- <member>Daniel Gustafsson</member>
- <member>Daniel V&eacute;rit&eacute;</member>
- <member>Daniel Westermann</member>
- <member>Daniele Varrazzo</member>
- <member>Danylo Hlynskyi</member>
- <member>Darko Prelec</member>
- <member>Dave Cramer</member>
- <member>Dave Page</member>
- <member>David Christensen</member>
- <member>David Fetter</member>
- <member>David Johnston</member>
- <member>David Rader</member>
- <member>David Rowley</member>
- <member>David Steele</member>
- <member>Dean Rasheed</member>
- <member>Denis Smirnov</member>
- <member>Denish Patel</member>
- <member>Dennis Bj&ouml;rklund</member>
- <member>Devrim G&uuml;nd&uuml;z</member>
- <member>Dilip Kumar</member>
- <member>Dilyan Palauzov</member>
- <member>Dima Pavlov</member>
- <member>Dimitry Ivanov</member>
- <member>Dmitriy Sarafannikov</member>
- <member>Dmitry Dolgov</member>
- <member>Dmitry Fedin</member>
- <member>Don Morrison</member>
- <member>Egor Rogov</member>
- <member>Eiji Seki</member>
- <member>Emil Iggland</member>
- <member>Emre Hasegeli</member>
- <member>Enrique Meneses</member>
- <member>Erik Nordstr&ouml;m</member>
- <member>Erik Rijkers</member>
- <member>Erwin Brandstetter</member>
- <member>Etsuro Fujita</member>
- <member>Eugen Konkov</member>
- <member>Eugene Kazakov</member>
- <member>Euler Taveira</member>
- <member>Fabien Coelho</member>
- <member>Fabr&iacute;zio de Royes Mello</member>
- <member>Feike Steenbergen</member>
- <member>Felix Gerzaguet</member>
- <member>Filip Jirs&aacute;k</member>
- <member>Fujii Masao</member>
- <member>Gabriele Bartolini</member>
- <member>Gabrielle Roth</member>
- <member>Gao Zengqi</member>
- <member>Gerdan Santos</member>
- <member>Gianni Ciolli</member>
- <member>Gilles Darold</member>
- <member>Giuseppe Broccolo</member>
- <member>Graham Dutton</member>
- <member>Greg Atkins</member>
- <member>Greg Burek</member>
- <member>Grigory Smolkin</member>
- <member>Guillaume Lelarge</member>
- <member>Hans Buschmann</member>
- <member>Haribabu Kommi</member>
- <member>Heikki Linnakangas</member>
- <member>Henry Boehlert</member>
- <member>Huan Ruan</member>
- <member>Ian Barwick</member>
- <member>Igor Korot</member>
- <member>Ildus Kurbangaliev</member>
- <member>Ivan Kartyshov</member>
- <member>Jaime Casanova</member>
- <member>Jakob Egger</member>
- <member>James Parks</member>
- <member>Jarred Ward</member>
- <member>Jason Li</member>
- <member>Jason O'Donnell</member>
- <member>Jason Petersen</member>
- <member>Jeevan Chalke</member>
- <member>Jeevan Ladhe</member>
- <member>Jeff Dafoe</member>
- <member>Jeff Davis</member>
- <member>Jeff Janes</member>
- <member>Jelte Fennema</member>
- <member>Jeremy Finzel</member>
- <member>Jeremy Schneider</member>
- <member>Jeroen van der Ham</member>
- <member>Jesper Pedersen</member>
- <member>Jim Mlodgenski</member>
- <member>Jim Nasby</member>
- <member>Jinyu Zhang</member>
- <member>Joe Conway</member>
- <member>Joel Jacobson</member>
- <member>John Harvey</member>
- <member>Jon Nelson</member>
- <member>Jordan Gigov</member>
- <member>Josh Berkus</member>
- <member>Josh Soref</member>
- <member>Julian Markwort</member>
- <member>Julien Rouhaud</member>
- <member>Junseok Yang</member>
- <member>Justin Muise</member>
- <member>Justin Pryzby</member>
- <member>Kacper Zuk</member>
- <member>KaiGai Kohei</member>
- <member>Karen Huddleston</member>
- <member>Karl Lehenbauer</member>
- <member>Karl O. Pinc</member>
- <member>Keith Fiske</member>
- <member>Kevin Grittner</member>
- <member>Kim Rose Carlsen</member>
- <member>Konstantin Evteev</member>
- <member>Konstantin Knizhnik</member>
- <member>Kuntal Ghosh</member>
- <member>Kurt Kartaltepe</member>
- <member>Kyle Conroy</member>
- <member>Kyotaro Horiguchi</member>
- <member>Laurenz Albe</member>
- <member>Leonardo Cecchi</member>
- <member>Ludovic Vaugeois-Pepin</member>
- <member>Lukas Fittl</member>
- <member>Magnus Hagander</member>
- <member>Maksim Milyutin</member>
- <member>Maksym Sobolyev</member>
- <member>Marc Rassbach</member>
- <member>Marc-Olaf Jaschke</member>
- <member>Marcos Castedo</member>
- <member>Marek Cvoren</member>
- <member>Mark Dilger</member>
- <member>Mark Kirkwood</member>
- <member>Mark Pether</member>
- <member>Marko Tiikkaja</member>
- <member>Markus Winand</member>
- <member>Marllius Ribeiro</member>
- <member>Marti Raudsepp</member>
- <member>Mart&iacute;n Marqu&eacute;s</member>
- <member>Masahiko Sawada</member>
- <member>Matheus Oliveira</member>
- <member>Mathieu Fenniak</member>
- <member>Merlin Moncure</member>
- <member>Michael Banck</member>
- <member>Michael Day</member>
- <member>Michael Meskes</member>
- <member>Michael Overmeyer</member>
- <member>Michael Paquier</member>
- <member>Mike Palmiotto</member>
- <member>Milos Urbanek</member>
- <member>Mithun Cy</member>
- <member>Moshe Jacobson</member>
- <member>Murtuza Zabuawala</member>
- <member>Naoki Okano</member>
- <member>Nathan Bossart</member>
- <member>Nathan Wagner</member>
- <member>Neha Khatri</member>
- <member>Neha Sharma</member>
- <member>Neil Anderson</member>
- <member>Nicolas Baccelli</member>
- <member>Nicolas Guini</member>
- <member>Nicolas Thauvin</member>
- <member>Nikhil Sontakke</member>
- <member>Nikita Glukhov</member>
- <member>Nikolaus Thiel</member>
- <member>Nikolay Nikitin</member>
- <member>Nikolay Shaplov</member>
- <member>Noah Misch</member>
- <member>Noriyoshi Shinoda</member>
- <member>Olaf Gawenda</member>
- <member>Oleg Bartunov</member>
- <member>Oskari Saarenmaa</member>
- <member>Otar Shavadze</member>
- <member>Paresh More</member>
- <member>Paul Jungwirth</member>
- <member>Paul Ramsey</member>
- <member>Pavan Deolasee</member>
- <member>Pavel Golub</member>
- <member>Pavel Han&aacute;k</member>
- <member>Pavel Raiskup</member>
- <member>Pavel Stehule</member>
- <member>Peng Sun</member>
- <member>Peter Eisentraut</member>
- <member>Peter Geoghegan</member>
- <member>Petr Jel&iacute;nek</member>
- <member>Philippe Beaudoin</member>
- <member>Pierre-Emmanuel Andr&eacute;</member>
- <member>Piotr Stefaniak</member>
- <member>Prabhat Sahu</member>
- <member>QL Zhuo</member>
- <member>Radek Slupik</member>
- <member>Rafa de la Torre</member>
- <member>Rafia Sabih</member>
- <member>Ragnar Ouchterlony</member>
- <member>Rahila Syed</member>
- <member>Rajkumar Raghuwanshi</member>
- <member>Regina Obe</member>
- <member>Richard Pistole</member>
- <member>Robert Haas</member>
- <member>Robins Tharakan</member>
- <member>Rod Taylor</member>
- <member>Roman Shaposhnik</member>
- <member>Rushabh Lathia</member>
- <member>Ryan Murphy</member>
- <member>Sandeep Thakkar</member>
- <member>Scott Milliken</member>
- <member>Sean Farrell</member>
- <member>Sebastian Luque</member>
- <member>Sehrope Sarkuni</member>
- <member>Sergey Burladyan</member>
- <member>Sergey Koposov</member>
- <member>Shay Rojansky</member>
- <member>Shinichi Matsuda</member>
- <member>Sho Kato</member>
- <member>Simon Riggs</member>
- <member>Simone Gotti</member>
- <member>Spencer Thomason</member>
- <member>Stas Kelvich</member>
- <member>Stepan Pesternikov</member>
- <member>Stephen Frost</member>
- <member>Steve Randall</member>
- <member>Steve Singer</member>
- <member>Steven Fackler</member>
- <member>Steven Winfield</member>
- <member>Suraj Kharage</member>
- <member>Sveinn Sveinsson</member>
- <member>Sven R. Kunze</member>
- <member>Tahir Fakhroutdinov</member>
- <member>Taiki Kondo</member>
- <member>Takayuki Tsunakawa</member>
- <member>Takeshi Ideriha</member>
- <member>Tatsuo Ishii</member>
- <member>Tatsuro Yamada</member>
- <member>Teodor Sigaev</member>
- <member>Thom Brown</member>
- <member>Thomas Kellerer</member>
- <member>Thomas Munro</member>
- <member>Tim Goodaire</member>
- <member>Tobias Bussmann</member>
- <member>Tom Dunstan</member>
- <member>Tom Lane</member>
- <member>Tom van Tilburg</member>
- <member>Tomas Vondra</member>
- <member>Tomonari Katsumata</member>
- <member>Tushar Ahuja</member>
- <member>Vaishnavi Prabakaran</member>
- <member>Venkata Balaji Nagothi</member>
- <member>Vicky Vergara</member>
- <member>Victor Wagner</member>
- <member>Vik Fearing</member>
- <member>Vinayak Pokale</member>
- <member>Viren Negi</member>
- <member>Vitaly Burovoy</member>
- <member>Vladimir Kunshchikov</member>
- <member>Vladimir Rusinov</member>
- <member>Yi Wen Wong</member>
- <member>Yugo Nagata</member>
- <member>Zhen Ming Yang</member>
- <member>Zhou Digoal</member>
- </simplelist>
- </sect2>
-
- </sect1>
diff --git a/doc/src/sgml/release-11.sgml b/doc/src/sgml/release-11.sgml
deleted file mode 100644
index 09b80b8af5c..00000000000
--- a/doc/src/sgml/release-11.sgml
+++ /dev/null
@@ -1,3962 +0,0 @@
-<!-- doc/src/sgml/release-11.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-11-1">
- <title>Release 11.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 11.0.
- For information about new features in major release 11, see
- <xref linkend="release-11"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 11.1</title>
-
- <para>
- A dump/restore is not required for those running 11.X.
- </para>
-
- <para>
- However, if you use the <filename>pg_stat_statements</filename> extension,
- see the changelog entry below about that.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [350410be4] 2018-10-19 00:50:16 -0400
-Branch: REL_11_STABLE [06292bb94] 2018-10-19 00:50:16 -0400
-Branch: REL_10_STABLE [09397f0ed] 2018-10-19 00:50:17 -0400
--->
- <para>
- Ensure proper quoting of transition table names
- when <application>pg_dump</application> emits <command>CREATE TRIGGER
- ... REFERENCING</command> commands (Tom Lane)
- </para>
-
- <para>
- This oversight could be exploited by an unprivileged user to gain
- superuser privileges during the next dump/reload
- or <application>pg_upgrade</application> run. (CVE-2018-16850)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [dfa608141] 2018-11-03 13:25:19 -0300
-Branch: REL_11_STABLE [33e6c34c3] 2018-11-03 13:25:29 -0300
--->
- <para>
- Apply the tablespace specified for a partitioned index when creating a
- child index (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously, child indexes were always created in the default
- tablespace.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Thomas Munro <tmunro@postgresql.org>
-Branch: master [1ce4a807e] 2018-11-03 11:05:35 +1300
-Branch: REL_11_STABLE [fd6449aa3] 2018-11-03 11:08:03 +1300
--->
- <para>
- Fix NULL handling in parallel hashed multi-batch left joins (Andrew
- Gierth, Thomas Munro)
- </para>
-
- <para>
- Outer-relation rows with null values of the hash key were omitted from
- the join result.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [14a158f9b] 2018-10-30 15:26:11 -0400
-Branch: REL_11_STABLE [2bd6dcdef] 2018-10-30 15:26:11 -0400
--->
- <para>
- Fix incorrect processing of an array-type coercion expression
- appearing within a <literal>CASE</literal> clause that has a constant
- test expression (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [040a1df61] 2018-10-24 10:56:27 -0400
-Branch: REL_11_STABLE [372102b81] 2018-10-24 10:57:35 -0400
--->
- <para>
- Fix incorrect expansion of tuples lacking recently-added columns
- (Andrew Dunstan, Amit Langote)
- </para>
-
- <para>
- This is known to lead to crashes in triggers on tables with
- recently-added columns, and could have other symptoms as well.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [15c729347] 2018-11-04 13:25:39 -0500
-Branch: REL_11_STABLE [4b0c3712c] 2018-11-04 13:25:39 -0500
-Branch: master [9b6fb9fbb] 2018-11-04 14:50:55 -0500
-Branch: REL_11_STABLE [d358da814] 2018-11-04 14:50:55 -0500
--->
- <para>
- Fix bugs with named or defaulted arguments in <command>CALL</command>
- argument lists (Tom Lane, Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [4c640f4f3] 2018-11-03 14:48:42 -0700
-Branch: REL_11_STABLE [fd59b29c8] 2018-11-03 14:48:42 -0700
-Branch: master [793beab37] 2018-11-03 15:55:23 -0700
-Branch: REL_11_STABLE [6eb31cedb] 2018-11-03 16:00:00 -0700
--->
- <para>
- Fix strictness check for strict aggregates with <literal>ORDER
- BY</literal> columns (Andrew Gierth, Andres Freund)
- </para>
-
- <para>
- The strictness logic incorrectly ignored rows for which
- the <literal>ORDER BY</literal> value(s) were null.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5d28c9bd7] 2018-11-06 18:33:28 -0500
-Branch: REL_11_STABLE [05f84605d] 2018-11-06 18:33:33 -0500
--->
- <para>
- Disable <varname>recheck_on_update</varname> optimization (Tom Lane)
- </para>
-
- <para>
- This new-in-v11 feature turns out not to have been ready for prime
- time. Disable it until something can be done about it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [dc3e436b1] 2018-11-05 11:04:02 +0900
-Branch: REL_11_STABLE [7c222d5e5] 2018-11-05 11:04:14 +0900
-Branch: REL_10_STABLE [8aad248f7] 2018-11-05 11:04:20 +0900
--->
- <para>
- Prevent creation of a partition in a trigger attached to its parent
- table (Amit Langote)
- </para>
-
- <para>
- Ideally we'd allow that, but for the moment it has to be blocked to
- avoid crashes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [4bc772e2a] 2018-11-05 09:14:33 +0900
-Branch: REL_11_STABLE [948af5232] 2018-11-05 09:15:08 +0900
-Branch: REL_10_STABLE [70c38e708] 2018-11-05 09:15:25 +0900
--->
- <para>
- Fix problems with applying <literal>ON COMMIT DELETE ROWS</literal> to
- a partitioned temporary table (Amit Langote)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [981dc2baa] 2018-11-03 13:56:10 -0400
-Branch: REL_11_STABLE [bf4a9562e] 2018-11-03 13:56:10 -0400
-Branch: REL_10_STABLE [f7ba6e951] 2018-11-03 13:56:10 -0400
-Branch: REL9_6_STABLE [73dbaed93] 2018-11-03 13:56:10 -0400
-Branch: REL9_5_STABLE [6e6092989] 2018-11-03 13:56:10 -0400
-Branch: REL9_4_STABLE [0ae902e39] 2018-11-03 13:56:10 -0400
-Branch: REL9_3_STABLE [33c697e9d] 2018-11-03 13:56:10 -0400
--->
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2ddb9149d] 2018-10-19 21:39:21 -0400
-Branch: REL_11_STABLE [7aaeb7b45] 2018-10-19 21:39:21 -0400
-Branch: REL_10_STABLE [3bdef6d21] 2018-10-19 21:39:21 -0400
-Branch: REL9_6_STABLE [cbab94077] 2018-10-19 21:39:22 -0400
-Branch: REL9_5_STABLE [f4941666a] 2018-10-19 21:39:22 -0400
--->
- <para>
- Ensure that the server will process
- already-received <literal>NOTIFY</literal>
- and <literal>SIGTERM</literal> interrupts before waiting for client
- input (Jeff Janes, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [696b0c5fd] 2018-10-31 17:05:03 -0400
-Branch: REL_11_STABLE [2493e2c2d] 2018-10-31 17:04:42 -0400
-Branch: REL_10_STABLE [92e371f9b] 2018-10-31 17:04:43 -0400
-Branch: REL9_6_STABLE [558571afc] 2018-10-31 17:04:43 -0400
-Branch: REL9_5_STABLE [156a737a6] 2018-10-31 17:04:43 -0400
-Branch: REL9_4_STABLE [95015b1f8] 2018-10-31 17:04:43 -0400
-Branch: REL9_3_STABLE [82dd1c271] 2018-10-31 17:04:43 -0400
--->
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [691d79a07] 2018-10-31 15:46:39 -0700
-Branch: REL_11_STABLE [c33a01c79] 2018-10-31 15:46:40 -0700
-Branch: REL_10_STABLE [021e1c329] 2018-10-31 15:46:40 -0700
-Branch: REL9_6_STABLE [d35fd17cb] 2018-10-31 15:46:40 -0700
-Branch: REL9_5_STABLE [679cb44e4] 2018-10-31 15:46:40 -0700
-Branch: REL9_4_STABLE [cf358a2c0] 2018-10-31 15:46:40 -0700
--->
- <para>
- Prevent starting the server with <varname>wal_level</varname> set
- to too low a value to support an existing replication slot (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4247db625] 2018-10-19 22:22:57 -0400
-Branch: REL_11_STABLE [d30d27a52] 2018-10-19 22:22:57 -0400
-Branch: REL_10_STABLE [ecc59e31a] 2018-10-19 22:22:57 -0400
-Branch: REL9_6_STABLE [34aad21cb] 2018-10-19 22:22:57 -0400
-Branch: REL9_5_STABLE [ac3be116a] 2018-10-19 22:22:57 -0400
--->
- <para>
- Fix <application>psql</application>, as well as documentation
- examples, to call <function>PQconsumeInput()</function> before
- each <function>PQnotifies()</function> call (Tom Lane)
- </para>
-
- <para>
- This fixes cases in which <application>psql</application> would not
- report receipt of a <literal>NOTIFY</literal> message until after the
- next command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [d55241af7] 2018-10-19 22:44:12 +0900
-Branch: REL_11_STABLE [cc7f27eae] 2018-10-19 22:45:07 +0900
--->
- <para>
- Fix <application>pg_verify_checksums</application>'s determination of
- which files to check the checksums of (Michael Paquier)
- </para>
-
- <para>
- In some cases it complained about files that are not expected to have
- checksums.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-Branch: master [edb979766] 2018-09-25 09:55:44 +0900
-Branch: REL_11_STABLE Release: REL_11_0 [a3bb831ef] 2018-09-25 09:56:41 +0900
-Branch: REL_10_STABLE [90a1f9786] 2018-09-25 09:56:57 +0900
--->
- <para>
- In <filename>contrib/pg_stat_statements</filename>, disallow
- the <literal>pg_read_all_stats</literal> role from
- executing <function>pg_stat_statements_reset()</function>
- (Haribabu Kommi)
- </para>
-
- <para>
- <literal>pg_read_all_stats</literal> is only meant to grant permission
- to read statistics, not to change them, so this grant was incorrect.
- </para>
-
- <para>
- To cause this change to take effect, run <literal>ALTER EXTENSION
- pg_stat_statements UPDATE</literal> in each database
- where <filename>pg_stat_statements</filename> has been installed.
- (A database freshly created in 11.0 should not need this, but a
- database upgraded from a previous release probably still contains
- the old version of <filename>pg_stat_statements</filename>. The
- <literal>UPDATE</literal> command is harmless if the module was
- already updated.)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [003c68a3b] 2018-11-06 13:25:24 -0500
-Branch: REL_11_STABLE [1f28ec6be] 2018-11-06 13:25:24 -0500
-Branch: REL_10_STABLE [b2e754c14] 2018-11-06 13:25:24 -0500
--->
- <para>
- Rename red-black tree support functions to use <literal>rbt</literal>
- prefix not <literal>rb</literal> prefix (Tom Lane)
- </para>
-
- <para>
- This avoids name collisions with Ruby functions, which broke
- PL/Ruby. It's hoped that there are no other affected extensions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1440c461f] 2018-11-02 18:54:00 -0400
-Branch: REL_11_STABLE [df1d749a7] 2018-11-02 18:54:00 -0400
-Branch: REL_10_STABLE [229a5c8ad] 2018-11-02 18:54:00 -0400
-Branch: REL9_6_STABLE [401202b79] 2018-11-02 18:54:00 -0400
-Branch: REL9_5_STABLE [94ea1cf73] 2018-11-02 18:54:00 -0400
-Branch: REL9_4_STABLE [1b5e8b408] 2018-11-02 18:54:00 -0400
-Branch: REL9_3_STABLE [1aad3a724] 2018-11-02 18:54:00 -0400
-Branch: master [e74dd00f5] 2018-10-18 14:55:23 -0400
-Branch: REL_11_STABLE [d1e869d1e] 2018-10-18 14:55:23 -0400
-Branch: REL_10_STABLE [34f9944c2] 2018-10-18 14:55:23 -0400
-Branch: REL9_6_STABLE [1b92ca9e2] 2018-10-18 14:55:23 -0400
-Branch: REL9_5_STABLE [021b355cd] 2018-10-18 14:55:23 -0400
-Branch: REL9_4_STABLE [0749acca5] 2018-10-18 14:55:23 -0400
-Branch: REL9_3_STABLE [015fd381f] 2018-10-18 14:55:23 -0400
-Branch: master [68fc227dd] 2018-10-16 16:27:15 -0400
-Branch: REL_11_STABLE [1a69f738d] 2018-10-16 16:27:15 -0400
-Branch: REL_10_STABLE [ee6c08b01] 2018-10-16 16:27:15 -0400
-Branch: REL9_6_STABLE [5777a9ff8] 2018-10-16 16:27:15 -0400
-Branch: REL9_5_STABLE [d0ab588cc] 2018-10-16 16:27:15 -0400
-Branch: REL9_4_STABLE [486e6f8d9] 2018-10-16 16:27:15 -0400
-Branch: REL9_3_STABLE [19ac2cb2a] 2018-10-16 16:27:15 -0400
-Branch: master [5e2217131] 2018-09-25 13:23:29 -0400
-Branch: REL_11_STABLE Release: REL_11_0 [9590f7d6c] 2018-09-25 13:23:29 -0400
-Branch: REL_10_STABLE [736c3a48c] 2018-09-25 13:23:29 -0400
-Branch: REL9_6_STABLE [0a4456a70] 2018-09-25 13:23:29 -0400
-Branch: REL9_5_STABLE [6dc28d291] 2018-09-25 13:23:29 -0400
-Branch: REL9_4_STABLE [a5361b593] 2018-09-25 13:23:29 -0400
-Branch: REL9_3_STABLE [6019247a5] 2018-09-25 13:23:29 -0400
--->
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [1df92eeaf] 2018-10-28 12:22:32 -0400
-Branch: REL_11_STABLE [8cb5e67d1] 2018-10-28 12:23:19 -0400
-Branch: REL_10_STABLE [a71f55652] 2018-10-28 12:25:10 -0400
-Branch: REL9_6_STABLE [9fd6d4eae] 2018-10-28 12:25:56 -0400
-Branch: REL9_5_STABLE [ba103dc87] 2018-10-28 12:26:05 -0400
-Branch: REL9_4_STABLE [698255147] 2018-10-28 12:26:14 -0400
-Branch: REL9_3_STABLE [075641fd0] 2018-10-28 12:27:58 -0400
--->
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [ce5d3424d] 2018-10-20 09:02:36 -0400
-Branch: REL_11_STABLE [a0a8671a6] 2018-10-20 09:10:02 -0400
-Branch: REL_10_STABLE [f4b67efdc] 2018-10-20 09:10:18 -0400
-Branch: REL9_6_STABLE [42a93da25] 2018-10-20 09:10:54 -0400
-Branch: REL9_5_STABLE [cc02db82c] 2018-10-20 09:11:18 -0400
--->
- <para>
- On Windows, allow the regression tests to be run by an Administrator
- account (Andrew Dunstan)
- </para>
-
- <para>
- To do this safely, <application>pg_regress</application> now gives up
- any such privileges at startup.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5c2e0ca5f] 2018-10-31 08:35:50 -0400
-Branch: REL_11_STABLE [58c45fdaa] 2018-10-31 08:36:06 -0400
-Branch: REL_10_STABLE [671f43d88] 2018-10-31 08:36:15 -0400
-Branch: REL9_6_STABLE [bb761c6a0] 2018-10-31 08:36:22 -0400
-Branch: REL9_5_STABLE [811d8cb87] 2018-10-31 08:36:29 -0400
-Branch: REL9_4_STABLE [d651e9e7c] 2018-10-31 08:36:35 -0400
-Branch: REL9_3_STABLE [3bf4edace] 2018-10-31 08:36:41 -0400
-Branch: master [13877d30f] 2018-10-19 17:01:34 -0400
-Branch: REL_11_STABLE [d2259c26b] 2018-10-19 17:01:49 -0400
-Branch: REL_10_STABLE [5777c93af] 2018-10-19 17:01:56 -0400
-Branch: REL9_6_STABLE [185f135c9] 2018-10-19 17:02:05 -0400
-Branch: REL9_5_STABLE [56170609b] 2018-10-19 17:02:12 -0400
-Branch: REL9_4_STABLE [9abbfc35c] 2018-10-19 17:02:20 -0400
-Branch: REL9_3_STABLE [84261eb10] 2018-10-19 17:02:26 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-11">
- <title>Release 11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-10-18</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 11 include:
- </para>
-
- <!-- Items in this list summarize one or more items below -->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improvements to partitioning functionality, including:
- <itemizedlist>
- <listitem>
- <para>
- Add support for partitioning by a hash key
- </para>
- </listitem>
- <listitem>
- <para>
- Add support for <literal>PRIMARY KEY</literal>, <literal>FOREIGN
- KEY</literal>, indexes, and triggers on partitioned tables
- </para>
- </listitem>
- <listitem>
- <para>
- Allow creation of a <quote>default</quote> partition for storing
- data that does not match any of the remaining partitions
- </para>
- </listitem>
- <listitem>
- <para>
- <command>UPDATE</command> statements that change a partition key
- column now cause affected rows to be moved to the appropriate
- partitions
- </para>
- </listitem>
- <listitem>
- <para>
- Improve <command>SELECT</command> performance through enhanced
- partition elimination strategies during query planning and execution
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improvements to parallelism, including:
- <itemizedlist>
- <listitem>
- <para>
- <command>CREATE INDEX</command> can now use parallel processing
- while building a B-tree index
- </para>
- </listitem>
- <listitem>
- <para>
- Parallelization is now possible in <command>CREATE TABLE
- ... AS</command>,
- <command>CREATE MATERIALIZED VIEW</command>, and certain
- queries using <literal>UNION</literal>
- </para>
- </listitem>
- <listitem>
- <para>
- Parallelized hash joins and parallelized sequential scans now
- perform better
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- SQL stored procedures that support embedded transactions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optional Just-in-Time (JIT) compilation for some SQL code, speeding
- evaluation of expressions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Window functions now support all framing options shown in the SQL:2011
- standard, including <literal>RANGE <replaceable>distance</replaceable>
- PRECEDING/FOLLOWING</literal>, <literal>GROUPS</literal> mode, and
- frame exclusion options
- </para>
- </listitem>
-
- <listitem>
- <para>
- Covering indexes can now be created, using the
- <literal>INCLUDE</literal> clause of <command>CREATE INDEX</command>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Many other useful performance improvements, including the ability to
- avoid a table rewrite for <command>ALTER TABLE ... ADD COLUMN</command>
- with a non-null column default
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 11</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 11 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-01-22 [b3f840120] Move handling of database properties from pg_dumpall int
-2018-01-23 [160a4f62e] In pg_dump, force reconnection after issuing ALTER DATAB
-2018-01-25 [0d4e6ed30] Clean up some aspects of pg_dump/pg_restore item-selecti
--->
-
- <para>
- Make <link
- linkend="app-pgdump"><application>pg_dump</application></link>
- dump the properties of a database, not just its contents
- (Haribabu Kommi)
- </para>
-
- <para>
- Previously, attributes of the database itself, such as database-level
- <command>GRANT</command>/<command>REVOKE</command> permissions and
- <command>ALTER DATABASE SET</command> variable settings, were only
- dumped by <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>.
- Now <command>pg_dump --create</command> and
- <command>pg_restore --create</command> will restore these database
- properties in addition to the objects within the
- database. <command>pg_dumpall -g</command> now only dumps role-
- and tablespace-related attributes.
- <application>pg_dumpall</application>'s complete output (without
- <option>-g</option>) is unchanged.
- </para>
-
- <para>
- <application>pg_dump</application> and
- <application>pg_restore</application>, without
- <option>--create</option>, no longer dump/restore database-level
- comments and security labels; those are now treated as properties of
- the database.
- </para>
-
- <para>
- <application>pg_dumpall</application>'s output script will now always
- create databases with their original locale and encoding, and hence
- will fail if the locale or encoding name is unknown to the
- destination system. Previously, <command>CREATE DATABASE</command>
- would be emitted without these specifications if the database locale
- and encoding matched the old cluster's defaults.
- </para>
-
- <para>
- <command>pg_dumpall --clean</command> now restores the original
- locale and encoding settings of the <literal>postgres</literal>
- and <literal>template1</literal> databases, as well as those of
- user-created databases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-06-18 [b97a3465d] Consider syntactic form when disambiguating function vs
-2018-06-18 [45e98ee73] Remove obsolete prohibition on function name matching a
--->
-
- <para>
- Consider syntactic form when disambiguating function versus column
- references (Tom Lane)
- </para>
-
- <para>
- When <replaceable>x</replaceable> is a table name or composite
- column, <productname>PostgreSQL</productname> has traditionally
- considered the syntactic
- forms <literal><replaceable>f</replaceable>(<replaceable>x</replaceable>)</literal>
- and <literal><replaceable>x</replaceable>.<replaceable>f</replaceable></literal>
- to be equivalent, allowing tricks such as writing a function and
- then using it as though it were a computed-on-demand column.
- However, if both interpretations are feasible, the column
- interpretation was always chosen, leading to surprising results if
- the user intended the function interpretation. Now, if there is
- ambiguity, the interpretation that matches the syntactic form is
- chosen.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-09-04 [fb466d7b5] Fully enforce uniqueness of constraint names.
--->
- <para>
- Fully enforce uniqueness of table and domain constraint names
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> expects the names of a table's
- constraints to be distinct, and likewise for the names of a domain's
- constraints. However, there was not rigid enforcement of this, and
- previously there were corner cases where duplicate names could be
- created.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-29 [61b200e2f] Avoid wrong results for power() with NaN input on some p
-2018-04-29 [6bdf1303b] Avoid wrong results for power() with NaN input on more p
-2018-05-17 [d1fc750b5] Make numeric power() handle NaNs according to the modern
--->
-
- <para>
- Make <function>power(numeric, numeric)</function>
- and <function>power(float8, float8)</function>
- handle <literal>NaN</literal> inputs according to the POSIX standard
- (Tom Lane, Dang Minh Huong)
- </para>
-
- <para>
- POSIX says that <literal>NaN ^ 0 = 1</literal> and <literal>1 ^ NaN
- = 1</literal>, but all other cases with <literal>NaN</literal>
- input(s) should return <literal>NaN</literal>.
- <function>power(numeric, numeric)</function> just
- returned <literal>NaN</literal> in all such cases; now it honors the
- two exceptions. <function>power(float8, float8)</function> followed
- the standard if the C library does; but on some old Unix platforms
- the library doesn't, and there were also problems on some versions
- of Windows.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-17 [e87d4965b] Prevent to_number() from losing data when template doesn
--->
-
- <para>
- Prevent <link
- linkend="functions-formatting-numeric-table"><function>to_number()</function></link>
- from consuming characters when the template separator does not
- match (Oliver Ford)
- </para>
-
- <para>
- Specifically, <command>SELECT to_number('1234', '9,999')</command>
- used to return <literal>134</literal>. It will now
- return <literal>1234</literal>. <literal>L</literal> and
- <literal>TH</literal> now only consume characters that are not
- digits, positive/negative signs, decimal points, or commas.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-18 [976a1a48f] Improve to_date/to_number/to_timestamp behavior with mul
--->
-
- <para>
- Fix <link
- linkend="functions-formatting"><function>to_date()</function></link>,
- <function>to_number()</function>, and
- <function>to_timestamp()</function> to skip a character for each
- template character (Tom Lane)
- </para>
-
- <para>
- Previously, they skipped one <emphasis>byte</emphasis> for each byte
- of template character, resulting in strange behavior if either string
- contained multibyte characters.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-18 [63ca86318] Fix quoted-substring handling in format parsing for to_c
--->
-
- <para>
- Adjust the handling of backslashes inside double-quotes in
- template strings for <function>to_char()</function>,
- <function>to_number()</function>, and
- <function>to_timestamp()</function>.
- </para>
-
- <para>
- Such a backslash now escapes the character after it, particularly
- a double-quote or another backslash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-06-21 [e474c2b7e] Set correct context for XPath evaluation
--->
-
- <para>
- Correctly handle relative path expressions
- in <function>xmltable()</function>, <function>xpath()</function>,
- and other XML-handling functions (Markus Winand)
- </para>
-
- <para>
- Per the SQL standard, relative paths start from the document node of
- the XML input document, not the root node as these functions
- previously did.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-18 [f8e5f156b] Rearm statement_timeout after each executed query.
-
--->
-
- <para>
- In the <link linkend="protocol-query-concepts">extended query
- protocol</link>,
- make <link linkend="guc-statement-timeout"><varname>statement_timeout</varname></link>
- apply to each Execute message separately, not to all commands before
- Sync (Tatsuo Ishii, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-14 [f66e8bf87] Remove pg_class.relhaspkey
--->
-
- <para>
- Remove the <structfield>relhaspkey</structfield> column from system
- catalog <structname>pg_class</structname> (Peter Eisentraut)
- </para>
-
- <para>
- Applications needing to check for a primary key should consult
- <structname>pg_index</structname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-02 [fd1a421fe] Add prokind column, replacing proisagg and proiswindow
--->
-
- <para>
- Replace system catalog <structname>pg_proc</structname>'s
- <structfield>proisagg</structfield> and
- <structfield>proiswindow</structfield> columns with
- <structfield>prokind</structfield> (Peter Eisentraut)
- </para>
-
- <para>
- This new column more clearly distinguishes functions, procedures,
- aggregates, and window functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-16 [9b5140fb5] Correct representation of foreign tables in information
--->
-
- <para>
- Correct information schema column <link
- linkend="infoschema-tables"><structname>tables</structname>.<structfield>table_type</structfield></link>
- to return <literal>FOREIGN</literal> instead of <literal>FOREIGN
- TABLE</literal> (Peter Eisentraut)
- </para>
-
- <para>
- This new output matches the SQL standard.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-20 [be87b70b6] Sync process names between ps and pg_stat_activity
--->
-
- <para>
- Change the ps process display
- labels for background workers to match the <link
- linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname>.<structfield>backend_type</structfield></link>
- labels (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-09 [ae20b23a9] Refactor permissions checks for large objects.
-2017-11-14 [6d776522d] Document changes in large-object privilege checking.
--->
-
- <para>
- Cause large object permission checks
- to happen during large object open, <link
- linkend="lo-open"><function>lo_open()</function></link>, not
- when a read or write is attempted (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If write access is requested and not available, an error will now be
- thrown even if the large object is never written to.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-08-09 [87330e21c] Restrict access to reindex of shared catalogs for non-pr
--->
- <para>
- Prevent non-superusers from reindexing shared catalogs
- (Michael Paquier, Robert Haas)
- </para>
-
- <para>
- Previously, database owners were also allowed to do this, but
- now it is considered outside the bounds of their privileges.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-06 [11523e860] Support new default roles with adminpack
--->
-
- <para>
- Remove deprecated <link
- linkend="adminpack"><filename>adminpack</filename></link> functions
- <function>pg_file_read()</function>,
- <function>pg_file_length()</function>, and
- <function>pg_logfile_rotate()</function> (Stephen Frost)
- </para>
-
- <para>
- Equivalent functionality is now present in the core backend.
- Existing <filename>adminpack</filename> installs will continue to have
- access to these functions until they are updated via <command>ALTER
- EXTENSION ... UPDATE</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-26 [fb8697b31] Avoid unnecessary use of pg_strcasecmp for already-downc
--->
-
- <para>
- Honor the capitalization of double-quoted command options
- (Daniel Gustafsson)
- </para>
-
- <para>
- Previously, option names in certain SQL commands were forcibly
- lower-cased even if entered with double quotes; thus for example
- <literal>"FillFactor"</literal> would be accepted as an index storage
- option, though properly its name is lower-case. Such cases will now
- generate an error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-29 [8b304b8b7] Remove replacement selection sort.
--->
-
- <para>
- Remove server parameter <varname>replacement_sort_tuples</varname>
- (Peter Geoghegan)
- </para>
-
- <para>
- Replacement sorts were determined to be no longer useful.
- </para>
-
- </listitem>
-
- <listitem>
-<!--
-2018-01-26 [4971d2a32] Remove the obsolete WITH clause of CREATE FUNCTION.
--->
-
- <para>
- Remove <literal>WITH</literal> clause in <link
- linkend="sql-createfunction"><command>CREATE
- FUNCTION</command></link> (Michael Paquier)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> has long supported a more
- standard-compliant syntax for this capability.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-13 [4b93f5799] Make plpgsql use its DTYPE_REC code paths for composite-
--->
-
- <para>
- In PL/pgSQL trigger functions, the <varname>OLD</varname>
- and <varname>NEW</varname> variables now read as NULL when not
- assigned (Tom Lane)
- </para>
-
- <para>
- Previously, references to these variables could be parsed but not
- executed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 11 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Partitioning</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-11-09 [1aba8e651] Add hash partitioning.
--->
-
- <para>
- Allow the creation of partitions based on hashing a key column
- (Amul Sul)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-19 [8b08f7d48] Local partitioned indexes
-2018-02-19 [eb7ed3f30] Allow UNIQUE indexes on partitioned tables
-2018-03-26 [555ee77a9] Handle INSERT .. ON CONFLICT with partitioned tables
--->
-
- <para>
- Support indexes on partitioned tables (&Aacute;lvaro Herrera,
- Amit Langote)
- </para>
-
- <para>
- An <quote>index</quote> on a partitioned table is not a physical
- index across the whole partitioned table, but rather a template for
- automatically creating similar indexes on each partition of the
- table.
- </para>
-
- <para>
- If the partition key is part of the index's column set, a
- partitioned index may be declared <literal>UNIQUE</literal>.
- It will represent a valid uniqueness constraint across the whole
- partitioned table, even though each physical index only enforces
- uniqueness within its own partition.
- </para>
-
- <para>
- The new command <link linkend="sql-alterindex"><command>ALTER
- INDEX ATTACH PARTITION</command></link> causes an existing index on
- a partition to be associated with a matching index template for its
- partitioned table. This provides flexibility in setting up a new
- partitioned index for an existing partitioned table.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-04 [3de241dba] Foreign keys on partitioned tables
--->
-
- <para>
- Allow foreign keys on partitioned tables (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-23 [86f575948] Allow FOR EACH ROW triggers on partitioned tables
--->
-
- <para>
- Allow <literal>FOR EACH ROW</literal> triggers on partitioned
- tables (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Creation of a trigger on a partitioned table automatically creates
- triggers on all existing and future partitions.
- This also allows deferred unique constraints on partitioned tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-08 [6f6b99d13] Allow a partitioned table to have a default partition.
-2018-04-11 [72cf7f310] Fix ALTER TABLE .. ATTACH PARTITION ... DEFAULT
--->
-
- <para>
- Allow partitioned tables to have a default partition (Jeevan Ladhe,
- Beena Emerson, Ashutosh Bapat, Rahila Syed, Robert Haas)
- </para>
-
- <para>
- The default partition will store rows that don't match any of the
- other defined partitions, and is searched accordingly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-19 [2f1784410] Allow UPDATE to move rows between partitions.
--->
-
- <para>
- <command>UPDATE</command> statements that change a partition key
- column now cause affected rows to be moved to the appropriate
- partitions (Amit Khandekar)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-06 [3d956d956] Allow insert and update tuple routing and COPY for forei
--->
-
- <para>
- Allow <command>INSERT</command>, <command>UPDATE</command>, and
- <command>COPY</command> on partitioned tables to properly route
- rows to foreign partitions (Etsuro Fujita, Amit Langote)
- </para>
-
- <para>
- This is supported by <filename>postgres_fdw</filename>
- foreign tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-02 [9aef17316] Refactor code for partition bound searching
-2018-02-23 [f724022d0] Revise API for partition bound search functions.
-2018-04-06 [9fdb675fc] Faster partition pruning
-2018-04-23 [055fb8d33] Add GUC enable_partition_pruning
--->
-
- <para>
- Allow faster partition elimination during query processing (Amit
- Langote, David Rowley, Dilip Kumar)
- </para>
-
- <para>
- This speeds access to partitioned tables with many partitions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-07 [499be013d] Support partition pruning at execution time
--->
-
- <para>
- Allow partition elimination during query execution (David Rowley,
- Beena Emerson)
- </para>
-
- <para>
- Previously, partition elimination only happened at planning
- time, meaning many joins and prepared queries could not use
- partition elimination.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-15 [e139f1953] Assorted preparatory refactoring for partition-wise join
-2017-10-06 [f49842d1e] Basic partition-wise join functionality.
-2018-02-16 [2fb1abaeb] Rename enable_partition_wise_join to enable_partitionwis
--->
-
- <para>
- In an equality join between partitioned tables, allow matching
- partitions to be joined directly (Ashutosh Bapat)
- </para>
-
- <para>
- This feature is disabled by default
- but can be enabled by changing <link
- linkend="guc-enable-partitionwise-join"><varname>enable_partitionwise_join</varname></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-26 [9fd8b7d63] Factor some code out of create_grouping_paths.
-2018-03-22 [e2f1eb0ee] Implement partition-wise grouping/aggregation.
--->
-
- <para>
- Allow aggregate functions on partitioned tables to be evaluated
- separately for each partition, subsequently merging the results
- (Jeevan Chalke, Ashutosh Bapat, Robert Haas)
- </para>
-
- <para>
- This feature is disabled by default
- but can be enabled by changing <link
- linkend="guc-enable-partitionwise-aggregate"><varname>enable_partitionwise_aggregate</varname></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-02 [7e0d64c7a] postgres_fdw: Push down partition-wise aggregation.
--->
-
- <para>
- Allow <link
- linkend="postgres-fdw"><filename>postgres_fdw</filename></link>
- to push down aggregates to foreign tables that are partitions
- (Jeevan Chalke)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Parallel Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-02-02 [9da0cc352] Support parallel btree index builds.
--->
-
- <para>
- Allow parallel building of a btree index (Peter Geoghegan,
- Rushabh Lathia, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-21 [180428404] Add parallel-aware hash joins.
--->
-
- <para>
- Allow hash joins to be performed in parallel using a shared hash
- table (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-05 [ab7271677] Support Parallel Append plan nodes.
-2018-03-22 [88ba0ae2a] Consider Parallel Append of partial paths for UNION [ALL
--->
-
- <para>
- Allow <literal>UNION</literal> to run each
- <command>SELECT</command> in parallel if the individual
- <command>SELECT</command>s cannot be parallelized (Amit Khandekar,
- Robert Haas, Amul Sul)
- </para>
- </listitem>
-
- <listitem>
-<!--
-same commits as above
-2017-12-05 [ab7271677] Support Parallel Append plan nodes.
-2018-03-22 [88ba0ae2a] Consider Parallel Append of partial paths for UNION [ALL
--->
-
- <para>
- Allow partition scans to more efficiently use parallel workers
- (Amit Khandekar, Robert Haas, Amul Sul)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-29 [3452dc524] Push tuple limits through Gather and Gather Merge.
--->
-
- <para>
- Allow <literal>LIMIT</literal> to be passed to parallel workers
- (Robert Haas, Tom Lane)
- </para>
-
- <para>
- This allows workers to reduce returned results and use targeted
- index scans.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-16 [e89a71fb4] Pass InitPlan values to workers via Gather (Merge).
-2018-03-29 [3f90ec859] Postpone generate_gather_paths for topmost scan/join rel
-2018-03-29 [11cf92f6e] Rewrite the code that applies scan/join targets to paths
--->
-
- <para>
- Allow single-evaluation queries, e.g. <literal>WHERE</literal>
- clause aggregate queries, and functions in the target list to be
- parallelized (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-15 [e5253fdc4] Add parallel_leader_participation GUC.
--->
-
- <para>
- Add server parameter <link
- linkend="guc-parallel-leader-participation"><varname>parallel_leader_participation</varname></link>
- to control whether the leader also executes subplans (Thomas Munro)
- </para>
-
- <para>
- The default is enabled, meaning the leader will execute subplans.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-05 [e9baa5e9f] Allow DML commands that create tables to use parallel qu
--->
-
- <para>
- Allow parallelization of commands <command>CREATE TABLE
- ... AS</command>, <command>SELECT INTO</command>, and
- <command>CREATE MATERIALIZED VIEW</command> (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-16 [3cda10f41] Use atomic ops to hand out pages to scan in parallel sca
-
--->
-
- <para>
- Improve performance of sequential scans with many parallel workers
- (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-29 [bf11e7ee2] Propagate sort instrumentation from workers back to lead
--->
-
- <para>
- Add reporting of parallel workers' sort activity in
- <command>EXPLAIN</command> (Robert Haas, Tom Lane)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-04-07 [8224de4f4] Indexes with INCLUDE columns and their support in B-tree
--->
-
- <para>
- Allow B-tree indexes to include columns that are not part of the
- search key or unique constraint, but are available to be read by
- index-only scans (Anastasia Lubennikova, Alexander Korotkov, Teodor
- Sigaev)
- </para>
-
- <para>
- This is enabled by the new <literal>INCLUDE</literal> clause of <link
- linkend="sql-createindex"><command>CREATE INDEX</command></link>.
- It facilitates building <quote>covering indexes</quote> that optimize
- specific types of queries. Columns can be included even if their
- data types don't have B-tree support.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-26 [2b2727343] Optimize btree insertions for common case of increasing
-2018-04-10 [074251db6] Adjustments to the btree fastpath optimization.
--->
-
- <para>
- Improve performance of monotonically increasing index additions
- (Pavan Deolasee, Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-22 [7c75ef571] hash: Implement page-at-a-time scan.
--->
-
- <para>
- Improve performance of hash index scans (Ashutosh Sharma)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-27 [3ad55863e] Add predicate locking for GiST
-2018-03-30 [43d1ed60f] Predicate locking in GIN index
-2018-04-07 [b508a56f2] Predicate locking in hash indexes.
--->
-
- <para>
- Add predicate locking for hash, GiST and GIN indexes (Shubham
- Barai)
- </para>
-
- <para>
- This reduces the likelihood of serialization conflicts in
- serializable-mode transactions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="spgist">SP-Gist</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-04-03 [710d90da1] Add prefix operator for TEXT type.
--->
-
- <para>
- Add prefix-match
- operator <type>text</type> <literal>^@</literal> <type>text</type>,
- which is supported by SP-GiST (Ildus Kurbangaliev)
- </para>
-
- <para>
- This is similar to using <replaceable>var</replaceable> <literal>LIKE
- 'word%'</literal> with a btree index, but it is more efficient.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-25 [ff963b393] Add polygon opclass for SP-GiST
--->
-
- <para>
- Allow polygons to be indexed with SP-GiST (Nikita Glukhov,
- Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-22 [854823fa3] Add optional compression method to SP-GiST
--->
-
- <para>
- Allow SP-GiST to use lossy representation of leaf keys (Teodor Sigaev,
- Heikki Linnakangas, Alexander Korotkov, Nikita Glukhov)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-03-22 [b5db1d93d] Improve ANALYZE's strategy for finding MCVs.
--->
-
- <para>
- Improve selection of the most common values for statistics
- (Jeff Janes, Dean Rasheed)
- </para>
-
- <para>
- Previously, the most common values (<acronym>MCV</acronym>s) were
- identified based on their frequency compared to all column
- values. Now, <acronym>MCV</acronym>s are chosen based on their
- frequency compared to the non-<acronym>MCV</acronym> values.
- This improves the robustness of the algorithm for both uniform and
- non-uniform distributions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-13 [7d08ce286] Distinguish selectivity of &lt; from &lt;= and &gt; from &gt;=.
--->
-
- <para>
- Improve selectivity estimates for <literal>&gt;=</literal>
- and <literal>&lt;=</literal> (Tom Lane)
- </para>
-
- <para>
- Previously, such cases used the same selectivity estimates
- as <literal>&gt;</literal> and <literal>&lt;</literal>, respectively,
- unless the comparison constants are <acronym>MCV</acronym>s.
- This change is particularly helpful for queries
- involving <literal>BETWEEN</literal> with small ranges.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-08 [8ec5429e2] Reduce "X = X" to "X IS NOT NULL", if it's easy to do so
--->
-
- <para>
- Reduce <replaceable>var</replaceable> <literal>=</literal>
- <replaceable>var</replaceable>
- to <replaceable>var</replaceable> <literal>IS NOT NULL</literal>
- where equivalent (Tom Lane)
- </para>
-
- <para>
- This leads to better selectivity estimates.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-29 [7ca25b7de] Fix neqjoinsel's behavior for semi/anti join cases.
--->
-
- <para>
- Improve optimizer's row count estimates for <literal>EXISTS</literal>
- and <literal>NOT EXISTS</literal> queries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-02 [7b6c07547] Teach planner to account for HAVING quals in aggregation
--->
-
- <para>
- Make the optimizer account for evaluation costs and selectivity
- of <literal>HAVING</literal> clauses (Tom Lane)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-03-21 [432bb9e04] Basic JIT provider and error handling infrastructure.
-2018-03-22 [b96d550eb] Support for optimizing and emitting code in LLVM JIT pro
-2018-03-22 [cc415a56d] Basic planner and executor integration for JIT.
-2018-03-26 [32af96b2b] JIT tuple deforming in LLVM JIT provider.
-2018-03-27 [f4f5845b3] Quick adaption of JIT tuple deforming to the fast defaul
-2018-03-28 [9370462e9] Add inlining support to LLVM JIT provider.
-2018-09-15 [0fdadfb01] In v11, disable JIT by default (it's still enabled by de
--->
-
- <para>
- Add <link linkend="jit">Just-in-Time</link>
- (<acronym>JIT</acronym>) compilation of some parts of query plans
- to improve execution speed (Andres Freund)
- </para>
-
- <para>
- This feature requires <application>LLVM</application> to be
- available. It is not currently enabled by default, even in
- builds that support it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-01 [7c70996eb] Allow bitmap scans to operate as index-only scans when p
--->
-
- <para>
- Allow bitmap scans to perform index-only scans when possible
- (Alexander Kuzmenkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-29 [851a26e26] While vacuuming a large table, update upper-level <acronym>FSM</acronym> da
-2018-03-30 [c79f6df75] Do index FSM vacuuming sooner.
--->
-
- <para>
- Update the free space map during <command>VACUUM</command>
- (Claudio Freire)
- </para>
-
- <para>
- This allows free space to be reused more quickly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-04 [857f9c36c] Skip full index scan during cleanup of B-tree indexes wh
--->
-
- <para>
- Allow <command>VACUUM</command> to avoid unnecessary index scans
- (Masahiko Sawada, Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-01 [baaf272ac] Use group updates when setting transaction status in clo
--->
-
- <para>
- Improve performance of committing multiple concurrent transactions
- (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-08 [84ad4b036] Reduce memory usage of targetlist SRFs.
--->
-
- <para>
- Reduce memory usage for queries using set-returning functions in
- their target lists (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-09 [69c3936a1] Expression evaluation based aggregate transition invocat
--->
-
- <para>
- Improve the speed of aggregate computations (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-07 [1bc0100d2] postgres_fdw: Push down UPDATE/DELETE joins to remote se
--->
-
- <para>
- Allow <link
- linkend="postgres-fdw"><filename>postgres_fdw</filename></link>
- to push <command>UPDATE</command>s and <command>DELETE</command>s
- using joins to foreign servers (Etsuro Fujita)
- </para>
-
- <para>
- Previously, only non-join <command>UPDATE</command>s and
- <command>DELETE</command>s were pushed.
- </para>
-
- </listitem>
-
- <listitem>
-<!--
-2018-01-21 [1cc4f536e] Support huge pages on Windows
--->
-
- <para>
- Add support for <firstterm>large pages</firstterm> on Windows
- (Takayuki Tsunakawa, Thomas Munro)
- </para>
-
- <para>
- This is controlled by the <link
- linkend="guc-huge-pages">huge_pages</link> configuration
- parameter.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-01 [c039ba071] Add memory info to getrusage output
--->
-
- <para>
- Show memory usage in output from <link
- linkend="runtime-config-statistics-monitor"><varname>log_statement_stats</varname></link>,
- <varname>log_parser_stats</varname>,
- <varname>log_planner_stats</varname>, and
- <varname>log_executor_stats</varname> (Justin Pryzby, Peter
- Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-29 [5373bc2a0] Add background worker type
--->
-
- <para>
- Add column <link
- linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname>.<structfield>backend_type</structfield></link>
- to show the type of a background worker (Peter Eisentraut)
- </para>
-
- <para>
- The type is also visible in <application>ps</application> output.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-04 [ab6eaee88] When VACUUM or ANALYZE skips a concurrently dropped tabl
--->
-
- <para>
- Make <link
- linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
- log skipped tables that are concurrently being dropped (Nathan
- Bossart)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="infoschema-tables">Information Schema</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-02-07 [32ff26911] Add more information_schema columns
--->
-
- <para>
- Add <literal>information_schema</literal> columns related to table
- constraints and triggers (Peter Eisentraut)
- </para>
-
- <para>
- Specifically,
- <structname>triggers</structname>.<structfield>action_order</structfield>,
- <structname>triggers</structname>.<structfield>action_reference_old_table</structfield>,
- and
- <structname>triggers</structname>.<structfield>action_reference_new_table</structfield>
- are now populated, where before they were always null. Also,
- <structname>table_constraints</structname>.<structfield>enforced</structfield>
- now exists but is not yet usefully populated.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect5>
- </sect4>
-
- <sect4>
- <title><acronym>Authentication</acronym></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-12 [83aaac41c] Allow custom search filters to be configured for LDAP au
--->
-
- <para>
- Allow the server to specify more complex <link
- linkend="auth-ldap"><acronym>LDAP</acronym></link> specifications
- in search+bind mode (Thomas Munro)
- </para>
-
- <para>
- Specifically, <literal>ldapsearchfilter</literal> allows pattern matching using
- combinations of <acronym>LDAP</acronym> attributes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-03 [35c0754fa] Allow ldaps when using ldap authentication
-2018-01-04 [3ad2afc2e] Define LDAPS_PORT if it's missing and disable implicit L
--->
-
- <para>
- Allow <acronym>LDAP</acronym> authentication to use
- encrypted <acronym>LDAP</acronym> (Thomas Munro)
- </para>
-
- <para>
- We already supported <acronym>LDAP</acronym> over
- <acronym>TLS</acronym> by using <literal>ldaptls=1</literal>.
- This new <acronym>TLS</acronym> <acronym>LDAP</acronym> method for
- encrypted <acronym>LDAP</acronym> is enabled
- with <literal>ldapscheme=ldaps</literal>
- or <literal>ldapurl=ldaps://</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-12 [cf1238cd9] Log diagnostic messages if errors occur during LDAP auth
--->
-
- <para>
- Improve logging of <acronym>LDAP</acronym> errors (Thomas Munro)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Permissions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-04-06 [0fdc8495b] Add default roles for file/program access
-2018-04-07 [da9b580d8] Refactor dir/file permissions
--->
-
- <para>
- Add <link linkend="default-roles-table">default roles</link> that
- enable file system access (Stephen Frost)
- </para>
-
- <para>
- Specifically, the new roles are:
- <literal>pg_read_server_files</literal>,
- <literal>pg_write_server_files</literal>, and
- <literal>pg_execute_server_program</literal>. These roles now also
- control who can use server-side <command>COPY</command> and the <link
- linkend="file-fdw"><filename>file_fdw</filename></link> extension.
- Previously, only superusers could use these functions, and that
- is still the default behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-06 [e79350fef] Remove explicit superuser checks in favor of ACLs
--->
-
- <para>
- Allow access to file system functions to be controlled by
- <command>GRANT</command>/<command>REVOKE</command> permissions,
- rather than superuser checks (Stephen Frost)
- </para>
-
- <para>
- Specifically, these functions were modified: <link
- linkend="functions-admin-genfile-table"><function>pg_ls_dir()</function></link>,
- <function>pg_read_file()</function>,
- <function>pg_read_binary_file()</function>,
- <function>pg_stat_file()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-09 [5ecc0d738] Restrict lo_import()/lo_export() via SQL permissions not
-2017-11-14 [6d776522d] Document changes in large-object privilege checking.
--->
-
- <para>
- Use <command>GRANT</command>/<command>REVOKE</command>
- to control access to <link
- linkend="lo-import"><function>lo_import()</function></link>
- and <function>lo_export()</function> (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- Previously, only superusers were granted access to these functions.
- </para>
-
- <para>
- The compile-time option <literal>ALLOW_DANGEROUS_LO_FUNCTIONS</literal>
- has been removed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-05 [ab3f008a2] postgres_fdw: Judge password use by run-as user, not ses
--->
-
- <para>
- Use view owner not session owner when
- preventing non-password access to <link
- linkend="postgres-fdw"><filename>postgres_fdw</filename></link>
- tables (Robert Haas)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> only allows superusers to
- access <filename>postgres_fdw</filename> tables without
- passwords, e.g. via <literal>peer</literal>. Previously, the
- session owner had to be a superuser to allow such access; now
- the view owner is checked instead.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-14 [50c6bb022] Fix enforcement of SELECT FOR UPDATE permissions with ne
--->
-
- <para>
- Fix invalid locking permission check in <command>SELECT FOR
- UPDATE</command> on views (Tom Lane)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Configuration</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-03-17 [8a3d94252] Add ssl_passphrase_command setting
--->
-
- <para>
- Add server setting <link
- linkend="guc-ssl-passphrase-command"><varname>ssl_passphrase_command</varname></link>
- to allow supplying of the passphrase for <acronym>SSL</acronym>
- key files (Peter Eisentraut)
- </para>
-
- <para>
- Also add <link
- linkend="guc-ssl-passphrase-command-supports-reload"><varname>ssl_passphrase_command_supports_reload</varname></link>
- to specify whether the <acronym>SSL</acronym> configuration
- should be reloaded and <varname>ssl_passphrase_command</varname>
- called during a server configuration reload.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-20 [c2513365a] Parameter toast_tuple_target controls TOAST for new rows
--->
-
- <para>
- Add storage parameter <link
- linkend="sql-createtable-storage-parameters"><varname>toast_tuple_target</varname></link>
- to control the minimum tuple length before <acronym>TOAST</acronym>
- storage will be considered (Simon Riggs)
- </para>
-
- <para>
- The default <acronym>TOAST</acronym> threshold has not been
- changed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-12 [6e7baa322] Introduce BYTES unit for GUCs.
-2018-05-23 [b06d8e58b] Accept "B" in all memory-unit GUCs, and improve error me
--->
-
- <para>
- Allow server options related to memory and file sizes to be
- specified in units of bytes (Beena Emerson)
- </para>
-
- <para>
- The new unit suffix is <quote>B</quote>. This is in addition to the
- existing units <quote>kB</quote>, <quote>MB</quote>, <quote>GB</quote>
- and <quote>TB</quote>.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="wal">Write-Ahead Log</link> (<acronym>WAL</acronym>)</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-19 [fc49e24fa] Make WAL segment size configurable at initdb time.
--->
-
- <para>
- Allow the <acronym>WAL</acronym> file size to be set
- during <application>initdb</application> (Beena Emerson)
- </para>
-
- <para>
- Previously, the 16MB default could only be changed at compile time.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-07 [4b0d28de0] Remove secondary checkpoint
--->
-
- <para>
- Retain <acronym>WAL</acronym> data for only a single checkpoint
- (Simon Riggs)
- </para>
-
- <para>
- Previously, <acronym>WAL</acronym> was retained for two checkpoints.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-30 [4a33bb59d] Ensure that WAL pages skipped by a forced WAL switch are
--->
-
- <para>
- Fill the unused portion of force-switched <acronym>WAL</acronym>
- segment files with zeros for improved compressibility (Chapman
- Flack)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Base Backup and Streaming Replication</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-04-07 [5dfd1e5a6] Logical decoding of TRUNCATE
-2018-04-07 [039eb6e92] Logical replication support for TRUNCATE
--->
-
- <para>
- Replicate <command>TRUNCATE</command> activity when using logical
- replication (Simon Riggs, Marco Nenciarini, Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-28 [1eb6d6527] Store 2PC GID in commit/abort WAL recs for logical decod
--->
-
- <para>
- Pass prepared transaction information to logical replication
- subscribers (Nikhil Sontakke, Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-23 [8694cc96b] Exclude unlogged tables from base backups
-2018-03-27 [920a5e500] Skip temp tables from basebackup.
-2017-11-07 [98267ee83] Exclude pg_internal.init from BASE_BACKUP
--->
-
- <para>
- Exclude unlogged tables, temporary tables, and
- <filename>pg_internal.init</filename> files from streaming base
- backups (David Steele)
- </para>
-
- <para>
- There is no need to copy such files.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-03 [4eb77d50c] Validate page level checksums in base backups
--->
-
- <para>
- Allow checksums of heap pages to be verified during streaming base
- backup (Michael Banck)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-17 [9c7d06d60] Ability to advance replication slots
--->
-
- <para>
- Allow replication slots to be advanced programmatically, rather
- than be consumed by subscribers (Petr Jelinek)
- </para>
-
- <para>
- This allows efficient advancement of replication slots when the
- contents do not need to be consumed. This is performed by
- <function>pg_replication_slot_advance()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-06 [6271fceb8] Add TIMELINE to backup_label file
--->
-
- <para>
- Add timeline information to the <link
- linkend="backup-lowlevel-base-backup"><filename>backup_label</filename></link>
- file (Michael Paquier)
- </para>
-
- <para>
- Also add a check that the <acronym>WAL</acronym> timeline matches
- the <filename>backup_label</filename> file's timeline.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-31 [9a895462d] Enhance pg_stat_wal_receiver view to display host and po
--->
-
- <para>
- Add host and port connection information to the
- <structname>pg_stat_wal_receiver</structname> system view
- (Haribabu Kommi)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-03-28 [16828d5c0] Fast ALTER TABLE ADD COLUMN with a non-NULL default
--->
-
- <para>
- Allow <command>ALTER TABLE</command> to add a column with
- a non-null default without doing a table rewrite (Andrew Dunstan,
- Serge Rielau)
- </para>
-
- <para>
- This is enabled when the default value is a constant.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-30 [34c20de4d] Allow to lock views.
-2018-03-31 [1b26bd408] Fix bug with view locking code.
--->
-
- <para>
- Allow views to be locked by locking the underlying tables
- (Yugo Nagata)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-06 [5b6d13eec] Allow SET STATISTICS on expression indexes
--->
-
- <para>
- Allow <command>ALTER INDEX</command> to set statistics-gathering
- targets for expression indexes (Alexander Korotkov, Adrien Nayrat)
- </para>
-
- <para>
- In <application>psql</application>, <literal>\d+</literal> now shows
- the statistics target for indexes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-03 [11d8d72c2] Allow multiple tables to be specified in one VACUUM or A
--->
-
- <para>
- Allow multiple tables to be specified in one
- <command>VACUUM</command> or <command>ANALYZE</command> command
- (Nathan Bossart)
- </para>
-
- <para>
- Also, if any table mentioned in <command>VACUUM</command> uses
- a column list, then the <command>ANALYZE</command> keyword must be
- supplied; previously, <command>ANALYZE</command> was implied in
- such cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-05 [854dd8cff] Add parenthesized options syntax for ANALYZE.
--->
-
- <para>
- Add parenthesized options syntax to <command>ANALYZE</command>
- (Nathan Bossart)
- </para>
-
- <para>
- This is similar to the syntax supported by
- <command>VACUUM</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-14 [4de2d4fba] Explicitly track whether aggregate final functions modif
-2017-10-16 [be0ebb65f] Allow the built-in ordered-set aggregates to share trans
--->
-
- <para>
- Add <command>CREATE AGGREGATE</command> option to specify the
- behavior of the aggregate's finalization function (Tom Lane)
- </para>
-
- <para>
- This is helpful for allowing user-defined aggregate functions to be
- optimized and to work as window functions.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-30 [c12d570fa] Support arrays over domains.
--->
-
- <para>
- Allow the creation of arrays of domains (Tom Lane)
- </para>
-
- <para>
- This also allows <function>array_agg()</function> to be used
- on domains.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-26 [37a795a60] Support domains over composite types.
-2017-10-26 [820c0305f] Support domains over composite types in PL/Tcl.
-2017-10-28 [60651e4cd] Support domains over composite types in PL/Perl.
-2017-11-16 [687f096ea] Make PL/Python handle domain-type conversions correctly.
--->
-
- <para>
- Support domains over composite types (Tom Lane)
- </para>
-
- <para>
- Also allow PL/Perl, PL/Python, and PL/Tcl to handle
- composite-domain function arguments and results. Also improve
- PL/Python domain handling.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-29 [c0cbe00fe] Add casts from jsonb
--->
-
- <para>
- Add casts from <type>JSONB</type> scalars to numeric and boolean data
- types (Anastasia Lubennikova)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-02-07 [0a459cec9] Support all SQL:2011 options for window frame clauses.
-2018-02-24 [8b29e88cd] Add window RANGE support for float4, float8, numeric.
--->
-
- <para>
- Add all <link linkend="sql-window">window function</link> framing
- options specified by SQL:2011 (Oliver Ford, Tom Lane)
- </para>
-
- <para>
- Specifically, allow <literal>RANGE</literal> mode to use
- <literal>PRECEDING</literal> and <literal>FOLLOWING</literal> to
- select rows having grouping values within plus or minus the
- specified offset. Add <literal>GROUPS</literal> mode to include plus
- or minus the number of peer groups. Frame exclusion syntax was also
- added.
- </para>
-
- </listitem>
-
- <listitem>
-<!--
-2018-02-22 [10cfce34c] Add user-callable SHA-2 functions
--->
-
- <para>
- Add <acronym>SHA-2</acronym> family of hash functions (Peter
- Eisentraut)
- </para>
-
- <para>
- Specifically, <link
- linkend="functions-binarystring-other"><function>sha224()</function></link>,
- <function>sha256()</function>, <function>sha384()</function>,
- <function>sha512()</function> were added.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-31 [81c5e46c4] Introduce 64-bit hash functions with a 64-bit seed.
--->
-
- <para>
- Add support for 64-bit non-cryptographic hash functions (Robert
- Haas, Amul Sul)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-09 [11b623dd0] Implement TZH and TZM timestamp format patterns
--->
-
- <para>
- Allow <function>to_char()</function> and
- <function>to_timestamp()</function> to specify the time zone's
- offset from <acronym>UTC</acronym> in hours and minutes
- (Nikita Glukhov, Andrew Dunstan)
- </para>
-
- <para>
- This is done with format specifications <link
- linkend="functions-formatting-datetime-table"><literal>TZH</literal></link>
- and <literal>TZM</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-05 [1664ae197] Add websearch_to_tsquery
--->
-
- <para>
- Add text search function <link
- linkend="textsearch-functions-table"><function>websearch_to_tsquery()</function></link>
- that supports a query syntax similar to that used by web search
- engines (Victor Drobny, Dmitry Ivanov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-07 [1c1791e00] Add json(b)_to_tsvector function
--->
-
- <para>
- Add functions <link
- linkend="textsearch-functions-table"><function>json(b)_to_tsvector()</function></link>
- to create a text search query for matching
- <type>JSON</type>/<type>JSONB</type> values (Dmitry Dolgov)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-11-30 [e4128ee76] SQL procedures
-2018-02-22 [76b6aa41f] Support parameters in CALL
-2018-03-14 [33803f67f] Support INOUT arguments in procedures
-2018-04-14 [a8677e3ff] Support named and default arguments in CALL
-2018-08-22 [e0dc839e7] Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax
-2018-08-22 [fd4417e8a] Change PROCEDURE to FUNCTION in CREATE OPERATOR syntax
--->
-
- <para>
- Add SQL-level procedures, which can start and commit their own
- transactions (Peter Eisentraut)
- </para>
-
- <para>
- They are created with the new <link
- linkend="sql-createprocedure"><command>CREATE
- PROCEDURE</command></link> command and invoked via <link
- linkend="sql-call"><command>CALL</command></link>.
- </para>
-
- <para>
- The new <command>ALTER</command>/<command>DROP ROUTINE</command>
- commands allow altering/dropping of all routine-like objects,
- including procedures, functions, and aggregates.
- </para>
-
- <para>
- Also, writing <literal>FUNCTION</literal> is now preferred
- over writing <literal>PROCEDURE</literal> in <command>CREATE
- OPERATOR</command> and <command>CREATE TRIGGER</command>, because the
- referenced object must be a function not a procedure. However, the
- old syntax is still accepted for compatibility.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-22 [8561e4840] Transaction control in PL procedures
-2018-03-28 [d92bc83c4] PL/pgSQL: Nested CALL with transactions
-2018-03-28 [056a5a3f6] Allow committing inside cursor loop
-2018-04-05 [b981275b6] PL/pgSQL: Add support for SET TRANSACTION
--->
-
- <para>
- Add transaction control to PL/pgSQL, PL/Perl, PL/Python, PL/Tcl,
- and <acronym>SPI</acronym> server-side languages (Peter Eisentraut)
- </para>
-
- <para>
- Transaction control is only available within top-transaction-level
- procedures and nested <command>DO</command> and
- <command>CALL</command> blocks that only contain other
- <command>DO</command> and <command>CALL</command> blocks.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-13 [f9263006d] Support CONSTANT/NOT NULL/initial value for plpgsql comp
--->
-
- <para>
- Add the ability to define PL/pgSQL composite-type variables as not
- null, constant, or with initial values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-13 [4b93f5799] Make plpgsql use its DTYPE_REC code paths for composite-
--->
-
- <para>
- Allow PL/pgSQL to handle changes to composite types (e.g. record,
- row) that happen between the first and later function executions
- in the same session (Tom Lane)
- </para>
-
- <para>
- Previously, such circumstances generated errors.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-28 [3f44e3db7] Transforms for jsonb to PL/Python
--->
-
- <para>
- Add extension <filename>jsonb_plpython</filename> to
- transform <type>JSONB</type> to/from PL/Python types (Anthony
- Bykov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-03 [341e16618] Transforms for jsonb to PL/Perl
--->
-
- <para>
- Add extension <filename>jsonb_plperl</filename> to transform
- <type>JSONB</type> to/from PL/Perl types (Anthony Bykov)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Interfaces</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-03-17 [e3bdb2d92] Set libpq sslcompression to off by default
--->
-
- <para>
- Change libpq to disable compression by default (Peter Eisentraut)
- </para>
-
- <para>
- Compression is already disabled in modern OpenSSL versions, so that
- the libpq setting had no effect with such libraries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-25 [d22e9d530] Implement <literal>DO CONTINUE</literal> action for <literal>ECPG WHENEVER</literal> statement
--->
-
- <para>
- Add <literal>DO CONTINUE</literal> option
- to <application>ecpg</application>'s <literal>WHENEVER</literal>
- statement (Vinayak Pokale)
- </para>
-
- <para>
- This generates a C <command>continue</command> statement, causing a
- return to the top of the contained loop when the specified condition
- occurs.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-14 [3b7ab4380] Add Oracle like handling of char arrays.
--->
-
- <para>
- Add an <application>ecpg</application> mode to enable Oracle
- Pro*C-style handling of char arrays.
- </para>
-
- <para>
- This mode is enabled with <option>-C</option>.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-05 [49ca462eb] Add \gdesc psql command.
--->
-
- <para>
- Add <application>psql</application> command <literal>\gdesc</literal>
- to display the names and types of the columns in a query result
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-12 [69835bc89] Add psql variables to track success/failure of SQL queri
--->
-
- <para>
- Add <application>psql</application> variables to report query
- activity and errors (Fabien Coelho)
- </para>
-
- <para>
- Specifically, the new variables are <literal>ERROR</literal>,
- <literal>SQLSTATE</literal>, <literal>ROW_COUNT</literal>,
- <literal>LAST_ERROR_MESSAGE</literal>, and
- <literal>LAST_ERROR_SQLSTATE</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-21 [d57c7a7c5] Provide a test for variable existence in psql
--->
-
- <para>
- Allow <application>psql</application> to test for the existence
- of a variable (Fabien Coelho)
- </para>
-
- <para>
- Specifically, the syntax <literal>:{?variable_name}</literal> allows
- a variable's existence to be tested in an <literal>\if</literal>
- statement.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-05 [5e8304fdc] In psql, use PSQL_PAGER in preference to PAGER, if it's
--->
-
- <para>
- Allow environment variable <envar>PSQL_PAGER</envar> to control
- <application>psql</application>'s pager (Pavel Stehule)
- </para>
-
- <para>
- This allows <application>psql</application>'s default pager to
- be specified as a separate environment variable from the pager
- for other applications. <envar>PAGER</envar> is still honored
- if <envar>PSQL_PAGER</envar> is not set.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-23 [05b6ec39d] Show partition info from psql \d+
--->
-
- <para>
- Make psql's <literal>\d+</literal> command always show the table's
- partitioning information (Amit Langote, Ashutosh Bapat)
- </para>
-
- <para>
- Previously, partition information would not be displayed for a
- partitioned table if it had no partitions. Also indicate which
- partitions are themselves partitioned.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-29 [15be27460] Avoid misleading psql password prompt when username is m
--->
-
- <para>
- Ensure that <application>psql</application> reports the proper user
- name when prompting for a password (Tom Lane)
- </para>
-
- <para>
- Previously, combinations of <option>-U</option> and a user name
- embedded in a <acronym>URI</acronym> caused incorrect reporting.
- Also suppress the user name before the password prompt when
- <option>--password</option> is specified.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-01 [df9f599bc] psql: Add quit/help behavior/hint, for other tool porta
--->
-
- <para>
- Allow <command>quit</command> and <command>exit</command> to
- exit <application>psql</application> when given with no prior input
- (Bruce Momjian)
- </para>
-
- <para>
- Also print hints about how to exit when <command>quit</command> and
- <command>exit</command> are used alone on a line while the input
- buffer is not empty. Add a similar hint for <command>help</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-02-12 [91389228a] psql: give ^D hint for \q in place where \q is ignored
--->
-
- <para>
- Make <application>psql</application> hint at using control-D
- when <command>\q</command> is entered alone on a line but ignored
- (Bruce Momjian)
- </para>
-
- <para>
- For example, <command>\q</command> does not exit when supplied
- in character strings.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-03 [2b8c94e1b] Improve tab-completion for ALTER INDEX RESET/SET.
--->
-
- <para>
- Improve tab completion for <command>ALTER INDEX
- RESET</command>/<command>SET</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-05 [722408bcd] Add infrastructure to support server-version-dependent t
--->
-
- <para>
- Add infrastructure to allow <application>psql</application>
- to adapt its tab completion queries based on the server version
- (Tom Lane)
- </para>
-
- <para>
- Previously, tab completion queries could fail against older servers.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="pgbench"><application>pgbench</application></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-01-09 [bc7fa0c15] Improve scripting language in pgbench
--->
-
- <para>
- Add <application>pgbench</application> expression support for
- NULLs, booleans, and some functions and operators (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-22 [f67b113ac] Add \if support to pgbench
--->
-
- <para>
- Add <literal>\if</literal> conditional support to
- <application>pgbench</application> (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-04 [9d36a3866] Adjust pgbench to allow non-ASCII characters in variable
--->
-
- <para>
- Allow the use of non-<acronym>ASCII</acronym> characters in
- <application>pgbench</application> variable names (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-13 [591c504fa] Allow running just selected steps of pgbench's initializ
--->
-
- <para>
- Add <application>pgbench</application> option
- <option>--init-steps</option> to control the initialization steps
- performed (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-14 [1fcd0adeb] Add approximated Zipfian-distributed random generator to
--->
-
- <para>
- Add an approximately Zipfian-distributed random generator to
- <application>pgbench</application> (Alik Khilazhev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-26 [64f85894a] Set random seed for pgbench.
--->
-
- <para>
- Allow the random seed to be set in
- <application>pgbench</application> (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-12-27 [7a727c180] Add pow(), aka power(), function to pgbench.
--->
-
- <para>
- Allow <application>pgbench</application> to do exponentiation
- with <function>pow()</function> and <function>power()</function>
- (Ra&uacute;l Mar&iacute;n Rodr&iacute;guez)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-21 [e51a04840] Add general purpose hasing functions to pgbench.
--->
-
- <para>
- Add hashing functions to <application>pgbench</application>
- (Ildar Musin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-04 [c23bb6bad] Fix some subtle problems in pgbench transaction stats co
-2017-11-21 [16827d442] pgbench: fix stats reporting when some transactions are
--->
-
- <para>
- Make <application>pgbench</application> statistics more
- accurate when using <option>--latency-limit</option> and
- <option>--rate</option> (Fabien Coelho)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-27 [3709ca1cf] pg_basebackup: Add option to create replication slot
--->
-
- <para>
- Add an option to <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- that creates a named replication slot (Michael Banck)
- </para>
-
- <para>
- The option <option>--create-slot</option> creates
- the named replication slot (<option>--slot</option>)
- when the <acronym>WAL</acronym> streaming method
- (<option>--wal-method=stream</option>) is used.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-07 [c37b3d08c] Allow group access on PGDATA
--->
-
- <para>
- Allow <link
- linkend="app-initdb"><application>initdb</application></link>
- to set group read access to the data directory (David Steele)
- </para>
-
- <para>
- This is accomplished with the new initdb option
- <option>--allow-group-access</option>. Administrators
- can also set group permissions on the empty data
- directory before running initdb. Server variable <link
- linkend="guc-data-directory"><varname>data_directory_mode</varname></link>
- allows reading of data directory group permissions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-05 [1fde38bea] Allow on-line enabling and disabling of data checksums
-2018-04-09 [a228cc13a] Revert "Allow on-line enabling and disabling of data che
--->
-
- <para>
- Add <link
- linkend="pgverifychecksums"><application>pg_verify_checksums</application></link>
- tool to verify database checksums while offline (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-25 [bf4a8676c] pg_resetwal: Allow users to change the WAL segment size
--->
-
- <para>
- Allow <link
- linkend="app-pgresetwal"><application>pg_resetwal</application></link>
- to change the <acronym>WAL</acronym> segment size via
- <option>--wal-segsize</option> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-24 [e22b27f0c] Add long options to pg_resetwal and pg_controldata
--->
-
- <para>
- Add long options to <application>pg_resetwal</application>
- and <application>pg_controldata</application> (Nathan Bossart,
- Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-29 [5f3971291] pg_receivewal: Add - -no-sync option.
--->
-
- <para>
- Add <link
- linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
- option <option>--no-sync</option> to prevent synchronous
- <acronym>WAL</acronym> writes, for testing (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-11 [6d9fa5264] pg_receivewal: Add - -endpos option
--->
-
- <para>
- Add <application>pg_receivewal</application> option
- <option>--endpos</option> to specify when <acronym>WAL</acronym>
- receiving should stop (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-01 [2e83db3ad] Allow pg_ctl kill to send SIGKILL.
--->
-
- <para>
- Allow <link
- linkend="app-pg-ctl"><application>pg_ctl</application></link>
- to send the <literal>SIGKILL</literal> signal to processes
- (Andres Freund)
- </para>
-
- <para>
- This was previously unsupported due to concerns over possible misuse.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-29 [266b6acb3] Make pg_rewind skip files and directories that are remov
--->
-
- <para>
- Reduce the number of files copied by <link
- linkend="app-pgrewind"><application>pg_rewind</application></link>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-09 [5d5aeddab] Make sure pg_rewind can't run as root
--->
-
- <para>
- Prevent <application>pg_rewind</application> from running as
- <literal>root</literal> (Michael Paquier)
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link>,
- <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
- <link linkend="app-pgrestore"><application>pg_restore</application></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-09-01 [84be67181] pg_dumpall: Add a -E flag to set the encoding, like pg_d
--->
-
- <para>
- Add <application>pg_dumpall</application> option
- <option>--encoding</option> to control output encoding
- (Michael Paquier)
- </para>
-
- <para>
- <application>pg_dump</application> already had this option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-14 [23d7680d0] pg_dump: Add a - -load-via-partition-root option.
--->
-
- <para>
- Add <application>pg_dump</application> option
- <option>--load-via-partition-root</option> to force loading of
- data into the partition's root table, rather than the original
- partition (Rushabh Lathia)
- </para>
-
- <para>
- This is useful if the system to be loaded to has different collation
- definitions or endianness, possibly requiring rows to be stored in
- different partitions than previously.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-25 [1368e92e1] Support - -no-comments in pg_dump, pg_dumpall, pg_restore
--->
-
- <para>
- Add an option to suppress dumping and restoring database object
- comments (Robins Tharakan)
- </para>
-
- <para>
- The new <application>pg_dump</application>,
- <application>pg_dumpall</application>, and
- <application>pg_restore</application> option is
- <option>--no-comments</option>.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2018-07-31 [d06eebce5] Provide for contrib and pgxs modules to install include
-2018-09-05 [235526a20] Allow extensions to install built as well as unbuilt hea
-2018-09-07 [094ffd684] Refactor installation of extension headers.
-2018-09-16 [f1ca5a654] Fix out-of-tree build for transform modules.
--->
- <para>
- Add <application>PGXS</application> support for installing include
- files (Andrew Gierth)
- </para>
-
- <para>
- This supports creating extension modules that depend on other
- modules. Formerly there was no easy way for the dependent module to
- find the referenced one's include files. Several
- existing <filename>contrib</filename> modules that define data types
- have been adjusted to install relevant files. Also, PL/Perl and
- PL/Python now install their include files, to support creation of
- transform modules for those languages.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-05 [1fd869066] Install errcodes.txt for use by extensions.
--->
-
- <para>
- Install <filename>errcodes.txt</filename> to allow extensions to access
- the list of error codes known to <productname>PostgreSQL</productname>
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-06 [1c53f612b] Escape &lt; and &amp; in SGML
-2017-10-17 [c29c57890] Don't use SGML empty tags
-2017-10-20 [1ff01b390] Convert SGML IDs to lower case
-2017-11-23 [3c49c6fac] Convert documentation to DocBook XML
--->
-
- <para>
- Convert documentation to DocBook <acronym>XML</acronym> (Peter
- Eisentraut, Alexander Lakhin, J&uuml;rgen Purtz)
- </para>
-
- <para>
- The file names still use an <filename>sgml</filename> extension
- for compatibility with back branches.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-22 [9a95a77d9] Use stdbool.h if suitable
-2018-03-23 [7ba7986fb] Fix interaction of Perl and stdbool.h
-2018-05-02 [6fe25c135] Change SIZEOF_BOOL to 1 for Windows.
--->
-
- <para>
- Use <filename>stdbool.h</filename> to define type <type>bool</type>
- on platforms where it's suitable, which is most (Peter Eisentraut)
- </para>
-
- <para>
- This eliminates a coding hazard for extension modules that need
- to include <filename>stdbool.h</filename>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-03 [a351679c8] Trivial adjustments in preparation for bootstrap data co
-2018-04-08 [372728b0d] Replace our traditional initial-catalog-data format with
-2018-04-17 [e90d4ddc6] Simplify genbki.pl's data quoting rules.
-2018-04-17 [9ffcccdb9] Rationalize handling of array type names in bootstrap da
-2018-04-17 [55d26ff63] Rationalize handling of single and double quotes in boot
-2018-04-18 [5372c2c84] Improve error detection/reporting in Catalog.pm and genb
-2018-04-26 [a0854f107] Avoid parsing catalog data twice during BKI file constru
-2018-05-05 [d160882a1] Fix bootstrap parser so that its keywords are unreserved
--->
-
- <para>
- Overhaul the way that initial system catalog contents are defined
- (John Naylor)
- </para>
-
- <para>
- The initial data is now represented in Perl data structures, making
- it much easier to manipulate mechanically.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-21 [846b5a525] Prevent extensions from creating custom GUCs that are GU
--->
-
- <para>
- Prevent extensions from creating custom server parameters that
- take a quoted list of values (Tom Lane)
- </para>
-
- <para>
- This cannot be supported at present because knowledge of the
- parameter's property would be required even before the extension is
- loaded.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-18 [9288d62bb] Support channel binding 'tls-unique' in SCRAM
-2017-12-19 [4bbf110d2] Add libpq connection parameter "scram_channel_binding"
-2018-01-04 [d3fb72ea6] Implement channel binding tls-server-end-point for SCRAM
--->
-
- <para>
- Add ability to use channel binding when using <link
- linkend="auth-password"><acronym>SCRAM</acronym></link>
- authentication (Michael Paquier)
- </para>
-
- <para>
- Channel binding is intended to prevent man-in-the-middle attacks, but
- <acronym>SCRAM</acronym> cannot prevent them unless it can be forced
- to be active. Unfortunately, there is no way to do that in libpq.
- Support for it is expected in future versions of libpq and in
- interfaces not built using libpq, e.g. JDBC.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-05 [eed1ce72e] Allow background workers to bypass datallowconn
--->
-
- <para>
- Allow background workers to attach to databases that normally
- disallow connections (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-04 [f044d71e3] Use ARMv8 CRC instructions where available.
--->
-
- <para>
- Add support for hardware <acronym>CRC</acronym> calculations
- on <productname>ARMv8</productname> (Yuqi Gu, Heikki Linnakangas,
- Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-04 [212e6f34d] Replace binary search in fmgr_isbuiltin with a lookup ar
--->
-
- <para>
- Speed up lookups of built-in functions by OID (Andres Freund)
- </para>
-
- <para>
- The previous binary search has been replaced by a lookup array.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-11 [1de09ad8e] Add more efficient functions to pqformat API.
--->
-
- <para>
- Speed up construction of query results (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-13 [141fd1b66] Improve sys/catcache performance.
--->
-
- <para>
- Improve speed of access to system caches (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-23 [a4ccc1cef] Generational memory allocator
--->
-
- <para>
- Add a generational memory allocator which is optimized for serial
- allocation/deallocation (Tomas Vondra)
- </para>
-
- <para>
- This reduces memory usage for logical decoding.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-22 [7c91a0364] Sync up our various ways of estimating pg_class.reltuple
--->
-
- <para>
- Make the computation of
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- by <command>VACUUM</command> consistent with its computation
- by <command>ANALYZE</command> (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-25 [46cda5bf7] Change pgindent/README to specify that we use perltidy v
-2018-04-27 [a2ada08d4] perltidy: Don't write backup files
--->
-
- <para>
- Update to use <application>perltidy</application> version
- <literal>20170521</literal> (Tom Lane, Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2017-08-21 [79ccd7cbd] pg_prewarm: Add automatic prewarm feature.
--->
-
- <para>
- Allow extension <link
- linkend="pgprewarm"><filename>pg_prewarm</filename></link>
- to restore the previous shared buffer contents on startup (Mithun
- Cy, Robert Haas)
- </para>
-
- <para>
- This is accomplished by having <filename>pg_prewarm</filename> store
- the shared buffers' relation and block number data to disk
- occasionally during server operation, and at shutdown.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-21 [be8a7a686] Add strict_word_similarity to pg_trgm module
--->
-
- <para>
- Add <link linkend="pgtrgm"><filename>pg_trgm</filename></link>
- function <function>strict_word_similarity()</function> to compute
- the similarity of whole words (Alexander Korotkov)
- </para>
-
- <para>
- The function <function>word_similarity()</function> already
- existed for this purpose, but it was designed to find similar
- parts of words, while <function>strict_word_similarity()</function>
- computes the similarity to whole words.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-19 [f24649976] Add citext_pattern_ops for citext contrib module
--->
-
- <para>
- Allow creation of indexes that can be used by <literal>LIKE</literal>
- comparisons
- on <link linkend="citext"><filename>citext</filename></link> columns
- (Alexey Chernyshov)
- </para>
-
- <para>
- To do this, the index must be created using the
- <literal>citext_pattern_ops</literal> operator class.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-05 [f4cd7102b] Add support of bool, bpchar, name and uuid to btree_gin
--->
-
- <para>
- Allow <link
- linkend="btree-gin"><filename>btree_gin</filename></link>
- to index <type>bool</type>, <type>bpchar</type>, <type>name</type>
- and <type>uuid</type> data types (Matheus Oliveira)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-20 [de1d042f5] Support index-only scans in contrib/cube and contrib/seg
--->
-
- <para>
- Allow <link linkend="cube"><filename>cube</filename></link>
- and <link linkend="seg"><filename>seg</filename></link>
- extensions to perform index-only scans using GiST indexes
- (Andrey Borodin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-01-11 [f50c80dbb] llow negative coordinate for ~&gt; (cube, int) operator
--->
-
- <para>
- Allow retrieval of negative cube coordinates using
- the <literal>~&gt;</literal> operator (Alexander Korotkov)
- </para>
-
- <para>
- This is useful for KNN-GiST searches when looking for coordinates in
- descending order.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-08-16 [ec0a69e49] Extend the default rules file for contrib/unaccent with
--->
-
- <para>
- Add Vietnamese letter handling to the <link
- linkend="unaccent"><filename>unaccent</filename></link>
- extension (Dang Minh Huong, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-03-31 [7f563c09f] Add amcheck verification of heap relations belonging to
--->
-
- <para>
- Enhance <link
- linkend="amcheck"><filename>amcheck</filename></link>
- to check that each heap tuple has an index entry (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2018-04-06 [11523e860] Support new default roles with adminpack
--->
-
- <para>
- Have <link
- linkend="adminpack"><filename>adminpack</filename></link>
- use the new default file system access roles (Stephen Frost)
- </para>
-
- <para>
- Previously, only superusers could call <filename>adminpack</filename>
- functions; now role permissions are checked.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-10-11 [cff440d36] pg_stat_statements: Widen query IDs from 32 bits to 64 b
--->
-
- <para>
- Widen <structname>pg_stat_statement</structname>'s query ID
- to 64 bits (Robert Haas)
- </para>
-
- <para>
- This greatly reduces the chance of query ID hash collisions.
- The query ID can now potentially display as a negative value.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-11-17 [527878635] Remove contrib/start-scripts/osx/.
--->
-
- <para>
- Remove the <filename>contrib/start-scripts/osx</filename> scripts
- since they are no longer recommended
- (use <filename>contrib/start-scripts/macos</filename> instead)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2017-09-22 [5d3cad564] Remove contrib/chkpass
--->
-
- <para>
- Remove the <filename>chkpass</filename> extension (Peter Eisentraut)
- </para>
-
- <para>
- This extension is no longer considered to be a usable security tool
- or example of how to write an extension.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2 id="release-11-acknowledgements">
- <title>Acknowledgments</title>
-
- <para>
- The following individuals (in alphabetical order) have contributed to this
- release as patch authors, committers, reviewers, testers, or reporters of
- issues.
- </para>
-
- <simplelist>
- <member>Abhijit Menon-Sen</member>
- <member>Adam Bielanski</member>
- <member>Adam Brightwell</member>
- <member>Adam Brusselback</member>
- <member>Aditya Toshniwal</member>
- <member>Adrián Escoms</member>
- <member>Adrien Nayrat</member>
- <member>Akos Vandra</member>
- <member>Aleksander Alekseev</member>
- <member>Aleksandr Parfenov</member>
- <member>Alexander Korotkov</member>
- <member>Alexander Kukushkin</member>
- <member>Alexander Kuzmenkov</member>
- <member>Alexander Lakhin</member>
- <member>Alexandre Garcia</member>
- <member>Alexey Bashtanov</member>
- <member>Alexey Chernyshov</member>
- <member>Alexey Kryuchkov</member>
- <member>Alik Khilazhev</member>
- <member>Álvaro Herrera</member>
- <member>Amit Kapila</member>
- <member>Amit Khandekar</member>
- <member>Amit Langote</member>
- <member>Amul Sul</member>
- <member>Anastasia Lubennikova</member>
- <member>Andreas Joseph Krogh</member>
- <member>Andreas Karlsson</member>
- <member>Andreas Seltenreich</member>
- <member>André Hänsel</member>
- <member>Andrei Gorita</member>
- <member>Andres Freund</member>
- <member>Andrew Dunstan</member>
- <member>Andrew Fletcher</member>
- <member>Andrew Gierth</member>
- <member>Andrew Grossman</member>
- <member>Andrew Krasichkov</member>
- <member>Andrey Borodin</member>
- <member>Andrey Lizenko</member>
- <member>Andy Abelisto</member>
- <member>Anthony Bykov</member>
- <member>Antoine Scemama</member>
- <member>Anton Dignös</member>
- <member>Antonin Houska</member>
- <member>Arseniy Sharoglazov</member>
- <member>Arseny Sher</member>
- <member>Arthur Zakirov</member>
- <member>Ashutosh Bapat</member>
- <member>Ashutosh Sharma</member>
- <member>Ashwin Agrawal</member>
- <member>Asim Praveen</member>
- <member>Atsushi Torikoshi</member>
- <member>Badrul Chowdhury</member>
- <member>Balazs Szilfai</member>
- <member>Basil Bourque</member>
- <member>Beena Emerson</member>
- <member>Ben Chobot</member>
- <member>Benjamin Coutu</member>
- <member>Bernd Helmle</member>
- <member>Blaz Merela</member>
- <member>Brad DeJong</member>
- <member>Brent Dearth</member>
- <member>Brian Cloutier</member>
- <member>Bruce Momjian</member>
- <member>Catalin Iacob</member>
- <member>Chad Trabant</member>
- <member>Chapman Flack</member>
- <member>Christian Duta</member>
- <member>Christian Ullrich</member>
- <member>Christoph Berg</member>
- <member>Christoph Dreis</member>
- <member>Christophe Courtois</member>
- <member>Christopher Jones</member>
- <member>Claudio Freire</member>
- <member>Clayton Salem</member>
- <member>Craig Ringer</member>
- <member>Dagfinn Ilmari Mannsåker</member>
- <member>Dan Vianello</member>
- <member>Dan Watson</member>
- <member>Dang Minh Huong</member>
- <member>Daniel Gustafsson</member>
- <member>Daniel Vérité</member>
- <member>Daniel Westermann</member>
- <member>Daniel Wood</member>
- <member>Darafei Praliaskouski</member>
- <member>Dave Cramer</member>
- <member>Dave Page</member>
- <member>David Binderman</member>
- <member>David Carlier</member>
- <member>David Fetter</member>
- <member>David G. Johnston</member>
- <member>David Gould</member>
- <member>David Hinkle</member>
- <member>David Pereiro Lagares</member>
- <member>David Rader</member>
- <member>David Rowley</member>
- <member>David Steele</member>
- <member>Davy Machado</member>
- <member>Dean Rasheed</member>
- <member>Dian Fay</member>
- <member>Dilip Kumar</member>
- <member>Dmitriy Sarafannikov</member>
- <member>Dmitry Dolgov</member>
- <member>Dmitry Ivanov</member>
- <member>Dmitry Shalashov</member>
- <member>Don Seiler</member>
- <member>Doug Doole</member>
- <member>Doug Rady</member>
- <member>Edmund Horner</member>
- <member>Eiji Seki</member>
- <member>Elvis Pranskevichus</member>
- <member>Emre Hasegeli</member>
- <member>Erik Rijkers</member>
- <member>Erwin Brandstetter</member>
- <member>Etsuro Fujita</member>
- <member>Euler Taveira</member>
- <member>Everaldo Canuto</member>
- <member>Fabien Coelho</member>
- <member>Fabrízio de Royes Mello</member>
- <member>Feike Steenbergen</member>
- <member>Frits Jalvingh</member>
- <member>Fujii Masao</member>
- <member>Gao Zengqi</member>
- <member>Gianni Ciolli</member>
- <member>Greg Stark</member>
- <member>Gunnlaugur Thor Briem</member>
- <member>Guo Xiang Tan</member>
- <member>Hadi Moshayedi</member>
- <member>Hailong Li</member>
- <member>Haribabu Kommi</member>
- <member>Heath Lord</member>
- <member>Heikki Linnakangas</member>
- <member>Hugo Mercier</member>
- <member>Igor Korot</member>
- <member>Igor Neyman</member>
- <member>Ildar Musin</member>
- <member>Ildus Kurbangaliev</member>
- <member>Ioseph Kim</member>
- <member>Jacob Champion</member>
- <member>Jaime Casanova</member>
- <member>Jakob Egger</member>
- <member>Jean-Pierre Pelletier</member>
- <member>Jeevan Chalke</member>
- <member>Jeevan Ladhe</member>
- <member>Jeff Davis</member>
- <member>Jeff Janes</member>
- <member>Jeremy Evans</member>
- <member>Jeremy Finzel</member>
- <member>Jeremy Schneider</member>
- <member>Jesper Pedersen</member>
- <member>Jim Nasby</member>
- <member>Jimmy Yih</member>
- <member>Jing Wang</member>
- <member>Jobin Augustine</member>
- <member>Joe Conway</member>
- <member>John Gorman</member>
- <member>John Naylor</member>
- <member>Jon Nelson</member>
- <member>Jon Wolski</member>
- <member>Jonathan Allen</member>
- <member>Jonathan S. Katz</member>
- <member>Julien Rouhaud</member>
- <member>Jürgen Purtz</member>
- <member>Justin Pryzby</member>
- <member>KaiGai Kohei</member>
- <member>Kaiting Chen</member>
- <member>Karl Lehenbauer</member>
- <member>Keith Fiske</member>
- <member>Kevin Bloch</member>
- <member>Kha Nguyen</member>
- <member>Kim Rose Carlsen</member>
- <member>Konstantin Knizhnik</member>
- <member>Kuntal Ghosh</member>
- <member>Kyle Samson</member>
- <member>Kyotaro Horiguchi</member>
- <member>Lætitia Avrot</member>
- <member>Lars Kanis</member>
- <member>Laurenz Albe</member>
- <member>Leonardo Cecchi</member>
- <member>Liudmila Mantrova</member>
- <member>Lixian Zou</member>
- <member>Lloyd Albin</member>
- <member>Luca Ferrari</member>
- <member>Lucas Fairchild</member>
- <member>Lukas Eder</member>
- <member>Lukas Fittl</member>
- <member>Magnus Hagander</member>
- <member>Mai Peng</member>
- <member>Maksim Milyutin</member>
- <member>Maksym Boguk</member>
- <member>Mansur Galiev</member>
- <member>Marc Dilger</member>
- <member>Marco Nenciarini</member>
- <member>Marina Polyakova</member>
- <member>Mario de Frutos Dieguez</member>
- <member>Mark Cave-Ayland</member>
- <member>Mark Dilger</member>
- <member>Mark Wood</member>
- <member>Marko Tiikkaja</member>
- <member>Markus Winand</member>
- <member>Martín Marqués</member>
- <member>Masahiko Sawada</member>
- <member>Matheus Oliveira</member>
- <member>Matthew Stickney</member>
- <member>Metin Doslu</member>
- <member>Michael Banck</member>
- <member>Michael Meskes</member>
- <member>Michael Paquier</member>
- <member>Michail Nikolaev</member>
- <member>Mike Blackwell</member>
- <member>Minh-Quan Tran</member>
- <member>Mithun Cy</member>
- <member>Morgan Owens</member>
- <member>Nathan Bossart</member>
- <member>Nathan Wagner</member>
- <member>Neil Conway</member>
- <member>Nick Barnes</member>
- <member>Nicolas Thauvin</member>
- <member>Nikhil Sontakke</member>
- <member>Nikita Glukhov</member>
- <member>Nikolay Shaplov</member>
- <member>Noah Misch</member>
- <member>Noriyoshi Shinoda</member>
- <member>Oleg Bartunov</member>
- <member>Oleg Samoilov</member>
- <member>Oliver Ford</member>
- <member>Pan Bian</member>
- <member>Pascal Legrand</member>
- <member>Patrick Hemmer</member>
- <member>Patrick Krecker</member>
- <member>Paul Bonaud</member>
- <member>Paul Guo</member>
- <member>Paul Ramsey</member>
- <member>Pavan Deolasee</member>
- <member>Pavan Maddamsetti</member>
- <member>Pavel Golub</member>
- <member>Pavel Stehule</member>
- <member>Peter Eisentraut</member>
- <member>Peter Geoghegan</member>
- <member>Petr Jelínek</member>
- <member>Petru-Florin Mihancea</member>
- <member>Phil Florent</member>
- <member>Philippe Beaudoin</member>
- <member>Pierre Ducroquet</member>
- <member>Piotr Stefaniak</member>
- <member>Prabhat Sahu</member>
- <member>Pu Qun</member>
- <member>QL Zhuo</member>
- <member>Rafia Sabih</member>
- <member>Rahila Syed</member>
- <member>Rainer Orth</member>
- <member>Rajkumar Raghuwanshi</member>
- <member>Raúl Marín Rodríguez</member>
- <member>Regina Obe</member>
- <member>Richard Yen</member>
- <member>Robert Haas</member>
- <member>Robins Tharakan</member>
- <member>Rod Taylor</member>
- <member>Rushabh Lathia</member>
- <member>Ryan Murphy</member>
- <member>Sahap Asci</member>
- <member>Samuel Horwitz</member>
- <member>Scott Ure</member>
- <member>Sean Johnston</member>
- <member>Shao Bret</member>
- <member>Shay Rojansky</member>
- <member>Shubham Barai</member>
- <member>Simon Riggs</member>
- <member>Simone Gotti</member>
- <member>Sivasubramanian Ramasubramanian</member>
- <member>Stas Kelvich</member>
- <member>Stefan Kaltenbrunner</member>
- <member>Stephen Froehlich</member>
- <member>Stephen Frost</member>
- <member>Steve Singer</member>
- <member>Steven Winfield</member>
- <member>Sven Kunze</member>
- <member>Taiki Kondo</member>
- <member>Takayuki Tsunakawa</member>
- <member>Takeshi Ideriha</member>
- <member>Tatsuo Ishii</member>
- <member>Tatsuro Yamada</member>
- <member>Teodor Sigaev</member>
- <member>Thom Brown</member>
- <member>Thomas Kellerer</member>
- <member>Thomas Munro</member>
- <member>Thomas Reiss</member>
- <member>Tobias Bussmann</member>
- <member>Todd A. Cook</member>
- <member>Tom Kazimiers</member>
- <member>Tom Lane</member>
- <member>Tomas Vondra</member>
- <member>Tomonari Katsumata</member>
- <member>Torsten Grust</member>
- <member>Tushar Ahuja</member>
- <member>Vaishnavi Prabakaran</member>
- <member>Vasundhar Boddapati</member>
- <member>Victor Drobny</member>
- <member>Victor Wagner</member>
- <member>Victor Yegorov</member>
- <member>Vik Fearing</member>
- <member>Vinayak Pokale</member>
- <member>Vincent Lachenal</member>
- <member>Vitaliy Garnashevich</member>
- <member>Vitaly Burovoy</member>
- <member>Vladimir Baranoff</member>
- <member>Xin Zhang</member>
- <member>Yi Wen Wong</member>
- <member>Yorick Peterse</member>
- <member>Yugo Nagata</member>
- <member>Yuqi Gu</member>
- <member>Yura Sokolov</member>
- <member>Yves Goergen</member>
- <member>Zhou Digoal</member>
- </simplelist>
- </sect2>
-
- </sect1>
diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml
index b06fef287dc..348f0f58251 100644
--- a/doc/src/sgml/release-12.sgml
+++ b/doc/src/sgml/release-12.sgml
@@ -4,8 +4,14 @@
<sect1 id="release-12">
<title>Release 12</title>
- <para>JIT is enabled by default in this release. It was disabled by
- default in PG 11, so we document is enablement here.
+ <para>
+ This is just a placeholder for now. Actual notes will appear
+ after feature freeze.
+ </para>
+
+ <para>
+ JIT is enabled by default in this release. It was disabled by
+ default in PG 11, so we should document its enablement here.
</para>
</sect1>
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml
deleted file mode 100644
index a67945a42b5..00000000000
--- a/doc/src/sgml/release-7.4.sgml
+++ /dev/null
@@ -1,4622 +0,0 @@
-<!-- doc/src/sgml/release-7.4.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-7-4-30">
- <title>Release 7.4.30</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.29.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 7.4.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.30</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.26,
- see <xref linkend="release-7-4-26"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-29">
- <title>Release 7.4.29</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.28.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 7.4.X release series in July 2010.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.29</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.26,
- see <xref linkend="release-7-4-26"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-28">
- <title>Release 7.4.28</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.27.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 7.4.X release series in July 2010.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.28</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.26,
- see <xref linkend="release-7-4-26"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-27">
- <title>Release 7.4.27</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.26.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.27</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.26,
- see <xref linkend="release-7-4-26"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-26">
- <title>Release 7.4.26</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.25.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.26</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you have any hash indexes on <type>interval</type> columns,
- you must <command>REINDEX</command> them after updating to 7.4.26.
- Also, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of sub-SELECTs appearing in the arguments of
- an outer-level aggregate function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash calculation for data type <type>interval</type> (Tom)
- </para>
-
- <para>
- This corrects wrong results for hash joins on interval values.
- It also changes the contents of hash indexes on interval columns.
- If you have any such indexes, you must <command>REINDEX</command> them
- after updating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix calculation of distance between a point and a line segment (Tom)
- </para>
-
- <para>
- This led to incorrect results from a number of geometric operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>money</type> data type to work in locales where currency
- amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly round datetime input like
- <literal>00:12:57.9999999999999999999999999999</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix poor choice of page split point in GiST R-tree operator classes
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability issues in plperl initialization (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-25">
- <title>Release 7.4.25</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-03-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.24.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.25</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</emphasis> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</command> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
-
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump when <function>to_char()</function> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-24">
- <title>Release 7.4.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-02-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.23.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.24</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of URLs in <function>headline()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of overlength headlines in <function>headline()</function>
- function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible Assert failure or misconversion if an encoding
- conversion is created with the wrong conversion function for the
- specified pair of encodings (Tom, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary locking of small tables in <command>VACUUM</command>
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix uninitialized variables in <filename>contrib/tsearch2</filename>'s
- <function>get_covers()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <function>to_char()</function>'s handling of <literal>TH</literal>
- format codes (Andreas Scherbaum)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make all documentation reference <literal>pgsql-bugs</literal> and/or
- <literal>pgsql-hackers</literal> as appropriate, instead of the
- now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
- mailing lists (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-23">
- <title>Release 7.4.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-11-03</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.22.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.23</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix backend crash when the client encoding cannot represent a localized
- error message (Tom)
- </para>
-
- <para>
- We have addressed similar issues before, but it would still fail if
- the <quote>character has no equivalent</quote> message itself couldn't
- be converted. The fix is to disable localization and send the plain
- ASCII error message when we detect such a situation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect tsearch2 headline generation when single query
- item matches first word of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper display of fractional seconds in interval values when
- using a non-ISO datestyle in an <option>--enable-integer-datetimes</option>
- build (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
- behave correctly when the passed tuple and tuple descriptor have
- different numbers of columns (Tom)
- </para>
-
- <para>
- This situation is normal when a table has had columns added or removed,
- but these two functions didn't handle it properly.
- The only likely consequence is an incorrect error indication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s parsing of <command>CREATE USER</command> (Michael)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-22">
- <title>Release 7.4.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-09-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.21.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.22</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix datetime input functions to correctly detect integer overflow when
- running on a 64-bit platform (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of writing very long log messages to syslog (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
- ON</literal> query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
- boolean results always result in two groups, regardless of the
- expressions' contents (Tom)
- </para>
-
- <para>
- This is very substantially more accurate than the regular <literal>GROUP
- BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
- <literal>IS NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- error reporting after failure to send a SQL command (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-21">
- <title>Release 7.4.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-06-12</para>
- </formalpara>
-
- <para>
- This release contains one serious bug fix over 7.4.20.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.21</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
- </para>
-
- <para>
- Before this fix, a negative constant in a view or rule might be dumped
- as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
- be <literal>(-42)::integer</literal> due to operator precedence rules.
- Usually this would make little difference, but it could interact with
- another recent patch to cause
- <productname>PostgreSQL</productname> to reject what had been a valid
- <command>SELECT DISTINCT</command> view query. Since this could result in
- <application>pg_dump</application> output failing to reload, it is being treated
- as a high-priority fix. The only released versions in which dump
- output is actually incorrect are 8.3.1 and 8.2.7.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-20">
- <title>Release 7.4.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>never released</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.19.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.20</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- However, if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix conversions between ISO-8859-5 and other encodings to handle
- Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
- two dots) (Sergey Burladyan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a few datatype input functions
- that were allowing unused bytes in their results to contain
- uninitialized, unpredictable values (Tom)
- </para>
-
- <para>
- This could lead to failures in which two apparently identical literal
- values were not seen as equal, resulting in the parser complaining
- about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal>
- expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case in regular-expression substring matching
- (<literal>substring(<replaceable>string</replaceable> from
- <replaceable>pattern</replaceable>)</literal>) (Tom)
- </para>
-
- <para>
- The problem occurs when there is a match to the pattern overall but
- the user has specified a parenthesized subexpression and that
- subexpression hasn't got a match. An example is
- <literal>substring('foo' from 'foo(bar)?')</literal>.
- This should return NULL, since <literal>(bar)</literal> isn't matched, but
- it was mistakenly returning the whole-pattern match instead (ie,
- <literal>foo</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect result from <application>ecpg</application>'s
- <function>PGTYPEStimestamp_sub()</function> function (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
- 4.3 (Tom)
- </para>
-
- <para>
- This problem affects <quote>old style</quote> (V0) C functions that
- return boolean. The fix is already in 8.3, but the need to
- back-patch it was not realized at the time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
- race condition (Tom)
- </para>
-
- <para>
- In rare cases a session that had just executed a
- <command>LISTEN</command> might not get a notification, even though
- one would be expected because the concurrent transaction executing
- <command>NOTIFY</command> was observed to commit later.
- </para>
-
- <para>
- A side effect of the fix is that a transaction that has executed
- a not-yet-committed <command>LISTEN</command> command will not see any
- row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
- should it choose to look; formerly it would have. This behavior
- was never documented one way or the other, but it is possible that
- some applications depend on the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of constant expressions in <literal>ORDER BY</literal>
- and <literal>GROUP BY</literal> (Tom)
- </para>
-
- <para>
- An explicitly casted constant would be shown incorrectly. This could
- for example lead to corruption of a view definition during
- dump and reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to handle NOTICE messages correctly
- during COPY OUT (Tom)
- </para>
-
- <para>
- This failure has only been observed to occur when a user-defined
- datatype's output routine issues a NOTICE, but there is no
- guarantee it couldn't happen due to other causes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-19">
- <title>Release 7.4.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-01-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.18,
- including fixes for significant security issues.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.19</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent functions in indexes from executing with the privileges of
- the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
- </para>
-
- <para>
- Functions used in index expressions and partial-index
- predicates are evaluated whenever a new table entry is made. It has
- long been understood that this poses a risk of trojan-horse code
- execution if one modifies a table owned by an untrustworthy user.
- (Note that triggers, defaults, check constraints, etc. pose the
- same type of risk.) But functions in indexes pose extra danger
- because they will be executed by routine maintenance operations
- such as <command>VACUUM FULL</command>, which are commonly performed
- automatically under a superuser account. For example, a nefarious user
- can execute code with superuser privileges by setting up a
- trojan-horse index definition and waiting for the next routine vacuum.
- The fix arranges for standard maintenance operations
- (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
- and <command>CLUSTER</command>) to execute as the table owner rather than
- the calling user, using the same privilege-switching mechanism already
- used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
- this security measure, execution of <command>SET SESSION
- AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
- <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
- </para>
-
- <para>
- Suitably crafted regular-expression patterns could cause crashes,
- infinite or near-infinite looping, and/or massive memory consumption,
- all of which pose denial-of-service hazards for applications that
- accept regex search patterns from untrustworthy sources.
- (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
-
- <para>
- The fix that appeared for this in 7.4.18 was incomplete, as it plugged
- the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
- CVE-2007-3278)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure in some cases of <literal>WHERE false AND var IN
- (SELECT ...)</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in <function>translate()</function> when using a multibyte
- database encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to not crash on long exception messages (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>ecpg</application> parser fixes (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
- NULL rowid as a category in its own right, rather than crashing (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>tsvector</type> and <type>tsquery</type> output routines to
- escape backslashes correctly (Teodor, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a specific version of <productname>Autoconf</productname> to be used
- when re-generating the <command>configure</command> script (Peter)
- </para>
-
- <para>
- This affects developers and packagers only. The change was made
- to prevent accidental use of untested combinations of
- <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
- You can remove the version check if you really want to use a
- different <productname>Autoconf</productname> version, but it's
- your responsibility whether the result works or not.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-18">
- <title>Release 7.4.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-09-17</para>
- </formalpara>
-
- <para>
- This release contains fixes from 7.4.17.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.18</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent index corruption when a transaction inserts rows and
- then aborts close to the end of a concurrent <command>VACUUM</command>
- on the same table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when <varname>log_min_error_statement</varname> logging runs out
- of memory (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CLUSTER</command> from failing
- due to attempting to process temporary tables of other sessions (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-17">
- <title>Release 7.4.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-04-23</para>
- </formalpara>
-
- <para>
- This release contains fixes from 7.4.16,
- including a security fix.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.17</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support explicit placement of the temporary-table schema within
- <varname>search_path</varname>, and disable searching it for functions
- and operators (Tom)
- </para>
- <para>
- This is needed to allow a security-definer function to set a
- truly secure value of <varname>search_path</varname>. Without it,
- an unprivileged SQL user can use temporary objects to execute code
- with the privileges of the security-definer function (CVE-2007-2138).
- See <command>CREATE FUNCTION</command> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>/contrib/tsearch2</filename> crash fixes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
- <command>UPDATE</command> chains (Tom, Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
- (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-16">
- <title>Release 7.4.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.15, including
- a security fix.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.16</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove security vulnerability that allowed connected users
- to read backend memory (Tom)
- </para>
- <para>
- The vulnerability involves suppressing the normal check that a SQL
- function returns the data type it's declared to, or changing the
- data type of a table column used in a SQL function (CVE-2007-0555).
- This error can easily be exploited to cause a backend crash, and in
- principle might be used to read database content that the user
- should not be able to access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare bug wherein btree index page splits could fail
- due to choosing an infeasible split point (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten security of multi-byte character processing for UTF8 sequences
- over three bytes long (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-15">
- <title>Release 7.4.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-01-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.14.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.15</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of <function>getaddrinfo()</function> on AIX (Tom)
- </para>
-
- <para>
- This fixes a problem with starting the statistics collector,
- among other things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to re-find parent key</quote> errors in
- <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs affecting multi-gigabyte hash indexes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error when constructing an <literal>ARRAY[]</literal> made up of multiple
- empty elements (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>to_number()</function> and <function>to_char(numeric)</function>
- are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for
- new <application>initdb</application> installs (Tom)
- </para>
-
- <para>
- This is because <varname>lc_numeric</varname> can potentially
- change the output of these functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve index usage of regular expressions that use parentheses (Tom)
- </para>
-
- <para>
- This improves <application>psql</application> <literal>\d</literal> performance also.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-14">
- <title>Release 7.4.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-10-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.13.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.14</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</para></listitem>
-<listitem><para>Fix <function>string_to_array()</function> to handle overlapping
- matches for the separator string</para>
-<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</literal>.
-</para></listitem>
-<listitem><para>Fix corner cases in pattern matching for
- <application>psql</application>'s <literal>\d</literal> commands</para></listitem>
-<listitem><para>Fix index-corrupting bugs in /contrib/ltree
- (Teodor)</para></listitem>
-<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Adjust regression tests for recent changes in US DST laws
-</para> </listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-13">
- <title>Release 7.4.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-05-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.12,
- including patches for extremely serious security issues.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.13</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
-
- <para>
- Full security against the SQL-injection attacks described in
- CVE-2006-2313 and CVE-2006-2314 might require changes in application
- code. If you have applications that embed untrustworthy strings
- into SQL commands, you should examine them as soon as possible to
- ensure that they are using recommended escaping techniques. In
- most cases, applications should be using subroutines provided by
- libraries or drivers (such as <application>libpq</application>'s
- <function>PQescapeStringConn()</function>) to perform string escaping,
- rather than relying on <foreignphrase>ad hoc</foreignphrase> code to do it.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change the server to reject invalidly-encoded multibyte
-characters in all cases (Tatsuo, Tom)</para>
-<para>While <productname>PostgreSQL</productname> has been moving in this direction for
-some time, the checks are now applied uniformly to all encodings and all
-textual input, and are now always errors not merely warnings. This change
-defends against SQL-injection attacks of the type described in CVE-2006-2313.
-</para></listitem>
-
-<listitem><para>Reject unsafe uses of <literal>\'</literal> in string literals</para>
-<para>As a server-side defense against SQL-injection attacks of the type
-described in CVE-2006-2314, the server now only accepts <literal>''</literal> and not
-<literal>\'</literal> as a representation of ASCII single quote in SQL string
-literals. By default, <literal>\'</literal> is rejected only when
-<varname>client_encoding</varname> is set to a client-only encoding (SJIS, BIG5, GBK,
-GB18030, or UHC), which is the scenario in which SQL injection is possible.
-A new configuration parameter <varname>backslash_quote</varname> is available to
-adjust this behavior when needed. Note that full security against
-CVE-2006-2314 might require client-side changes; the purpose of
-<varname>backslash_quote</varname> is in part to make it obvious that insecure
-clients are insecure.
-</para></listitem>
-
-<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be
-aware of encoding considerations and
-<varname>standard_conforming_strings</varname></para>
-<para>This fixes <application>libpq</application>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
-them against the planned changeover to SQL-standard string literal syntax.
-Applications that use multiple <productname>PostgreSQL</productname> connections
-concurrently should migrate to <function>PQescapeStringConn()</function> and
-<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly
-for the settings in use in each database connection. Applications that
-do string escaping <quote>by hand</quote> should be modified to rely on library
-routines instead.
-</para></listitem>
-
-<listitem><para>Fix some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</function>, <function>alt_to_iso</function>,
-<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>,
-<function>mic_to_euc_tw</function> were all broken to varying
-extents.
-</para></listitem>
-
-<listitem><para>Clean up stray remaining uses of <literal>\'</literal> in strings
-(Bruce, Jan)</para></listitem>
-
-<listitem><para>Fix bug that sometimes caused OR'd index scans to
-miss rows they should have returned</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a btree index has been
-truncated</para></listitem>
-
-<listitem><para>Fix <literal>SIMILAR TO</literal> for patterns involving
-<literal>|</literal> (Tom)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-12">
- <title>Release 7.4.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-02-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.11.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.12</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.11,
- see <xref linkend="release-7-4-11"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix potential crash in <command>SET
-SESSION AUTHORIZATION</command> (CVE-2006-0553)</para>
-<para>An unprivileged user could crash the server process, resulting in
-momentary denial of service to other users, if the server has been compiled
-with Asserts enabled (which is not the default).
-Thanks to Akio Ishida for reporting this problem.
-</para></listitem>
-
-<listitem><para>Fix bug with row visibility logic in self-inserted
-rows (Tom)</para>
-<para>Under rare circumstances a row inserted by the current command
-could be seen as already valid, when it should not be. Repairs bug
-created in 7.4.9 and 7.3.11 releases.
-</para></listitem>
-
-<listitem><para>Fix race condition that could lead to <quote>file already
-exists</quote> errors during pg_clog file creation
-(Tom)</para></listitem>
-
-<listitem><para>Properly check <literal>DOMAIN</literal> constraints for
-<literal>UNKNOWN</literal> parameters in prepared statements
-(Neil)</para></listitem>
-
-<listitem><para>Fix to allow restoring dumps that have cross-schema
-references to custom operators (Tom)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</function>
-and <function>isinf</function> during configure (Tom)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-11">
- <title>Release 7.4.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-01-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.10.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.11</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.8,
- see <xref linkend="release-7-4-8"/>.
- Also, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the locale or
- <application>plperl</application> issues described below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix for protocol-level Describe messages issued
-outside a transaction or in a failed transaction (Tom)</para></listitem>
-
-<listitem><para>Fix character string comparison for locales that consider
-different character combinations as equal, such as Hungarian (Tom)</para>
-<para>This might require <command>REINDEX</command> to fix existing indexes on
-textual columns.</para></listitem>
-
-<listitem><para>Set locale environment variables during postmaster startup
-to ensure that <application>plperl</application> won't change the locale later</para>
-<para>This fixes a problem that occurred if the <application>postmaster</application> was
-started with environment variables specifying a different locale than what
-<application>initdb</application> had been told. Under these conditions, any use of
-<application>plperl</application> was likely to lead to corrupt indexes. You might need
-<command>REINDEX</command> to fix existing indexes on
-textual columns if this has happened to you.</para></listitem>
-
-<listitem><para>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> gen_salt,
-which caused it not to use all available salt space for MD5 and
-XDES algorithms (Marko Kreen, Solar Designer)</para>
-<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
-
-<listitem><para>Fix <filename>/contrib/dblink</filename> to throw an error,
-rather than crashing, when the number of columns specified is different from
-what's actually returned by the query (Joe)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-10">
- <title>Release 7.4.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-12-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.9.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.10</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.8,
- see <xref linkend="release-7-4-8"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix race condition in transaction log management</para>
-<para>There was a narrow window in which an I/O operation could be initiated
-for the wrong page, leading to an Assert failure or data
-corruption.</para>
-</listitem>
-
-<listitem><para>Prevent failure if client sends Bind protocol message
-when current transaction is already aborted</para></listitem>
-
-<listitem><para><filename>/contrib/ltree</filename> fixes (Teodor)</para></listitem>
-
-<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
-
-<listitem><para>Fix longstanding planning error for outer joins</para>
-<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
-only supported with merge-joinable join conditions</quote>.</para></listitem>
-
-<listitem><para>Prevent core dump in <application>pg_autovacuum</application> when a
-table has been dropped</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-9">
- <title>Release 7.4.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.8.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.9</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- if you are upgrading from a version earlier than 7.4.8,
- see <xref linkend="release-7-4-8"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix error that allowed <command>VACUUM</command> to remove
-<literal>ctid</literal> chains too soon, and add more checking in code that follows
-<literal>ctid</literal> links</para>
-<para>This fixes a long-standing problem that could cause crashes in very rare
-circumstances.</para></listitem>
-<listitem><para>Fix <type>CHAR()</type> to properly pad spaces to the specified
-length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
-<para>In prior releases, the padding of <type>CHAR()</type> was incorrect
-because it only padded to the specified number of bytes without
-considering how many characters were stored.</para></listitem>
-<listitem><para>Fix the sense of the test for read-only transaction
-in <command>COPY</command></para>
-<para>The code formerly prohibited <command>COPY TO</command>, where it should
-prohibit <command>COPY FROM</command>.
-</para></listitem>
-<listitem><para>Fix planning problem with outer-join ON clauses that reference
-only the inner-side relation</para></listitem>
-<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</literal> corner
-cases</para></listitem>
-<listitem><para>Make <function>array_in</function> and <function>array_recv</function> more
-paranoid about validating their OID parameter</para></listitem>
-<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
-a...</literal> with GiST index on column <literal>a</literal></para></listitem>
-<listitem><para>Improve robustness of datetime parsing</para></listitem>
-<listitem><para>Improve checking for partially-written WAL
-pages</para></listitem>
-<listitem><para>Improve robustness of signal handling when SSL is
-enabled</para></listitem>
-<listitem><para>Don't try to open more than <literal>max_files_per_process</literal>
-files during postmaster startup</para></listitem>
-<listitem><para>Various memory leakage fixes</para></listitem>
-<listitem><para>Various portability improvements</para></listitem>
-<listitem><para>Fix PL/pgSQL to handle <literal>var := var</literal> correctly when
-the variable is of pass-by-reference type</para></listitem>
-<listitem><para>Update <filename>contrib/tsearch2</filename> to use current Snowball
-code</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-8">
- <title>Release 7.4.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-05-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.7, including several
- security-related issues.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.8</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- it is one possible way of handling two significant security problems
- that have been found in the initial contents of 7.4.X system
- catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
- automatically correct these problems.
- </para>
-
- <para>
- The larger security problem is that the built-in character set encoding
- conversion functions can be invoked from SQL commands by unprivileged
- users, but the functions were not designed for such use and are not
- secure against malicious choices of arguments. The fix involves changing
- the declared parameter list of these functions so that they can no longer
- be invoked from SQL commands. (This does not affect their normal use
- by the encoding conversion machinery.)
- </para>
-
- <para>
- The lesser problem is that the <filename>contrib/tsearch2</filename> module
- creates several functions that are misdeclared to return
- <type>internal</type> when they do not accept <type>internal</type> arguments.
- This breaks type safety for all functions using <type>internal</type>
- arguments.
- </para>
-
- <para>
- It is strongly recommended that all installations repair these errors,
- either by initdb or by following the manual repair procedures given
- below. The errors at least allow unprivileged database users to crash
- their server process, and might allow unprivileged users to gain the
- privileges of a database superuser.
- </para>
-
- <para>
- If you wish not to do an initdb, perform the following procedures instead.
- As the database superuser, do:
-
-<programlisting>
-BEGIN;
-UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
-WHERE pronamespace = 11 AND pronargs = 5
- AND proargtypes[2] = 'cstring'::regtype;
--- The command should report having updated 90 rows;
--- if not, rollback and investigate instead of committing!
-COMMIT;
-</programlisting>
-
- Next, if you have installed <filename>contrib/tsearch2</filename>, do:
-
-<programlisting>
-BEGIN;
-UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
-WHERE oid IN (
- 'dex_init(text)'::regprocedure,
- 'snb_en_init(text)'::regprocedure,
- 'snb_ru_init(text)'::regprocedure,
- 'spell_init(text)'::regprocedure,
- 'syn_init(text)'::regprocedure
-);
--- The command should report having updated 5 rows;
--- if not, rollback and investigate instead of committing!
-COMMIT;
-</programlisting>
-
- If this command fails with a message like <quote>function
- "dex_init(text)" does not exist</quote>, then either <filename>tsearch2</filename>
- is not installed in this database, or you already did the update.
- </para>
-
- <para>
- The above procedures must be carried out in <emphasis>each</emphasis> database
- of an installation, including <literal>template1</literal>, and ideally
- including <literal>template0</literal> as well. If you do not fix the
- template databases then any subsequently created databases will contain
- the same errors. <literal>template1</literal> can be fixed in the same way
- as any other database, but fixing <literal>template0</literal> requires
- additional steps. First, from any database issue:
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-</programlisting>
- Next connect to <literal>template0</literal> and perform the above repair
- procedures. Finally, do:
-<programlisting>
--- re-freeze template0:
-VACUUM FREEZE;
--- and protect it against future alterations:
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change encoding function signature to prevent
-misuse</para></listitem>
-<listitem><para>Change <filename>contrib/tsearch2</filename> to avoid unsafe use of
-<type>INTERNAL</type> function results</para></listitem>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</type> values</para>
-<para>
-The comparison code was wrong in the case where the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-NOTE: if you have an index on a <type>TIME WITH TIME ZONE</type> column,
-it will need to be <command>REINDEX</command>ed after installing this update, because
-the fix corrects the sort order of column values.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for
-<type>TIME WITH TIME ZONE</type> values</para></listitem>
-<listitem><para>Fix mis-display of negative fractional seconds in
-<type>INTERVAL</type> values</para>
-<para>
-This error only occurred when the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-</para></listitem>
-<listitem><para>Ensure operations done during backend shutdown are counted by
-statistics collector</para>
-<para>
-This is expected to resolve reports of <application>pg_autovacuum</application>
-not vacuuming the system catalogs often enough &mdash; it was not being
-told about catalog deletions caused by temporary table removal during
-backend exit.
-</para></listitem>
-<listitem><para>Additional buffer overrun checks in plpgsql
-(Neil)</para></listitem>
-<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</literal>
-correctly (Neil)</para></listitem>
-<listitem><para>Fix <filename>contrib/pgcrypto</filename> for newer OpenSSL builds
-(Marko Kreen)</para></listitem>
-<listitem><para>Still more 64-bit fixes for
-<filename>contrib/intagg</filename></para></listitem>
-<listitem><para>Prevent incorrect optimization of functions returning
-<type>RECORD</type></para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</function> from dumping core for
-month-related formats</para></listitem>
-<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</literal></para></listitem>
-<listitem><para>Fix <function>array_map</function> to call PL functions correctly</para></listitem>
-<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</command></para></listitem>
-<listitem><para>Fix <command>ALTER LANGUAGE RENAME</command></para></listitem>
-<listitem><para>Make <function>RemoveFromWaitQueue</function> clean up after itself</para>
-<para>
-This fixes a lock management error that would only be visible if a transaction
-was kicked out of a wait for a lock (typically by query cancel) and then the
-holder of the lock released it within a very narrow window.
-</para></listitem>
-<listitem><para>Fix problem with untyped parameter appearing in
-<command>INSERT ... SELECT</command></para></listitem>
-<listitem><para>Fix <command>CLUSTER</command> failure after
-<command>ALTER TABLE SET WITHOUT OIDS</command></para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-7">
- <title>Release 7.4.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.6, including several
- security-related issues.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 7.4.7</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</command> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</command> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Check that creator of an aggregate function has the right to
-execute the specified transition functions</para>
-<para>
-This oversight made it possible to bypass denial of EXECUTE
-permission on a function.</para></listitem>
-<listitem><para>Fix security and 64-bit issues in
-contrib/intagg</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input. This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
-<listitem><para>Fix display of negative intervals in SQL and GERMAN
-datestyles</para></listitem>
-<listitem><para>Make age(timestamptz) do calculation in local timezone not
-GMT</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-6">
- <title>Release 7.4.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-10-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.5.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.6</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible failure to update hint bits on disk</para>
-<para>
-Under rare circumstances this oversight could lead to
-<quote>could not access transaction status</quote> failures, which qualifies
-it as a potential-data-loss bug.
-</para></listitem>
-<listitem><para>Ensure that hashed outer join does not miss tuples</para>
-<para>
-Very large left joins using a hash join plan could fail to output unmatched
-left-side rows given just the right data distribution.
-</para></listitem>
-<listitem><para>Disallow running <application>pg_ctl</application> as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in <filename>/tmp</filename> in <command>make_oidjoins_check</command></para>
-<para>
-This has been reported as a security issue, though it's hardly worthy of
-concern since there is no reason for non-developers to use this script anyway.
-</para></listitem>
-<listitem><para>Prevent forced backend shutdown from re-emitting prior command
-result</para>
-<para>
-In rare cases, a client might think that its last command had succeeded when
-it really had been aborted by forced database shutdown.
-</para></listitem>
-<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
-<para>
-This could lead to misbehavior in some of the system-statistics views.
-</para></listitem>
-<listitem><para>Fix small memory leak in postmaster</para></listitem>
-<listitem><para>Fix <quote>expected both swapped tables to have TOAST
-tables</quote> bug</para>
-<para>
-This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
-</para></listitem>
-<listitem><para>Prevent <literal>pg_ctl restart</literal> from adding <literal>-D</literal> multiple times</para></listitem>
-<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
-<listitem><para><literal>::</literal> is no longer interpreted as a variable in an
-ECPG prepare statement</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-5">
- <title>Release 7.4.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-08-18</para>
- </formalpara>
-
- <para>
- This release contains one serious bug fix over 7.4.4.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.5</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
-<para>
-This patch fixes a rare case in which concurrent insertions into a B-tree index
-could result in a server panic. No permanent damage would result, but it's
-still worth a re-release. The bug does not exist in pre-7.4 releases.
-</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-4">
- <title>Release 7.4.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-08-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.3.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.4</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible loss of committed transactions during crash</para>
-<para>
-Due to insufficient interlocking between transaction commit and checkpointing,
-it was possible for transactions committed just before the most recent
-checkpoint to be lost, in whole or in part, following a database crash and
-restart. This is a serious bug that has existed
-since <productname>PostgreSQL</productname> 7.1.
-</para></listitem>
-<listitem><para>Check HAVING restriction before evaluating result list of an
-aggregate plan</para></listitem>
-<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
-<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
-<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
-<listitem><para>Pretty-print UNION queries correctly</para></listitem>
-<listitem><para>Make psql handle <literal>\r\n</literal> newlines properly in COPY IN</para></listitem>
-<listitem><para><application>pg_dump</application> handled ACLs with grant options incorrectly</para></listitem>
-<listitem><para>Fix thread support for macOS and Solaris</para></listitem>
-<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
-<listitem><para>ECPG fixes</para></listitem>
-<listitem><para>Translation updates (various contributors)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-3">
- <title>Release 7.4.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-06-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.2.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.3</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
-<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
-<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
-<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
-<listitem><para>Several important fixes in pg_autovacuum, including fixes for
-large tables, unsigned oids, stability, temp tables, and debug mode
-(Matthew T. O'Connor)</para></listitem>
-<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
-<listitem><para>Several JDBC fixes</para></listitem>
-<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
-<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
-<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
-<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
-<listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
-<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
-<para>
-Select-list aliases within the sub-select will now take precedence over
-names from outer query levels.
-</para></listitem>
-<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</quote> when decompiling rules (Tom)</para></listitem>
-<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
-<para>
- This fixes a difficult-to-exploit security hole.
-</para></listitem>
-<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
-<listitem><para>Numerous translation updates (various contributors)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-2">
- <title>Release 7.4.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-03-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.1.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.2</title>
-
- <para>
- A dump/restore is not required for those running 7.4.X. However,
- it might be advisable as the easiest method of incorporating fixes for
- two errors that have been found in the initial contents of 7.4.X system
- catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
- automatically correct these problems.
- </para>
-
- <para>
- The more severe of the two errors is that data type <type>anyarray</type>
- has the wrong alignment label; this is a problem because the
- <structname>pg_statistic</structname> system catalog uses <type>anyarray</type>
- columns. The mislabeling can cause planner misestimations and even
- crashes when planning queries that involve <literal>WHERE</literal> clauses on
- double-aligned columns (such as <type>float8</type> and <type>timestamp</type>).
- It is strongly recommended that all installations repair this error,
- either by initdb or by following the manual repair procedure given
- below.
- </para>
-
- <para>
- The lesser error is that the system view <structname>pg_settings</structname>
- ought to be marked as having public update access, to allow
- <literal>UPDATE pg_settings</literal> to be used as a substitute for
- <command>SET</command>. This can also be fixed either by initdb or manually,
- but it is not necessary to fix unless you want to use <literal>UPDATE
- pg_settings</literal>.
- </para>
-
- <para>
- If you wish not to do an initdb, the following procedure will work
- for fixing <structname>pg_statistic</structname>. As the database superuser,
- do:
-
-<programlisting>
--- clear out old data in pg_statistic:
-DELETE FROM pg_statistic;
-VACUUM pg_statistic;
--- this should update 1 row:
-UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
--- this should update 6 rows:
-UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
---
--- At this point you MUST start a fresh backend to avoid a crash!
---
--- repopulate pg_statistic:
-ANALYZE;
-</programlisting>
-
- This can be done in a live database, but beware that all backends
- running in the altered database must be restarted before it is safe to
- repopulate <structname>pg_statistic</structname>.
- </para>
-
- <para>
- To repair the <structname>pg_settings</structname> error, simply do:
-<programlisting>
-GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
-</programlisting>
- </para>
-
- <para>
- The above procedures must be carried out in <emphasis>each</emphasis> database
- of an installation, including <literal>template1</literal>, and ideally
- including <literal>template0</literal> as well. If you do not fix the
- template databases then any subsequently created databases will contain
- the same errors. <literal>template1</literal> can be fixed in the same way
- as any other database, but fixing <literal>template0</literal> requires
- additional steps. First, from any database issue:
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-</programlisting>
- Next connect to <literal>template0</literal> and perform the above repair
- procedures. Finally, do:
-<programlisting>
--- re-freeze template0:
-VACUUM FREEZE;
--- and protect it against future alterations:
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<para>
- Release 7.4.2 incorporates all the fixes included in release 7.3.6,
- plus the following fixes:
-</para>
-
-<itemizedlist>
-<listitem><para>Fix <structname>pg_statistic</structname> alignment bug that could crash optimizer</para>
-<para>See above for details about this problem.</para></listitem>
-<listitem><para>Allow non-super users to update <structname>pg_settings</structname></para></listitem>
-<listitem><para>Fix several optimizer bugs, most of which led to
-<quote>variable not found in subplan target lists</quote> errors</para></listitem>
-<listitem><para>Avoid out-of-memory failure during startup of large multiple
-index scan</para></listitem>
-<listitem><para>Fix multibyte problem that could lead to <quote>out of
-memory</quote> error during <command>COPY IN</command></para></listitem>
-<listitem><para>Fix problems with <command>SELECT INTO</command> / <command>CREATE
-TABLE AS</command> from tables without OIDs</para></listitem>
-<listitem><para>Fix problems with <filename>alter_table</filename> regression test
-during parallel testing</para></listitem>
-<listitem><para>Fix problems with hitting open file limit, especially on macOS (Tom)</para></listitem>
-<listitem><para>Partial fix for Turkish-locale issues</para>
-<para>initdb will succeed now in Turkish locale, but there are still some
-inconveniences associated with the <literal>i/I</literal> problem.</para></listitem>
-<listitem><para>Make pg_dump set client encoding on restore</para></listitem>
-<listitem><para>Other minor pg_dump fixes</para></listitem>
-<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
-<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</literal> to
-<literal>SELECT/INSERT/UPDATE/DELETE</literal> (Michael)</para></listitem>
-<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
-<listitem><para>Various other ecpg fixes (Michael)</para></listitem>
-<listitem><para>Fixes for Borland compiler</para></listitem>
-<listitem><para>Thread build improvements (Bruce)</para></listitem>
-<listitem><para>Various other build fixes</para></listitem>
-<listitem><para>Various JDBC fixes</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-4-1">
- <title>Release 7.4.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-12-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.4.
- For information about new features in the 7.4 major release, see
- <xref linkend="release-7-4"/>.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.4.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running 7.4.
- </para>
-
- <para>
- If you want to install the fixes in the information schema
- you need to reload it into the database.
- This is either accomplished by initializing a new cluster
- by running <command>initdb</command>, or by running the following
- sequence of SQL commands in each database (ideally including
- <literal>template1</literal>) as a superuser in
- <application>psql</application>, after installing the new release:
-<programlisting>
-DROP SCHEMA information_schema CASCADE;
-\i /usr/local/pgsql/share/information_schema.sql
-</programlisting>
- Substitute your installation path in the second command.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
-<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
-<listitem><para>Fix for subqueries that used hash joins (Tom)</para>
-<para>
- Certain subqueries that used hash joins would crash because of
- improperly shared structures.
-</para></listitem>
-<listitem><para>Fix free space map compaction bug (Tom)</para>
-<para>
- This fixes a bug where compaction of the free space map could lead
- to a database server shutdown.
-</para>
-</listitem>
-<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
-<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
-<para>
- Fix these functions to return values consistent with pre-7.4
- releases.
-</para>
-</listitem>
-<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
-<para>
- Fixes include improper variable initialization, missing vacuum after
- <command>TRUNCATE</command>, and duration computation overflow for long vacuums.
-</para>
-</listitem>
-<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
-<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
-<para>
- Fix crash on Solaris caused by use of any type of password
- authentication when no passwords were defined.
-</para>
-</listitem>
-<listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
-<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
-<listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
-<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
-<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
-<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
-<listitem><para>Escape <type>bytea</type> output for bytes &gt; 0x7e(Joe)</para>
-<para>
- If different client encodings are used for <type>bytea</type> output and input, it
- is possible for <type>bytea</type> values to be corrupted by the differing
- encodings. This fix escapes all bytes that might be affected.
-</para>
-</listitem>
-<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
-<listitem><para>New Czech FAQ</para></listitem>
-<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
-<listitem><para>ECPG fixes (Michael)</para></listitem>
-<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
-<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
-<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
-<para>
- Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
- By installing them in their own directory, name conflicts have been reduced.
-</para>
-</listitem>
-<listitem><para>Fix SSL memory leak (Neil)</para>
-<para>
- This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
-</para>
-</listitem>
-<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
-<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
-<sect1 id="release-7-4">
- <title>Release 7.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-11-17</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>
- <literal>IN</literal> / <literal>NOT IN</literal> subqueries are
- now much more efficient
- </term>
-
- <listitem>
- <para>
- In previous releases, <literal>IN</literal>/<literal>NOT
- IN</literal> subqueries were joined to the upper query by
- sequentially scanning the subquery looking for a match. The
- 7.4 code uses the same sophisticated techniques used by
- ordinary joins and so is much faster. An
- <literal>IN</literal> will now usually be as fast as or faster
- than an equivalent <literal>EXISTS</literal> subquery; this
- reverses the conventional wisdom that applied to previous
- releases.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Improved <literal>GROUP BY</literal> processing by using hash buckets
- </term>
-
- <listitem>
- <para>
- In previous releases, rows to be grouped had to be sorted
- first. The 7.4 code can do <literal>GROUP BY</literal>
- without sorting, by accumulating results into a hash table
- with one entry per group. It will still use the sort
- technique, however, if the hash table is estimated to be too
- large to fit in <varname>sort_mem</varname>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New multikey hash join capability
- </term>
-
- <listitem>
- <para>
- In previous releases, hash joins could only occur on single
- keys. This release allows multicolumn hash joins.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Queries using the explicit <literal>JOIN</literal> syntax are
- now better optimized
- </term>
-
- <listitem>
- <para>
- Prior releases evaluated queries using the explicit
- <literal>JOIN</literal> syntax only in the order implied by
- the syntax. 7.4 allows full optimization of these queries,
- meaning the optimizer considers all possible join orderings
- and chooses the most efficient. Outer joins, however, must
- still follow the declared ordering.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Faster and more powerful regular expression code
- </term>
-
- <listitem>
- <para>
- The entire regular expression module has been replaced with a
- new version by Henry Spencer, originally written for Tcl. The
- code greatly improves performance and supports several flavors
- of regular expressions.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Function-inlining for simple SQL functions
- </term>
-
- <listitem>
- <para>
- Simple SQL functions can now be inlined by including their SQL
- in the main query. This improves performance by eliminating
- per-call overhead. That means simple SQL functions now
- behave like macros.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Full support for IPv6 connections and IPv6 address data types
- </term>
-
- <listitem>
- <para>
- Previous releases allowed only IPv4 connections, and the IP
- data types only supported IPv4 addresses. This release adds
- full IPv6 support in both of these areas.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Major improvements in SSL performance and reliability
- </term>
-
- <listitem>
- <para>
- Several people very familiar with the SSL API have overhauled
- our SSL code to improve SSL key negotiation and error
- recovery.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Make free space map efficiently reuse empty index pages,
- and other free space management improvements
- </term>
-
- <listitem>
- <para>
- In previous releases, B-tree index pages that were left empty
- because of deleted rows could only be reused by rows with
- index values similar to the rows originally indexed on that
- page. In 7.4, <command>VACUUM</command> records empty index
- pages and allows them to be reused for any future index rows.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- SQL-standard information schema
- </term>
-
- <listitem>
- <para>
- The information schema provides a standardized and stable way
- to access information about the schema objects defined in a
- database.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Cursors conform more closely to the SQL standard
- </term>
-
- <listitem>
- <para>
- The commands <command>FETCH</command> and
- <command>MOVE</command> have been overhauled to conform more
- closely to the SQL standard.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Cursors can exist outside transactions
- </term>
-
- <listitem>
- <para>
- These cursors are also called holdable cursors.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New client-to-server protocol
- </term>
-
- <listitem>
- <para>
- The new protocol adds error codes, more status information,
- faster startup, better support for binary data transmission,
- parameter values separated from SQL commands, prepared
- statements available at the protocol level, and cleaner
- recovery from <command>COPY</command> failures. The older
- protocol is still supported by both server and clients.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <application>libpq</application> and
- <application>ECPG</application> applications are now fully
- thread-safe
- </term>
-
- <listitem>
- <para>
- While previous <application>libpq</application> releases
- already supported threads, this release improves thread safety
- by fixing some non-thread-safe code that was used during
- database connection startup. The <command>configure</command>
- option <option>--enable-thread-safety</option> must be used to
- enable this feature.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New version of full-text indexing
- </term>
-
- <listitem>
- <para>
- A new full-text indexing suite is available in
- <filename>contrib/tsearch2</filename>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New autovacuum tool
- </term>
-
- <listitem>
- <para>
- The new autovacuum tool in
- <filename>contrib/autovacuum</filename> monitors the database
- statistics tables for
- <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
- activity and automatically vacuums tables when needed.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Array handling has been improved and moved into the server core
- </term>
-
- <listitem>
- <para>
- Many array limitations have been removed, and arrays behave
- more like fully-supported data types.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect2>
-
- <sect2>
- <title>Migration to Version 7.4</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is
- required for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- The server-side autocommit setting was removed and
- reimplemented in client applications and languages.
- Server-side autocommit was causing too many problems with
- languages and applications that wanted to control their own
- autocommit behavior, so autocommit was removed from the server
- and added to individual client APIs as appropriate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Error message wording has changed substantially in this
- release. Significant effort was invested to make the messages
- more consistent and user-oriented. If your applications try to
- detect different error conditions by parsing the error message,
- you are strongly encouraged to use the new error code facility instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Inner joins using the explicit <literal>JOIN</literal> syntax
- might behave differently because they are now better
- optimized.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A number of server configuration parameters have been renamed
- for clarity, primarily those related to
- logging.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
- does nothing. In prior releases, <literal>FETCH 0</literal>
- would fetch all remaining rows, and <literal>MOVE 0</literal>
- would move to the end of the cursor.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>FETCH</command> and <command>MOVE</command> now return
- the actual number of rows fetched/moved, or zero if at the
- beginning/end of the cursor. Prior releases would return the
- row count passed to the command, not the number of rows
- actually fetched or moved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>COPY</command> now can process files that use
- carriage-return or carriage-return/line-feed end-of-line
- sequences. Literal carriage-returns and line-feeds are no
- longer accepted in data values; use <literal>\r</literal> and
- <literal>\n</literal> instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Trailing spaces are now trimmed when converting from type
- <type>char(<replaceable>n</replaceable>)</type> to
- <type>varchar(<replaceable>n</replaceable>)</type> or <type>text</type>.
- This is what most people always expected to happen anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The data type <type>float(<replaceable>p</replaceable>)</type> now
- measures <replaceable>p</replaceable> in binary digits, not decimal
- digits. The new behavior follows the SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ambiguous date values now must match the ordering specified by
- the <varname>datestyle</varname> setting. In prior releases, a
- date specification of <literal>10/20/03</literal> was interpreted as a
- date in October even if <varname>datestyle</varname> specified that
- the day should be first. 7.4 will throw an error if a date
- specification is invalid for the current setting of
- <varname>datestyle</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The functions <function>oidrand</function>,
- <function>oidsrand</function>, and
- <function>userfntest</function> have been removed. These
- functions were determined to be no longer useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- String literals specifying time-varying date/time values, such
- as <literal>'now'</literal> or <literal>'today'</literal> will
- no longer work as expected in column default expressions; they
- now cause the time of the table creation to be the default, not
- the time of the insertion. Functions such as
- <function>now()</function>, <function>current_timestamp</function>, or
- <function>current_date</function> should be used instead.
- </para>
-
- <para>
- In previous releases, there was special code so that strings
- such as <literal>'now'</literal> were interpreted at
- <command>INSERT</command> time and not at table creation time, but
- this work around didn't cover all cases. Release 7.4 now
- requires that defaults be defined properly using functions such
- as <function>now()</function> or <function>current_timestamp</function>. These
- will work in all situations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The dollar sign (<literal>$</literal>) is no longer allowed in
- operator names. It can instead be a non-first character in
- identifiers. This was done to improve compatibility with other
- database systems, and to avoid syntax problems when parameter
- placeholders (<literal>$<replaceable>n</replaceable></literal>) are written
- adjacent to operators.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- release 7.4 and the previous major release.
- </para>
-
- <sect3>
- <title>Server Operation Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
- Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SSL to handle errors cleanly (Nathan Mueller)
- </para>
- <para>
- In prior releases, certain SSL API error reports were not
- handled correctly. This release fixes those problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- SSL protocol security and performance improvements (Sean Chittenden)
- </para>
- <para>
- SSL key renegotiation was happening too frequently, causing poor
- SSL performance. Also, initial key handling was improved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Print lock information when a deadlock is detected (Tom)
- </para>
- <para>
- This allows easier debugging of deadlock situations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update <filename>/tmp</filename> socket modification times
- regularly to avoid their removal (Tom)
- </para>
- <para>
- This should help prevent <filename>/tmp</filename> directory
- cleaner administration scripts from removing server socket
- files.
- </para>
- </listitem>
-
- <listitem><para>Enable PAM for macOS (Aaron Hillegass)</para></listitem>
-
- <listitem>
- <para>Make B-tree indexes fully WAL-safe (Tom)</para>
- <para>
- In prior releases, under certain rare cases, a server crash
- could cause B-tree indexes to become corrupt. This release
- removes those last few rare cases.
- </para>
- </listitem>
-
- <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
-
- <listitem>
- <para>
- Fix inconsistent index lookups during split of first root page (Tom)
- </para>
- <para>
- In prior releases, when a single-page index split into two
- pages, there was a brief period when another database session
- could miss seeing an index entry. This release fixes that rare
- failure case.
- </para>
- </listitem>
-
- <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
-
- <listitem>
- <para>Preserve free space information between server restarts (Tom)</para>
- <para>
- In prior releases, the free space map was not saved when the
- postmaster was stopped, so newly started servers had no free
- space information. This release saves the free space map, and
- reloads it when the server is restarted.
- </para>
- </listitem>
-
- <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
- <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
- <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
- <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
- <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
- <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
- <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Performance Improvements</title>
-
- <itemizedlist>
- <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
- <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
- <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
- <listitem><para>Improve constant folding (Tom)</para></listitem>
- <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
-
- <listitem>
- <para>Reduce memory usage for queries using complex functions (Tom)</para>
- <para>
- In prior releases, functions returning allocated memory would
- not free it until the query completed. This release allows the
- freeing of function-allocated memory when the function call
- completes, reducing the total memory used by functions.
- </para>
- </listitem>
-
- <listitem>
- <para>Improve GEQO optimizer performance (Tom)</para>
- <para>
- This release fixes several inefficiencies in the way the GEQO optimizer
- manages potential query paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>IN</literal>/<literal>NOT IN</literal> to be handled via hash
- tables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <literal>NOT IN (<replaceable>subquery</replaceable>)</literal>
- performance (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow most <literal>IN</literal> subqueries to be processed as
- joins (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pattern matching operations can use indexes regardless of
- locale (Peter)
- </para>
- <para>
- There is no way for non-ASCII locales to use the standard
- indexes for <literal>LIKE</literal> comparisons. This release
- adds a way to create a special index for
- <literal>LIKE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
- <para>
- For shared libraries that require a long time to load, this
- option is available so the library can be preloaded in the
- postmaster and inherited by all database sessions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer cost computations, particularly for subqueries (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
- means <literal>a.x = 42</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow hash/merge joins on complex joins (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow hash joins for more data types (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow join optimization of explicit inner joins, disable with
- <varname>join_collapse_limit</varname> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add parameter <varname>from_collapse_limit</varname> to control
- conversion of subqueries to joins (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use faster and more powerful regular expression code from Tcl
- (Henry Spencer, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use bit-mapped relation sets in the optimizer (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Improve connection startup time (Tom)</para>
- <para>
- The new client/server protocol requires fewer network packets to
- start a database session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve trigger/constraint performance (Stephan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash indexes which were broken in rare cases (Tom)
- </para>
- </listitem>
-
- <listitem><para>Improve hash index concurrency and speed (Tom)</para>
- <para>
- Prior releases suffered from poor hash index performance,
- particularly for high concurrency situations. This release fixes
- that, and the development group is interested in reports
- comparing B-tree and hash index performance.
- </para>
- </listitem>
-
- <listitem>
- <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
- <para>
- Certain CPU's perform faster data copies when addresses are
- 32-byte aligned.
- </para>
- </listitem>
-
- <listitem>
- <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
- <para>
- <type>numeric</type> used to be stored in base 100. The new code
- uses base 10000, for significantly better performance.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server Configuration Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>Rename server parameter <varname>server_min_messages</varname> to <varname>log_min_messages</varname> (Bruce)</para>
- <para>
- This was done so most parameters that control the server logs
- begin with <literal>log_</literal>.
- </para>
- </listitem>
-
- <listitem><para>Rename <varname>show_*_stats</varname> to <varname>log_*_stats</varname> (Bruce)</para></listitem>
- <listitem><para>Rename <varname>show_source_port</varname> to <varname>log_source_port</varname> (Bruce)</para></listitem>
- <listitem><para>Rename <varname>hostname_lookup</varname> to <varname>log_hostname</varname> (Bruce)</para></listitem>
-
- <listitem>
- <para>Add <varname>checkpoint_warning</varname> to warn of excessive checkpointing (Bruce)</para>
- <para>
- In prior releases, it was difficult to determine if checkpoint
- was happening too frequently. This feature adds a warning to the
- server logs when excessive checkpointing happens.
- </para>
- </listitem>
-
- <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
-
- <listitem>
- <para>
- Change debug server log messages to output as <literal>DEBUG</literal>
- rather than <literal>LOG</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
- <para>
- This is a security feature so non-superusers cannot disable
- logging that was enabled by the administrator.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>log_min_messages</varname>/<varname>client_min_messages</varname> now
- controls <varname>debug_*</varname> output (Bruce)
- </para>
- <para>
- This centralizes client debug information so all debug output
- can be sent to either the client or server logs.
- </para>
- </listitem>
-
- <listitem>
- <para>Add macOS Rendezvous server support (Chris Campbell)</para>
- <para>
- This allows macOS hosts to query the network for available
- <productname>PostgreSQL</productname> servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to print only slow statements using
- <varname>log_min_duration_statement</varname>
- (Christopher)
- </para>
- <para>
- This is an often requested debugging feature that allows
- administrators to see only slow queries in their server logs.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
- <para>
- This allows administrators to merge the host IP address and
- netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
- </para>
- </listitem>
-
- <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
-
- <listitem>
- <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
- <para>
- This works with the new error reporting feature to supply
- additional error information like hints, file names and line
- numbers.
- </para>
- </listitem>
-
- <listitem>
- <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
- <para>
- This option is useful for administration tools that need to know
- the configuration variable names and their minimums, maximums,
- defaults, and descriptions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new columns in <literal>pg_settings</literal>:
- <literal>context</literal>, <literal>type</literal>, <literal>source</literal>,
- <literal>min_val</literal>, <literal>max_val</literal> (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make default <varname>shared_buffers</varname> 1000 and
- <varname>max_connections</varname> 100, if possible (Tom)
- </para>
- <para>
- Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
- would start on even very old systems. This release tests the
- amount of shared memory allowed by the platform and selects more
- reasonable default values if possible. Of course, users are
- still encouraged to evaluate their resource load and size
- <varname>shared_buffers</varname> accordingly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <filename>pg_hba.conf</filename> record type
- <literal>hostnossl</literal> to prevent SSL connections (Jon
- Jensen)
- </para>
- <para>
- In prior releases, there was no way to prevent SSL connections
- if both the client and server supported SSL. This option allows
- that capability.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove parameter <varname>geqo_random_seed</varname>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Query Changes</title>
-
- <itemizedlist>
- <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
- <listitem><para>Add read-only transactions (Peter)</para></listitem>
- <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
-
- <listitem>
- <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
- <para>
- In prior releases, only the superuser could see query strings
- using <literal>pg_stat_activity</literal>. Now ordinary users
- can see their own query strings.
- </para>
- </listitem>
-
- <listitem>
- <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
- <para>
- The SQL standard says that an aggregate function appearing
- within a nested subquery belongs to the outer query if its
- argument contains only outer-query variables. Prior
- <productname>PostgreSQL</productname> releases did not handle
- this fine point correctly.
- </para>
- </listitem>
-
- <listitem>
- <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
- <para>
- By default, tables mentioned in the query are automatically
- added to the <literal>FROM</literal> clause if they are not already
- there. This is compatible with historic
- <productname>POSTGRES</productname> behavior but is contrary to
- the SQL standard. This option allows selecting
- standard-compatible behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
- <para>
- This allows <command>UPDATE</command> to set a column to its
- declared default value.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow expressions to be used in <literal>LIMIT</literal>/<literal>OFFSET</literal> (Tom)</para>
- <para>
- In prior releases, <literal>LIMIT</literal>/<literal>OFFSET</literal> could
- only use constants, not expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Object Manipulation Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
- </listitem>
-
- <listitem>
- <para>Add statement-level triggers (Neil)</para>
- <para>
- While this allows a trigger to fire at the end of a statement,
- it does not allow the trigger to access all rows modified by the
- statement. This capability is planned for a future release.
- </para>
- </listitem>
-
- <listitem>
- <para>Add check constraints for domains (Rod)</para>
- <para>
- This greatly increases the usefulness of domains by allowing
- them to use check constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
- <para>
- This allows manipulation of existing domains.
- </para>
- </listitem>
-
- <listitem>
- <para>Fix several zero-column table bugs (Tom)</para>
- <para>
- <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
- that occur when using such tables.
- </para>
- </listitem>
-
- <listitem>
- <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
- <para>
- In prior releases, <literal>ALTER TABLE ... ADD
- PRIMARY</literal> would add a unique index, but not a not-null
- constraint. That is fixed in this release.
- </para>
- </listitem>
-
- <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
- <para>
- This allows control over whether new and updated rows will have
- an OID column. This is most useful for saving storage space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
- increment, cache, cycle values (Rod)
- </para>
- </listitem>
-
- <listitem>
- <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
- <para>
- This command is used by <command>pg_dump</command> to record the
- cluster column for each table previously clustered. This
- information is used by database-wide cluster to cluster all
- previously clustered tables.
- </para>
- </listitem>
-
- <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
- <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
- <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</literal> works (Tom)</para></listitem>
-
- <listitem>
- <para>
- Allow copying table schema using <literal>LIKE
- <replaceable>subtable</replaceable></literal>, also SQL:2003
- feature <literal>INCLUDING DEFAULTS</literal> (Rod)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>WITH GRANT OPTION</literal> clause to
- <command>GRANT</command> (Peter)
- </para>
- <para>
- This enabled <command>GRANT</command> to give other users the
- ability to grant privileges on an object.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Utility Command Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
- <para>
- This adds the ability for a table to be dropped or all rows
- deleted on transaction commit.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
- <para>
- In previous releases, cursors were removed at the end of the
- transaction that created them. Cursors can now be created with
- the <literal>WITH HOLD</literal> option, which allows them to
- continue to be accessed after the creating transaction has
- committed.
- </para>
- </listitem>
-
- <listitem>
- <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
- <para>
- In previous releases, <literal>FETCH 0</literal> fetched all
- remaining rows, and <literal>MOVE 0</literal> moved to the end
- of the cursor.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <command>FETCH</command> and <command>MOVE</command> to
- return the number of rows fetched/moved, or zero if at the
- beginning/end of cursor, per SQL standard (Bruce)
- </para>
- <para>
- In prior releases, the row count returned by
- <command>FETCH</command> and <command>MOVE</command> did not
- accurately reflect the number of rows processed.
- </para>
- </listitem>
-
- <listitem>
- <para>Properly handle <literal>SCROLL</literal> with cursors, or
- report an error (Neil)</para>
- <para>
- Allowing random access (both forward and backward scrolling) to
- some kinds of queries cannot be done without some additional
- work. If <literal>SCROLL</literal> is specified when the cursor
- is created, this additional work will be performed. Furthermore,
- if the cursor has been created with <literal>NO SCROLL</literal>,
- no random access is allowed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement SQL-compatible options <literal>FIRST</literal>,
- <literal>LAST</literal>, <literal>ABSOLUTE <replaceable>n</replaceable></literal>,
- <literal>RELATIVE <replaceable>n</replaceable></literal> for
- <command>FETCH</command> and <command>MOVE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
- </listitem>
-
- <listitem>
- <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
- <para>
- This allows all previously clustered tables in a database to be
- reclustered with a single command.
- </para>
- </listitem>
-
- <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
-
- <listitem><para>Allow DOS and Mac line-endings in <command>COPY</command> files (Bruce)</para></listitem>
-
- <listitem>
- <para>
- Disallow literal carriage return as a data value,
- backslash-carriage-return and <literal>\r</literal> are still allowed
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para><command>COPY</command> changes (binary, <literal>\.</literal>) (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
- <para>
- <command>TRUNCATE</command> can now be used inside a
- transaction. If the transaction aborts, the changes made by the
- <command>TRUNCATE</command> are automatically rolled back.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow prepare/bind of utility commands like
- <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
- </listitem>
-
- <listitem>
- <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
- <para>
- In prior releases, functional indexes only supported a simple
- function applied to one or more column names. This release
- allows any type of scalar expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>SHOW TRANSACTION ISOLATION</command> match input
- to <command>SET TRANSACTION ISOLATION</command>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>COMMENT ON DATABASE</command> on nonlocal
- database generate a warning, rather than an error (Rod)
- </para>
-
- <para>
- Database comments are stored in database-local tables so
- comments on a database have to be stored in each database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reliability of <command>LISTEN</command>/<command>NOTIFY</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
- <para>
- This allows system tables to be reindexed without the
- requirement of a standalone session, which was necessary in
- previous releases. The only tables that now require a standalone
- session for reindexing are the global system tables
- <literal>pg_database</literal>, <literal>pg_shadow</literal>, and
- <literal>pg_group</literal>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Data Type and Function Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>
- New server parameter <varname>extra_float_digits</varname> to
- control precision display of floating-point numbers (Pedro
- Ferreira, Tom)
- </para>
- <para>
- This controls output precision which was causing regression
- testing problems.
- </para>
- </listitem>
-
- <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
-
- <listitem>
- <para>
- Remove rarely used functions <function>oidrand</function>,
- <function>oidsrand</function>, and <function>userfntest</function> functions
- (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>Add <function>md5()</function> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
- <para>
- An MD5 function was frequently requested. For more complex
- encryption capabilities, use
- <filename>contrib/pgcrypto</filename>.
- </para>
- </listitem>
-
- <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
-
- <listitem>
- <para>
- Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
- <type>timestamp without time zone</type> is assumed to be in
- local time, not GMT (Tom)
- </para>
- </listitem>
-
- <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
- <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
- <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
- <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
-
- <listitem>
- <para>
- Allow functions that can take any argument data type and return
- any data type, using <type>anyelement</type> and
- <type>anyarray</type> (Joe)
- </para>
- <para>
- This allows the creation of functions that can work with any
- data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
- <literal>ARRAY[['a','b'],['c','d']]</literal>, or
- <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow proper comparisons for arrays, including <literal>ORDER
- BY</literal> and <literal>DISTINCT</literal> support
- (Joe)
- </para>
- </listitem>
-
- <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
- <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
-
- <listitem>
- <para>
- Allow <literal>WHERE</literal> qualification
- <literal><replaceable>expr</replaceable> <replaceable>op</replaceable> ANY/SOME/ALL
- (<replaceable>array_expr</replaceable>)</literal> (Joe)
- </para>
- <para>
- This allows arrays to behave like a list of values, for purposes
- like <literal>SELECT * FROM tab WHERE col IN
- (array_val)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New array functions <function>array_append</function>,
- <function>array_cat</function>, <function>array_lower</function>,
- <function>array_prepend</function>, <function>array_to_string</function>,
- <function>array_upper</function>, <function>string_to_array</function> (Joe)
- </para>
- </listitem>
-
- <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
- <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
-
- <listitem>
- <para>
- Allow 60 in seconds fields of <type>time</type>,
- <type>timestamp</type>, and <type>interval</type> input values
- (Tom)
- </para>
- <para>
- Sixty-second values are needed for leap seconds.
- </para>
- </listitem>
-
- <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
-
- <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
-
- <listitem>
- <para>
- Trim trailing spaces when <type>char</type> is cast to
- <type>varchar</type> or <type>text</type> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <type>float(<replaceable>p</replaceable>)</type> measure the precision
- <replaceable>p</replaceable> in binary digits, not decimal digits
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
- </listitem>
-
- <listitem>
- <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
- </listitem>
-
- <listitem>
- <para>
- Have <literal>SHOW datestyle</literal> generate output similar
- to that used by <literal>SET datestyle</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
- TIME ZONE</literal> follow the SQL convention for the sign of
- time zone offsets, i.e., positive is east from UTC (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Fix <literal>date_trunc('quarter', ...)</literal> (B&ouml;jthe Zolt&aacute;n)</para>
- <para>
- Prior releases returned an incorrect value for this function call.
- </para>
- </listitem>
-
- <listitem>
- <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
- <para>
- <function>initcap()</function> now uppercases a letter appearing
- after any non-alphanumeric character, rather than only after
- whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
- </listitem>
-
- <listitem>
- <para>
- Add new <varname>datestyle</varname> values <literal>MDY</literal>,
- <literal>DMY</literal>, and <literal>YMD</literal> to set input field order;
- honor <literal>US</literal> and <literal>European</literal> for backward
- compatibility (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- String literals like <literal>'now'</literal> or
- <literal>'today'</literal> will no longer work as a column
- default. Use functions such as <function>now()</function>,
- <function>current_timestamp</function> instead. (change
- required for prepared statements) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>Treat NaN as larger than any other value in <function>min()</function>/<function>max()</function> (Tom)</para>
- <para>
- NaN was already sorted after ordinary numeric values for most
- purposes, but <function>min()</function> and <function>max()</function> didn't
- get this right.
- </para>
- </listitem>
-
- <listitem>
- <para>Prevent interval from suppressing <literal>:00</literal>
- seconds display</para>
- </listitem>
-
- <listitem>
- <para>
- New functions <function>pg_get_triggerdef(prettyprint)</function>
- and <function>pg_conversion_is_visible()</function> (Christopher)
- </para>
- </listitem>
-
- <listitem>
- <para>Allow time to be specified as <literal>040506</literal> or <literal>0405</literal> (Tom)</para>
- </listitem>
-
- <listitem>
- <para>
- Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
- match <varname>datestyle</varname>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_get_constraintdef</function> support
- unique, primary-key, and check constraints (Christopher)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server-Side Language Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
- used on a zero-row record variable (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python's <function>spi_execute</function> interface
- handle null values properly (Andrew Bosma)
- </para>
- </listitem>
-
- <listitem>
- <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
- </listitem>
-
- <listitem>
- <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
- <para>
- The Python language no longer supports a restricted execution
- environment, so the trusted version of PL/Python was removed. If
- this situation changes, a version of PL/Python that can be used
- by non-superusers will be readded.
- </para>
- </listitem>
-
- <listitem>
- <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
- </listitem>
-
- <listitem>
- <para>Allow polymorphic SQL functions (Joe)</para>
- </listitem>
-
- <listitem>
- <para>
- Improved compiled function caching mechanism in PL/pgSQL with
- full support for polymorphism (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new parameter <literal>$0</literal> in PL/pgSQL representing the
- function's actual return type (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
- qualified type names in the parameter type list
- (Jan)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>psql Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
- <para>
- This forces the pager to be used even if the number of rows is
- less than the screen height. This is valuable for rows that
- wrap across several screen rows.
- </para>
- </listitem>
-
- <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
- <listitem><para>Reorder <literal>\?</literal> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
- <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
-
- <listitem>
- <para>
- <command>\encoding</command> now changes based on the server parameter
- <varname>client_encoding</varname> (Tom)
- </para>
- <para>
- In previous versions, <command>\encoding</command> was not aware
- of encoding changes made using <literal>SET
- client_encoding</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>Save editor buffer into readline history (Ross)</para>
- <para>
- When <command>\e</command> is used to edit a query, the result is saved
- in the readline history for retrieval using the up arrow.
- </para>
- </listitem>
-
- <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
- <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
-
- <listitem>
- <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
- <para>
- This takes the place of the removed server parameter <varname>autocommit</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
- <para>
- This controls the new error reporting details.
- </para>
- </listitem>
-
- <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
- <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>pg_dump Changes</title>
-
- <itemizedlist>
- <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
- <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
-
- <listitem>
- <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
- <para>
- This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
- </para>
- </listitem>
-
- <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
-
- <listitem>
- <para>
- Have pg_dumpall use <command>GRANT</command>/<command>REVOKE</command> to dump database-level privileges (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow pg_dumpall to support the options <option>-a</option>,
- <option>-s</option>, <option>-x</option> of pg_dump (Tom)
- </para>
- </listitem>
-
- <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
-
- <listitem>
- <para>
- pg_dump options <option>--use-set-session-authorization</option>
- and <option>--no-reconnect</option> now do nothing, all dumps
- use <command>SET SESSION AUTHORIZATION</command>
- </para>
- <para>
- pg_dump no longer reconnects to switch users, but instead always
- uses <command>SET SESSION AUTHORIZATION</command>. This will
- reduce password prompting during restores.
- </para>
- </listitem>
-
- <listitem>
- <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
- <para>
- <productname>PostgreSQL</productname> now includes its own
- long-option processing routines.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>libpq Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Add function <function>PQfreemem</function> for freeing memory on
- Windows, suggested for <command>NOTIFY</command> (Bruce)
- </para>
- <para>
- Windows requires that memory allocated in a library be freed by
- a function in the same library, hence
- <function>free()</function> doesn't work for freeing memory
- allocated by libpq. <function>PQfreemem</function> is the proper
- way to free libpq memory, especially on Windows, and is
- recommended for other platforms as well.
- </para>
- </listitem>
-
- <listitem>
- <para>Document service capability, and add sample file (Bruce)</para>
- <para>
- This allows clients to look up connection information in a
- central file on the client machine.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>PQsetdbLogin</function> have the same defaults as
- <function>PQconnectdb</function> (Tom)
- </para>
- </listitem>
-
- <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
-
- <listitem>
- <para>
- Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow thread-safe libpq with <filename>configure</filename>
- option <option>--enable-thread-safety</option> (Lee Kindness,
- Philip Yarra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow function <function>pqInternalNotice</function> to accept a
- format string and arguments instead of just a preformatted
- message (Tom, Sean Chittenden)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Control SSL negotiation with <literal>sslmode</literal> values
- <literal>disable</literal>, <literal>allow</literal>,
- <literal>prefer</literal>, and <literal>require</literal> (Jon
- Jensen)
- </para>
- </listitem>
-
- <listitem>
- <para>Allow new error codes and levels of text (Tom)</para>
- </listitem>
-
- <listitem>
- <para>Allow access to the underlying table and column of a query result (Tom)</para>
- <para>
- This is helpful for query-builder applications that want to know
- the underlying table and column names associated with a specific
- result set.
- </para>
- </listitem>
-
- <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
- <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
-
- <listitem>
- <para>
- Add function <function>PQexecPrepared</function> and
- <function>PQsendQueryPrepared</function> functions which perform
- bind/execute of previously prepared statements (Tom)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>JDBC Changes</title>
-
- <itemizedlist>
- <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
- <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
- <listitem><para>Support SSL connections (Barry)</para></listitem>
- <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
- <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Miscellaneous Interface Changes</title>
-
- <itemizedlist>
- <listitem>
- <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
- </listitem>
- <listitem>
- <para>Add Informix compatibility to ECPG (Michael)</para>
- <para>
- This allows ECPG to process embedded C programs that were
- written using certain Informix extensions.
- </para>
- </listitem>
-
- <listitem>
- <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
- </listitem>
-
- <listitem>
- <para>
- Allow thread-safe embedded SQL programs with
- <filename>configure</filename> option
- <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
- </para>
- <para>
- This allows multiple threads to access the database at the same
- time.
- </para>
- </listitem>
-
- <listitem>
- <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Source Code Changes</title>
-
- <itemizedlist>
- <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
- <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
- <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
- <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
- <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
- <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
- <listitem><para>Add macOS startup scripts (David Wheeler)</para></listitem>
- <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
- <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
- <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
- <listitem><para> Bison &gt;= 1.85 is now required to build the <productname>PostgreSQL</productname> grammar, if building from CVS</para></listitem>
- <listitem><para>Merge documentation into one book (Peter)</para></listitem>
- <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
- <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
- <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
- <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
- <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
- <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
- <listitem>
- <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
- <para>
- This was no longer needed now that we have <command>CREATE CONVERSION</command>.
- </para>
- </listitem>
- <listitem>
- <para>Generate a compile error if spinlock code is not found (Bruce)</para>
- <para>
- Platforms without spinlock code will now fail to compile, rather
- than silently using semaphores. This failure can be disabled
- with a new <command>configure</command> option.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Contrib Changes</title>
-
- <itemizedlist>
- <listitem><para>Change dbmirror license to BSD</para></listitem>
- <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
- <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
- <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
- <listitem><para>Update oracle</para></listitem>
- <listitem><para>Update mysql</para></listitem>
- <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
- <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
- <listitem><para>Update btree_gist (Oleg)</para></listitem>
- <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
- <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
- <listitem><para>Add serial column to order <function>connectby()</function> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
- <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
- <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
- <listitem><para>Make pgbench honor environment variables <envar>PGHOST</envar>, <envar>PGPORT</envar>, <envar>PGUSER</envar> (Tatsuo)</para></listitem>
- <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
- <listitem><para>Improve pgstattuple (Rod)</para></listitem>
- <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
- <listitem><para>Improve adddepend (Rod)</para></listitem>
- <listitem><para>Update spi/timetravel (B&ouml;jthe Zolt&aacute;n)</para></listitem>
- <listitem><para>Fix dbase <option>-s</option> option and improve non-ASCII handling (Thomas Behr, M&aacute;rcio Smiderle)</para></listitem>
- <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
- </itemizedlist>
- </sect3>
- </sect2>
-</sect1>
diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml
deleted file mode 100644
index 6171e0d1eee..00000000000
--- a/doc/src/sgml/release-8.0.sgml
+++ /dev/null
@@ -1,5421 +0,0 @@
-<!-- doc/src/sgml/release-8.0.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-8-0-26">
- <title>Release 8.0.26</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.25.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 8.0.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.26</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.22,
- see <xref linkend="release-8-0-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against functions returning setof record where not all the
- returned rows are actually of the same rowtype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid recursion while assigning XIDs to heavily-nested
- subtransactions (Andres Freund, Robert Haas)
- </para>
-
- <para>
- The original coding could result in a crash if there was limited
- stack space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
- which could produce junk early in backend startup (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible data corruption in <command>ALTER TABLE ... SET
- TABLESPACE</command> when archiving is enabled (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
- TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Python, defend against null pointer results from
- <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle connection names longer than
- 62 bytes correctly (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010l
- for DST law changes in Egypt and Palestine; also historical corrections
- for Finland.
- </para>
-
- <para>
- This change also adds new names for two Micronesian timezones:
- Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
- abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
- Pacific/Ponape.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-25">
- <title>Release 8.0.25</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.24.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.0.X release series in July 2010.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.25</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.22,
- see <xref linkend="release-8-0-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite recursion in <application>psql</application> when expanding
- a variable that refers to itself (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010j
- for DST law changes in Argentina, Australian Antarctic, Bangladesh,
- Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
- also historical corrections for Taiwan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-24">
- <title>Release 8.0.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.23.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.0.X release series in July 2010.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.24</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.22,
- see <xref linkend="release-8-0-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when trying to recover from a failure in
- subtransaction start (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix server memory leak associated with use of savepoints and a client
- encoding different from server's encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-to-bit-string conversions to handle the first fractional
- byte correctly when the output bit width is wider than the given
- integer by something other than a multiple of 8 bits (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
- report the next WAL segment's name when the end location is exactly at a
- segment boundary (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix plpgsql failure in one case where a composite column is set to NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>volatile</literal> markings in PL/Python to avoid possible
- compiler-specific misbehavior (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
- memory management (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010e
- for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-23">
- <title>Release 8.0.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.22.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.23</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.22,
- see <xref linkend="release-8-0-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature drop of temporary files used for a cursor that is accessed
- within a subtransaction (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash in exception processing in PL/Python (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>psql</application>'s flex module is compiled with the correct
- system header definitions (Tom)
- </para>
-
- <para>
- This fixes build failures on platforms where
- <literal>--enable-largefile</literal> causes incompatible changes in the
- generated code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009s
- for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
- Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
- corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-22">
- <title>Release 8.0.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.21.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.22</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you have any hash indexes on <type>interval</type> columns,
- you must <command>REINDEX</command> them after updating to 8.0.22.
- Also, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of sub-SELECTs appearing in the arguments of
- an outer-level aggregate function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash calculation for data type <type>interval</type> (Tom)
- </para>
-
- <para>
- This corrects wrong results for hash joins on interval values.
- It also changes the contents of hash indexes on interval columns.
- If you have any such indexes, you must <command>REINDEX</command> them
- after updating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
- suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
- </para>
-
- <para>
- It was previously handled as <literal>'th'</literal> (lowercase).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix calculation of distance between a point and a line segment (Tom)
- </para>
-
- <para>
- This led to incorrect results from a number of geometric operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>money</type> data type to work in locales where currency
- amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly round datetime input like
- <literal>00:12:57.9999999999999999999999999999</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix poor choice of page split point in GiST R-tree operator classes
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability issues in plperl initialization (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to not go into an infinite loop if
- <filename>postgresql.conf</filename> is empty (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
- properly handle the maximum number of parameters (twenty) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009l
- for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
- Argentina/San_Luis, Cuba, Jordan (historical correction only),
- Mauritius, Morocco, Palestine, Syria, Tunisia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-21">
- <title>Release 8.0.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-03-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.20.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.21</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</emphasis> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</command> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
-
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump when <function>to_char()</function> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-20">
- <title>Release 8.0.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-02-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.19.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.20</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of URLs in <function>headline()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of overlength headlines in <function>headline()</function>
- function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible Assert failure or misconversion if an encoding
- conversion is created with the wrong conversion function for the
- specified pair of encodings (Tom, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary locking of small tables in <command>VACUUM</command>
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix uninitialized variables in <filename>contrib/tsearch2</filename>'s
- <function>get_covers()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make all documentation reference <literal>pgsql-bugs</literal> and/or
- <literal>pgsql-hackers</literal> as appropriate, instead of the
- now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
- mailing lists (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009a (for
- Kathmandu and historical DST corrections in Switzerland, Cuba)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-19">
- <title>Release 8.0.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-11-03</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.18.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.19</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix backend crash when the client encoding cannot represent a localized
- error message (Tom)
- </para>
-
- <para>
- We have addressed similar issues before, but it would still fail if
- the <quote>character has no equivalent</quote> message itself couldn't
- be converted. The fix is to disable localization and send the plain
- ASCII error message when we detect such a situation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when deeply nested functions are invoked from
- a trigger (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an error is reported when a newly-defined PL/pgSQL trigger
- function is invoked as a normal function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect tsearch2 headline generation when single query
- item matches first word of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper display of fractional seconds in interval values when
- using a non-ISO datestyle in an <option>--enable-integer-datetimes</option>
- build (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
- behave correctly when the passed tuple and tuple descriptor have
- different numbers of columns (Tom)
- </para>
-
- <para>
- This situation is normal when a table has had columns added or removed,
- but these two functions didn't handle it properly.
- The only likely consequence is an incorrect error indication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s parsing of <command>CREATE USER</command> (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008i (for
- DST law changes in Argentina, Brazil, Mauritius, Syria)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-18">
- <title>Release 8.0.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-09-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.17.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.18</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Widen local lock counters from 32 to 64 bits (Tom)
- </para>
-
- <para>
- This responds to reports that the counters could overflow in
- sufficiently long transactions, leading to unexpected <quote>lock is
- already held</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add checks in executor startup to ensure that the tuples produced by an
- <command>INSERT</command> or <command>UPDATE</command> will match the target table's
- current rowtype (Tom)
- </para>
-
- <para>
- <command>ALTER COLUMN TYPE</command>, followed by re-use of a previously
- cached plan, could produce this type of situation. The check protects
- against data corruption and/or crashes that could ensue.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix datetime input functions to correctly detect integer overflow when
- running on a 64-bit platform (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of writing very long log messages to syslog (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
- ON</literal> query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
- boolean results always result in two groups, regardless of the
- expressions' contents (Tom)
- </para>
-
- <para>
- This is very substantially more accurate than the regular <literal>GROUP
- BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
- <literal>IS NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
- about the encoding of data sent to or from Tcl (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to work with Python 2.5
- </para>
-
- <para>
- This is a back-port of fixes made during the 8.2 development cycle.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- error reporting after failure to send a SQL command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to properly preserve postmaster
- command-line arguments across a <literal>restart</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008f (for
- DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
- Pakistan, Palestine, and Paraguay)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-17">
- <title>Release 8.0.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-06-12</para>
- </formalpara>
-
- <para>
- This release contains one serious bug fix over 8.0.16.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.17</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
- </para>
-
- <para>
- Before this fix, a negative constant in a view or rule might be dumped
- as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
- be <literal>(-42)::integer</literal> due to operator precedence rules.
- Usually this would make little difference, but it could interact with
- another recent patch to cause
- <productname>PostgreSQL</productname> to reject what had been a valid
- <command>SELECT DISTINCT</command> view query. Since this could result in
- <application>pg_dump</application> output failing to reload, it is being treated
- as a high-priority fix. The only released versions in which dump
- output is actually incorrect are 8.3.1 and 8.2.7.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-16">
- <title>Release 8.0.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>never released</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.15.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.16</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X.
- However, if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new
- column is correctly checked to see if it's been initialized to all
- non-nulls (Brendan Jurd)
- </para>
-
- <para>
- Previous versions neglected to check this requirement at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <command>CREATE TABLE</command> failure when inheriting the
- <quote>same</quote> constraint from multiple parent relations that
- inherited that constraint from a common ancestor (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix conversions between ISO-8859-5 and other encodings to handle
- Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
- two dots) (Sergey Burladyan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a few datatype input functions
- that were allowing unused bytes in their results to contain
- uninitialized, unpredictable values (Tom)
- </para>
-
- <para>
- This could lead to failures in which two apparently identical literal
- values were not seen as equal, resulting in the parser complaining
- about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal>
- expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case in regular-expression substring matching
- (<literal>substring(<replaceable>string</replaceable> from
- <replaceable>pattern</replaceable>)</literal>) (Tom)
- </para>
-
- <para>
- The problem occurs when there is a match to the pattern overall but
- the user has specified a parenthesized subexpression and that
- subexpression hasn't got a match. An example is
- <literal>substring('foo' from 'foo(bar)?')</literal>.
- This should return NULL, since <literal>(bar)</literal> isn't matched, but
- it was mistakenly returning the whole-pattern match instead (ie,
- <literal>foo</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008c (for
- DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
- Argentina/San_Luis, and Chile)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect result from <application>ecpg</application>'s
- <function>PGTYPEStimestamp_sub()</function> function (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <filename>contrib/xml2</filename>'s
- <function>xpath_table()</function> function when the input query returns a
- NULL value (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s makefile to not override
- <literal>CFLAGS</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
- 4.3 (Tom)
- </para>
-
- <para>
- This problem affects <quote>old style</quote> (V0) C functions that
- return boolean. The fix is already in 8.3, but the need to
- back-patch it was not realized at the time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
- race condition (Tom)
- </para>
-
- <para>
- In rare cases a session that had just executed a
- <command>LISTEN</command> might not get a notification, even though
- one would be expected because the concurrent transaction executing
- <command>NOTIFY</command> was observed to commit later.
- </para>
-
- <para>
- A side effect of the fix is that a transaction that has executed
- a not-yet-committed <command>LISTEN</command> command will not see any
- row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
- should it choose to look; formerly it would have. This behavior
- was never documented one way or the other, but it is possible that
- some applications depend on the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash when an error occurs during a query using a hash index
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix input of datetime values for February 29 in years BC (Tom)
- </para>
-
- <para>
- The former coding was mistaken about which years were leap years.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unrecognized node type</quote> error in some variants of
- <command>ALTER OWNER</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to correctly extract the postmaster's port
- number from command-line options (Itagaki Takahiro, Tom)
- </para>
-
- <para>
- Previously, <literal>pg_ctl start -w</literal> could try to contact the
- postmaster on the wrong port, leading to bogus reports of startup
- failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fwrapv</option> to defend against possible misoptimization
- in recent <application>gcc</application> versions (Tom)
- </para>
-
- <para>
- This is known to be necessary when building <productname>PostgreSQL</productname>
- with <application>gcc</application> 4.3 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of constant expressions in <literal>ORDER BY</literal>
- and <literal>GROUP BY</literal> (Tom)
- </para>
-
- <para>
- An explicitly casted constant would be shown incorrectly. This could
- for example lead to corruption of a view definition during
- dump and reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to handle NOTICE messages correctly
- during COPY OUT (Tom)
- </para>
-
- <para>
- This failure has only been observed to occur when a user-defined
- datatype's output routine issues a NOTICE, but there is no
- guarantee it couldn't happen due to other causes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-15">
- <title>Release 8.0.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-01-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.14,
- including fixes for significant security issues.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <para>
- This is the last 8.0.X release for which the <productname>PostgreSQL</productname>
- community will produce binary packages for <productname>Windows</productname>.
- Windows users are encouraged to move to 8.2.X or later,
- since there are Windows-specific fixes in 8.2.X that
- are impractical to back-port. 8.0.X will continue to
- be supported on other platforms.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.15</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent functions in indexes from executing with the privileges of
- the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
- </para>
-
- <para>
- Functions used in index expressions and partial-index
- predicates are evaluated whenever a new table entry is made. It has
- long been understood that this poses a risk of trojan-horse code
- execution if one modifies a table owned by an untrustworthy user.
- (Note that triggers, defaults, check constraints, etc. pose the
- same type of risk.) But functions in indexes pose extra danger
- because they will be executed by routine maintenance operations
- such as <command>VACUUM FULL</command>, which are commonly performed
- automatically under a superuser account. For example, a nefarious user
- can execute code with superuser privileges by setting up a
- trojan-horse index definition and waiting for the next routine vacuum.
- The fix arranges for standard maintenance operations
- (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
- and <command>CLUSTER</command>) to execute as the table owner rather than
- the calling user, using the same privilege-switching mechanism already
- used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
- this security measure, execution of <command>SET SESSION
- AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
- <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
- </para>
-
- <para>
- Suitably crafted regular-expression patterns could cause crashes,
- infinite or near-infinite looping, and/or massive memory consumption,
- all of which pose denial-of-service hazards for applications that
- accept regex search patterns from untrustworthy sources.
- (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
-
- <para>
- The fix that appeared for this in 8.0.14 was incomplete, as it plugged
- the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
- CVE-2007-3278)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2007k
- (in particular, recent Argentina changes) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure in some cases of <literal>WHERE false AND var IN
- (SELECT ...)</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve the tablespace of indexes that are
- rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make archive recovery always start a new WAL timeline, rather than only
- when a recovery stop time was used (Simon)
- </para>
-
- <para>
- This avoids a corner-case risk of trying to overwrite an existing
- archived copy of the last WAL segment, and seems simpler and cleaner
- than the original definition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname>
- when the table is too small for it to be useful (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in <function>translate()</function> when using a multibyte
- database encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal>
- as <literal>int</literal> rather than <literal>char</literal> (Tom)
- </para>
-
- <para>
- While this could theoretically happen anywhere, no standard build of
- Perl did things this way ... until <productname>macOS</productname> 10.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to not crash on long exception messages (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to correctly handle inheritance child tables
- that have default expressions different from their parent's (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>ecpg</application> parser fixes (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
- NULL rowid as a category in its own right, rather than crashing (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>tsvector</type> and <type>tsquery</type> output routines to
- escape backslashes correctly (Teodor, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a specific version of <productname>Autoconf</productname> to be used
- when re-generating the <command>configure</command> script (Peter)
- </para>
-
- <para>
- This affects developers and packagers only. The change was made
- to prevent accidental use of untested combinations of
- <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
- You can remove the version check if you really want to use a
- different <productname>Autoconf</productname> version, but it's
- your responsibility whether the result works or not.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-14">
- <title>Release 8.0.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-09-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.13.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.14</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent index corruption when a transaction inserts rows and
- then aborts close to the end of a concurrent <command>VACUUM</command>
- on the same table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging so that log messages are never interleaved when using
- the syslogger process (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when <varname>log_min_error_statement</varname> logging runs out
- of memory (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of some foreign-key corner cases (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CLUSTER</command> from failing
- due to attempting to process temporary tables of other sessions (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Windows socket improvements (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows
- because of possible encoding mismatches (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-13">
- <title>Release 8.0.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-04-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.12,
- including a security fix.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.13</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support explicit placement of the temporary-table schema within
- <varname>search_path</varname>, and disable searching it for functions
- and operators (Tom)
- </para>
- <para>
- This is needed to allow a security-definer function to set a
- truly secure value of <varname>search_path</varname>. Without it,
- an unprivileged SQL user can use temporary objects to execute code
- with the privileges of the security-definer function (CVE-2007-2138).
- See <command>CREATE FUNCTION</command> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>/contrib/tsearch2</filename> crash fixes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
- <command>UPDATE</command> chains (Tom, Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10)
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-12">
- <title>Release 8.0.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-07</para>
- </formalpara>
-
- <para>
- This release contains one fix from 8.0.11.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.12</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove overly-restrictive check for type length in constraints and
- functional indexes(Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-11">
- <title>Release 8.0.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.10, including
- a security fix.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.11</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove security vulnerabilities that allowed connected users
- to read backend memory (Tom)
- </para>
- <para>
- The vulnerabilities involve suppressing the normal check that a SQL
- function returns the data type it's declared to, and changing the
- data type of a table column (CVE-2007-0555, CVE-2007-0556). These
- errors can easily be exploited to cause a backend crash, and in
- principle might be used to read database content that the user
- should not be able to access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare bug wherein btree index page splits could fail
- due to choosing an infeasible split point (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten security of multi-byte character processing for UTF8 sequences
- over three bytes long (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-10">
- <title>Release 8.0.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-01-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.9.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.10</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of <function>getaddrinfo()</function> on AIX (Tom)
- </para>
-
- <para>
- This fixes a problem with starting the statistics collector,
- among other things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to re-find parent key</quote> errors in
- <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition for truncation of a large relation across a
- gigabyte boundary by <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs affecting multi-gigabyte hash indexes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock in Windows signal handling (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error when constructing an <literal>ARRAY[]</literal> made up of multiple
- empty elements (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix ecpg memory leak during connection (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>to_number()</function> and <function>to_char(numeric)</function>
- are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for
- new <application>initdb</application> installs (Tom)
- </para>
-
- <para>
- This is because <varname>lc_numeric</varname> can potentially
- change the output of these functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve index usage of regular expressions that use parentheses (Tom)
- </para>
-
- <para>
- This improves <application>psql</application> <literal>\d</literal> performance also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update timezone database
- </para>
-
- <para>
- This affects Australian and Canadian daylight-savings rules in
- particular.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-9">
- <title>Release 8.0.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-10-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.8.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.9</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix crash when referencing <literal>NEW</literal> row
-values in rule WHERE expressions (Tom)</para></listitem>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</para></listitem>
-<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
-function returning multiple rows (Tom)</para></listitem>
-<listitem><para>Fix <command>ALTER TABLE ... TYPE</command> to recheck
-<literal>NOT NULL</literal> for <literal>USING</literal> clause (Tom)</para></listitem>
-<listitem><para>Fix <function>string_to_array()</function> to handle overlapping
- matches for the separator string</para>
-<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</literal>.
-</para></listitem>
-<listitem><para>Fix corner cases in pattern matching for
- <application>psql</application>'s <literal>\d</literal> commands</para></listitem>
-<listitem><para>Fix index-corrupting bugs in /contrib/ltree
- (Teodor)</para></listitem>
-<listitem><para>Numerous robustness fixes in <application>ecpg</application> (Joachim
-Wieland)</para></listitem>
-<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem>
-<listitem><para>Fixes for <systemitem class="osname">AIX</systemitem> and
-<productname>Intel</productname> compilers (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-8">
- <title>Release 8.0.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-05-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.7,
- including patches for extremely serious security issues.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.8</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
-
- <para>
- Full security against the SQL-injection attacks described in
- CVE-2006-2313 and CVE-2006-2314 might require changes in application
- code. If you have applications that embed untrustworthy strings
- into SQL commands, you should examine them as soon as possible to
- ensure that they are using recommended escaping techniques. In
- most cases, applications should be using subroutines provided by
- libraries or drivers (such as <application>libpq</application>'s
- <function>PQescapeStringConn()</function>) to perform string escaping,
- rather than relying on <foreignphrase>ad hoc</foreignphrase> code to do it.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change the server to reject invalidly-encoded multibyte
-characters in all cases (Tatsuo, Tom)</para>
-<para>While <productname>PostgreSQL</productname> has been moving in this direction for
-some time, the checks are now applied uniformly to all encodings and all
-textual input, and are now always errors not merely warnings. This change
-defends against SQL-injection attacks of the type described in CVE-2006-2313.
-</para></listitem>
-
-<listitem><para>Reject unsafe uses of <literal>\'</literal> in string literals</para>
-<para>As a server-side defense against SQL-injection attacks of the type
-described in CVE-2006-2314, the server now only accepts <literal>''</literal> and not
-<literal>\'</literal> as a representation of ASCII single quote in SQL string
-literals. By default, <literal>\'</literal> is rejected only when
-<varname>client_encoding</varname> is set to a client-only encoding (SJIS, BIG5, GBK,
-GB18030, or UHC), which is the scenario in which SQL injection is possible.
-A new configuration parameter <varname>backslash_quote</varname> is available to
-adjust this behavior when needed. Note that full security against
-CVE-2006-2314 might require client-side changes; the purpose of
-<varname>backslash_quote</varname> is in part to make it obvious that insecure
-clients are insecure.
-</para></listitem>
-
-<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be
-aware of encoding considerations and
-<varname>standard_conforming_strings</varname></para>
-<para>This fixes <application>libpq</application>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
-them against the planned changeover to SQL-standard string literal syntax.
-Applications that use multiple <productname>PostgreSQL</productname> connections
-concurrently should migrate to <function>PQescapeStringConn()</function> and
-<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly
-for the settings in use in each database connection. Applications that
-do string escaping <quote>by hand</quote> should be modified to rely on library
-routines instead.
-</para></listitem>
-
-<listitem><para>Fix some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</function>, <function>alt_to_iso</function>,
-<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>,
-<function>mic_to_euc_tw</function> were all broken to varying
-extents.
-</para></listitem>
-
-<listitem><para>Clean up stray remaining uses of <literal>\'</literal> in strings
-(Bruce, Jan)</para></listitem>
-
-<listitem><para>Fix bug that sometimes caused OR'd index scans to
-miss rows they should have returned</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a btree index has been
-truncated</para></listitem>
-
-<listitem><para>Fix <literal>SIMILAR TO</literal> for patterns involving
-<literal>|</literal> (Tom)</para></listitem>
-
-<listitem><para>Fix <command>SELECT INTO</command> and <command>CREATE TABLE AS</command> to
-create tables in the default tablespace, not the base directory (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-
-<listitem><para>Fix problem with password prompting on some Win32 systems
-(Robert Kinberg)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-7">
- <title>Release 8.0.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-02-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.6.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.7</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.6,
- see <xref linkend="release-8-0-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix potential crash in <command>SET
-SESSION AUTHORIZATION</command> (CVE-2006-0553)</para>
-<para>An unprivileged user could crash the server process, resulting in
-momentary denial of service to other users, if the server has been compiled
-with Asserts enabled (which is not the default).
-Thanks to Akio Ishida for reporting this problem.
-</para></listitem>
-
-<listitem><para>Fix bug with row visibility logic in self-inserted
-rows (Tom)</para>
-<para>Under rare circumstances a row inserted by the current command
-could be seen as already valid, when it should not be. Repairs bug
-created in 8.0.4, 7.4.9, and 7.3.11 releases.
-</para></listitem>
-
-<listitem><para>Fix race condition that could lead to <quote>file already
-exists</quote> errors during pg_clog and pg_subtrans file creation
-(Tom)</para></listitem>
-
-<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
-message arrives at just the wrong time (Tom)</para></listitem>
-
-<listitem><para>Properly check <literal>DOMAIN</literal> constraints for
-<literal>UNKNOWN</literal> parameters in prepared statements
-(Neil)</para></listitem>
-
-<listitem><para>Ensure <command>ALTER COLUMN TYPE</command> will process
-<literal>FOREIGN KEY</literal>, <literal>UNIQUE</literal>, and <literal>PRIMARY KEY</literal>
-constraints in the proper order (Nakano Yoshihisa)</para></listitem>
-
-<listitem><para>Fixes to allow restoring dumps that have cross-schema
-references to custom operators or operator classes (Tom)</para></listitem>
-
-<listitem><para>Allow <application>pg_restore</application> to continue properly after a
-<command>COPY</command> failure; formerly it tried to treat the remaining
-<command>COPY</command> data as SQL commands (Stephen Frost)</para></listitem>
-
-<listitem><para>Fix <application>pg_ctl</application> <literal>unregister</literal> crash
-when the data directory is not specified (Magnus)</para></listitem>
-
-<listitem><para>Fix <application>ecpg</application> crash on AMD64 and PPC
-(Neil)</para></listitem>
-
-<listitem><para>Recover properly if error occurs during argument passing
-in <application>PL/Python</application> (Neil)</para></listitem>
-
-<listitem><para>Fix <application>PL/Perl</application>'s handling of locales on
-Win32 to match the backend (Andrew)</para></listitem>
-
-<listitem><para>Fix crash when <literal>log_min_messages</literal> is set to
-<literal>DEBUG3</literal> or above in <filename>postgresql.conf</filename> on Win32
-(Bruce)</para></listitem>
-
-<listitem><para>Fix <application>pgxs</application> <literal>-L</literal> library path
-specification for Win32, Cygwin, macOS, AIX (Bruce)</para></listitem>
-
-<listitem><para>Check that SID is enabled while checking for Win32 admin
-privileges (Magnus)</para></listitem>
-
-<listitem><para>Properly reject out-of-range date inputs (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</function>
-and <function>isinf</function> during configure (Tom)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-6">
- <title>Release 8.0.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-01-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.5.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.6</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.3,
- see <xref linkend="release-8-0-3"/>.
- Also, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the locale or
- <application>plperl</application> issues described below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix Windows code so that postmaster will continue rather
-than exit if there is no more room in ShmemBackendArray (Magnus)</para>
-<para>The previous behavior could lead to a denial-of-service situation if too
-many connection requests arrive close together. This applies
-<emphasis>only</emphasis> to the Windows port.</para></listitem>
-
-<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
-to return an already-used page as new, potentially causing loss of
-recently-committed data (Tom)</para></listitem>
-
-<listitem><para>Fix for protocol-level Describe messages issued
-outside a transaction or in a failed transaction (Tom)</para></listitem>
-
-<listitem><para>Fix character string comparison for locales that consider
-different character combinations as equal, such as Hungarian (Tom)</para>
-<para>This might require <command>REINDEX</command> to fix existing indexes on
-textual columns.</para></listitem>
-
-<listitem><para>Set locale environment variables during postmaster startup
-to ensure that <application>plperl</application> won't change the locale later</para>
-<para>This fixes a problem that occurred if the <application>postmaster</application> was
-started with environment variables specifying a different locale than what
-<application>initdb</application> had been told. Under these conditions, any use of
-<application>plperl</application> was likely to lead to corrupt indexes. You might need
-<command>REINDEX</command> to fix existing indexes on
-textual columns if this has happened to you.</para></listitem>
-
-<listitem><para>Allow more flexible relocation of installation
-directories (Tom)</para>
-<para>Previous releases supported relocation only if all installation
-directory paths were the same except for the last component.</para></listitem>
-
-<listitem><para>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Various fixes for functions returning <literal>RECORD</literal>s
-(Tom) </para></listitem>
-
-<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> gen_salt,
-which caused it not to use all available salt space for MD5 and
-XDES algorithms (Marko Kreen, Solar Designer)</para>
-<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
-
-<listitem><para>Fix <filename>/contrib/dblink</filename> to throw an error,
-rather than crashing, when the number of columns specified is different from
-what's actually returned by the query (Joe)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-5">
- <title>Release 8.0.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-12-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.4.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.5</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.3,
- see <xref linkend="release-8-0-3"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix race condition in transaction log management</para>
-<para>There was a narrow window in which an I/O operation could be initiated
-for the wrong page, leading to an Assert failure or data
-corruption.</para>
-</listitem>
-
-<listitem><para>Fix bgwriter problems after recovering from errors
-(Tom)</para>
-<para>
-The background writer was found to leak buffer pins after write errors.
-While not fatal in itself, this might lead to mysterious blockages of
-later VACUUM commands.
-</para>
-</listitem>
-
-<listitem><para>Prevent failure if client sends Bind protocol message
-when current transaction is already aborted</para></listitem>
-
-<listitem><para><filename>/contrib/ltree</filename> fixes (Teodor)</para></listitem>
-
-<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
-
-<listitem><para>Retry file reads and writes after Windows
-NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
-
-<listitem><para>Fix intermittent failure when <varname>log_line_prefix</varname>
-includes <literal>%i</literal></para></listitem>
-
-<listitem><para>Fix <application>psql</application> performance issue with long scripts
-on Windows (Merlin Moncure)</para></listitem>
-
-<listitem><para>Fix missing updates of <filename>pg_group</filename> flat
-file</para></listitem>
-
-<listitem><para>Fix longstanding planning error for outer joins</para>
-<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
-only supported with merge-joinable join conditions</quote>.</para></listitem>
-
-<listitem><para>Postpone timezone initialization until after
-<filename>postmaster.pid</filename> is created</para>
-<para>This avoids confusing startup scripts that expect the pid file to appear
-quickly.</para></listitem>
-
-<listitem><para>Prevent core dump in <application>pg_autovacuum</application> when a
-table has been dropped</para></listitem>
-
-<listitem><para>Fix problems with whole-row references (<literal>foo.*</literal>)
-to subquery results</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-4">
- <title>Release 8.0.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.3.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.4</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- if you are upgrading from a version earlier than 8.0.3,
- see <xref linkend="release-8-0-3"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix error that allowed <command>VACUUM</command> to remove
-<literal>ctid</literal> chains too soon, and add more checking in code that follows
-<literal>ctid</literal> links</para>
-<para>This fixes a long-standing problem that could cause crashes in very rare
-circumstances.</para></listitem>
-<listitem><para>Fix <type>CHAR()</type> to properly pad spaces to the specified
-length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
-<para>In prior releases, the padding of <type>CHAR()</type> was incorrect
-because it only padded to the specified number of bytes without
-considering how many characters were stored.</para></listitem>
-<listitem><para>Force a checkpoint before committing <command>CREATE
-DATABASE</command></para>
-<para>This should fix recent reports of <quote>index is not a btree</quote>
-failures when a crash occurs shortly after <command>CREATE
-DATABASE</command>.</para></listitem>
-<listitem><para>Fix the sense of the test for read-only transaction
-in <command>COPY</command></para>
-<para>The code formerly prohibited <command>COPY TO</command>, where it should
-prohibit <command>COPY FROM</command>.
-</para></listitem>
-<listitem><para>Handle consecutive embedded newlines in <command>COPY</command>
-CSV-mode input</para></listitem>
-<listitem><para>Fix <function>date_trunc(week)</function> for dates near year
-end</para></listitem>
-<listitem><para>Fix planning problem with outer-join ON clauses that reference
-only the inner-side relation</para></listitem>
-<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</literal> corner
-cases</para></listitem>
-<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
-DISTINCT ...)</literal> and related cases</para></listitem>
-<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</literal>
-values due to poorly thought out <quote>fuzzy</quote> cost
-comparison</para></listitem>
-<listitem><para>Make <function>array_in</function> and <function>array_recv</function> more
-paranoid about validating their OID parameter</para></listitem>
-<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
-a...</literal> with GiST index on column <literal>a</literal></para></listitem>
-<listitem><para>Improve robustness of datetime parsing</para></listitem>
-<listitem><para>Improve checking for partially-written WAL
-pages</para></listitem>
-<listitem><para>Improve robustness of signal handling when SSL is
-enabled</para></listitem>
-<listitem><para>Improve MIPS and M68K spinlock code</para></listitem>
-<listitem><para>Don't try to open more than <literal>max_files_per_process</literal>
-files during postmaster startup</para></listitem>
-<listitem><para>Various memory leakage fixes</para></listitem>
-<listitem><para>Various portability improvements</para></listitem>
-<listitem><para>Update timezone data files</para></listitem>
-<listitem><para>Improve handling of DLL load failures on Windows</para></listitem>
-<listitem><para>Improve random-number generation on Windows</para></listitem>
-<listitem><para>Make <literal>psql -f filename</literal> return a nonzero exit code
-when opening the file fails</para></listitem>
-<listitem><para>Change <application>pg_dump</application> to handle inherited check
-constraints more reliably</para></listitem>
-<listitem><para>Fix password prompting in <application>pg_restore</application> on
-Windows</para></listitem>
-<listitem><para>Fix PL/pgSQL to handle <literal>var := var</literal> correctly when
-the variable is of pass-by-reference type</para></listitem>
-<listitem><para>Fix PL/Perl <literal>%_SHARED</literal> so it's actually
-shared</para></listitem>
-<listitem><para>Fix <filename>contrib/pg_autovacuum</filename> to allow sleep
-intervals over 2000 sec</para></listitem>
-<listitem><para>Update <filename>contrib/tsearch2</filename> to use current Snowball
-code</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-3">
- <title>Release 8.0.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-05-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.2, including several
- security-related issues.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.3</title>
-
- <para>
- A dump/restore is not required for those running 8.0.X. However,
- it is one possible way of handling two significant security problems
- that have been found in the initial contents of 8.0.X system
- catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will
- automatically correct these problems.
- </para>
-
- <para>
- The larger security problem is that the built-in character set encoding
- conversion functions can be invoked from SQL commands by unprivileged
- users, but the functions were not designed for such use and are not
- secure against malicious choices of arguments. The fix involves changing
- the declared parameter list of these functions so that they can no longer
- be invoked from SQL commands. (This does not affect their normal use
- by the encoding conversion machinery.)
- </para>
-
- <para>
- The lesser problem is that the <filename>contrib/tsearch2</filename> module
- creates several functions that are improperly declared to return
- <type>internal</type> when they do not accept <type>internal</type> arguments.
- This breaks type safety for all functions using <type>internal</type>
- arguments.
- </para>
-
- <para>
- It is strongly recommended that all installations repair these errors,
- either by initdb or by following the manual repair procedure given
- below. The errors at least allow unprivileged database users to crash
- their server process, and might allow unprivileged users to gain the
- privileges of a database superuser.
- </para>
-
- <para>
- If you wish not to do an initdb, perform the same manual repair
- procedures shown in the <link linkend="release-7-4-8">7.4.8 release
- notes</link>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change encoding function signature to prevent
-misuse</para></listitem>
-<listitem><para>Change <filename>contrib/tsearch2</filename> to avoid unsafe use of
-<type>INTERNAL</type> function results</para></listitem>
-<listitem><para>Guard against incorrect second parameter to
-<function>record_out</function></para></listitem>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</type> values</para>
-<para>
-The comparison code was wrong in the case where the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-NOTE: if you have an index on a <type>TIME WITH TIME ZONE</type> column,
-it will need to be <command>REINDEX</command>ed after installing this update, because
-the fix corrects the sort order of column values.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for
-<type>TIME WITH TIME ZONE</type> values</para></listitem>
-<listitem><para>Fix mis-display of negative fractional seconds in
-<type>INTERVAL</type> values</para>
-<para>
-This error only occurred when the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-</para></listitem>
-<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</literal>
-correctly (Neil)</para></listitem>
-<listitem><para>Still more 64-bit fixes for
-<filename>contrib/intagg</filename></para></listitem>
-<listitem><para>Prevent incorrect optimization of functions returning
-<type>RECORD</type></para></listitem>
-<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</literal></para></listitem>
-<listitem><para>Fix Borland makefile for libpq</para></listitem>
-<listitem><para>Fix <filename>contrib/btree_gist</filename> for <type>timetz</type> type
-(Teodor)</para></listitem>
-<listitem><para>Make <command>pg_ctl</command> check the PID found in
-<filename>postmaster.pid</filename> to see if it is still a live
-process</para></listitem>
-<listitem><para>Fix <command>pg_dump</command>/<command>pg_restore</command> problems caused
-by addition of dump timestamps</para></listitem>
-<listitem><para>Fix interaction between materializing holdable cursors and
-firing deferred triggers during transaction commit</para></listitem>
-<listitem><para>Fix memory leak in SQL functions returning pass-by-reference
-data types</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-2">
- <title>Release 8.0.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-04-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.1.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.2</title>
-
- <para>
- A dump/restore is not required for those running 8.0.*.
- This release updates the major version number of the
- <productname>PostgreSQL</productname> libraries, so it might be
- necessary to re-link some user applications if they cannot
- find the properly-numbered shared library.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Increment the major version number of all interface
-libraries (Bruce)</para>
-<para>
-This should have been done in 8.0.0. It is required so 7.4.X versions
-of PostgreSQL client applications, like <application>psql</application>,
-can be used on the same machine as 8.0.X applications. This might require
-re-linking user applications that use these libraries.
-</para></listitem>
-<listitem><para>Add Windows-only <varname>wal_sync_method</varname> setting of
-<option>fsync_writethrough</option> (Magnus, Bruce)</para>
-<para>
-This setting causes <productname>PostgreSQL</productname> to write through
-any disk-drive write cache when writing to WAL.
-This behavior was formerly called <option>fsync</option>, but was
-renamed because it acts quite differently from <option>fsync</option> on other
-platforms.
-</para>
-</listitem>
-<listitem><para>Enable the <varname>wal_sync_method</varname> setting of
-<option>open_datasync</option> on Windows, and make it the default for that
- platform (Magnus, Bruce)</para>
-<para>
-Because the default is no longer <option>fsync_writethrough</option>,
-data loss is possible during a power failure if the disk drive has
-write caching enabled. To turn off the write cache on Windows,
-from the <application>Device Manager</application>, choose the drive properties,
-then <literal>Policies</literal>.
-</para>
-</listitem>
-<listitem><para>New cache management algorithm <acronym>2Q</acronym> replaces
-<acronym>ARC</acronym> (Tom)</para>
-<para>
-This was done to avoid a pending US patent on <acronym>ARC</acronym>. The
-<acronym>2Q</acronym> code might be a few percentage points slower than
-<acronym>ARC</acronym> for some work loads. A better cache management algorithm
-will appear in 8.1.
-</para></listitem>
-<listitem><para>Planner adjustments to improve behavior on freshly-created
-tables (Tom)</para></listitem>
-<listitem><para>Allow plpgsql to assign to an element of an array that is
-initially <literal>NULL</literal> (Tom)</para>
-<para>
-Formerly the array would remain <literal>NULL</literal>, but now it becomes a
-single-element array. The main SQL engine was changed to handle
-<command>UPDATE</command> of a null array value this way in 8.0, but the similar
-case in plpgsql was overlooked.
-</para>
-</listitem>
-<listitem><para>Convert <literal>\r\n</literal> and <literal>\r</literal> to <literal>\n</literal>
-in plpython function bodies (Michael Fuhr)</para>
-<para>
- This prevents syntax errors when plpython code is written on a Windows or
- Mac client.
-</para>
-</listitem>
-<listitem><para>Allow SPI cursors to handle utility commands that return rows,
-such as <command>EXPLAIN</command> (Tom)</para></listitem>
-<listitem><para>Fix <command>CLUSTER</command> failure after <command>ALTER TABLE
-SET WITHOUT OIDS</command> (Tom)</para></listitem>
-<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</command>
-(Neil)</para></listitem>
-<listitem><para>Fix <command>ALTER LANGUAGE RENAME</command> (Tom)</para></listitem>
-<listitem><para>Document the Windows-only <literal>register</literal> and
-<literal>unregister</literal> options of <application>pg_ctl</application> (Magnus)</para></listitem>
-<listitem><para>Ensure operations done during backend shutdown are counted by
-statistics collector</para>
-<para>
-This is expected to resolve reports of <application>pg_autovacuum</application>
-not vacuuming the system catalogs often enough &mdash; it was not being
-told about catalog deletions caused by temporary table removal during
-backend exit.
-</para></listitem>
-<listitem><para>Change the Windows default for configuration parameter
-<varname>log_destination</varname> to <option>eventlog</option> (Magnus)</para>
-<para>
-By default, a server running on Windows will now send log output to the
-Windows event logger rather than standard error.
-</para></listitem>
-<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
-<listitem><para>Allow <command>ALTER DATABASE RENAME</command> by superusers
-who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
-<listitem><para>Modify WAL log entries for <command>CREATE</command> and
-<command>DROP DATABASE</command> to not specify absolute paths (Tom)</para>
-<para>This allows point-in-time recovery on a different machine with possibly
-different database location. Note that <command>CREATE TABLESPACE</command> still
-poses a hazard in such situations.
-</para></listitem>
-<listitem><para>Fix crash from a backend exiting with an open transaction
-that created a table and opened a cursor on it (Tom)</para></listitem>
-<listitem><para>Fix <function>array_map()</function> so it can call PL functions
-(Tom)</para></listitem>
-<listitem><para>Several <filename>contrib/tsearch2</filename> and
-<filename>contrib/btree_gist</filename> fixes (Teodor)
-</para></listitem>
-<listitem><para>Fix crash of some <filename>contrib/pgcrypto</filename>
-functions on some platforms (Marko Kreen)</para></listitem>
-<listitem><para>Fix <filename>contrib/intagg</filename> for 64-bit platforms
-(Tom)</para></listitem>
-<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</command> statement
-(Michael)</para></listitem>
-<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
-ecpg (Christof Petig)</para></listitem>
-<listitem><para>Do not use locale-aware versions of <function>upper()</function>,
-<function>lower()</function>, and <function>initcap()</function> when the locale is
-<literal>C</literal> (Bruce)</para>
-<para>
- This allows these functions to work on platforms that generate errors
- for non-7-bit data when the locale is <literal>C</literal>.
-</para></listitem>
-<listitem><para>Fix <function>quote_ident()</function> to quote names that match keywords (Tom)</para></listitem>
-<listitem><para>Fix <function>to_date()</function> to behave reasonably when
-<literal>CC</literal> and <literal>YY</literal> fields are both used (Karel)</para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</function> from failing
-when given a zero-month interval (Tom)</para></listitem>
-<listitem><para>Fix wrong week returned by <function>date_trunc('week')</function>
-(Bruce)</para>
-<para>
-<function>date_trunc('week')</function>
-returned the wrong year for the first few days of January in some years.
-</para></listitem>
-<listitem><para>Use the correct default mask length for class <literal>D</literal>
-addresses in <type>INET</type> data types (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0-1">
- <title>Release 8.0.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.0.0, including several
- security-related issues.
- For information about new features in the 8.0 major release, see
- <xref linkend="release-8-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.0.1</title>
-
- <para>
- A dump/restore is not required for those running 8.0.0.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</command> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</command> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Check that creator of an aggregate function has the right to
-execute the specified transition functions</para>
-<para>
-This oversight made it possible to bypass denial of EXECUTE
-permission on a function.</para></listitem>
-<listitem><para>Fix security and 64-bit issues in
-contrib/intagg</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Make <command>ALTER TABLE ADD COLUMN</command> enforce domain
-constraints in all cases</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input. This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Improve planning of grouped aggregate queries</para></listitem>
-<listitem><para><command>ROLLBACK TO <replaceable>savepoint</replaceable></command>
-closes cursors created since the savepoint</para></listitem>
-<listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
-<listitem><para>Avoid SHGetSpecialFolderPath() on Windows
-(Magnus)</para></listitem>
-<listitem><para>Fix some problems in running pg_autovacuum as a Windows
-service (Dave Page)</para></listitem>
-<listitem><para>Multiple minor bug fixes in
-pg_dump/pg_restore</para></listitem>
-<listitem><para>Fix ecpg segfault with named structs used in
-typedefs (Michael)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-0">
- <title>Release 8.0</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-01-19</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>
- Microsoft Windows Native Server
- </term>
-
- <listitem>
- <para>
- This is the first <productname>PostgreSQL</productname> release
- to run natively on <trademark class="registered">Microsoft Windows</trademark> as
- a server. It can run as a <productname>Windows</productname> service. This
- release supports NT-based Windows releases like
- <productname>Windows 2000 SP4</productname>, <productname>Windows XP</productname>, and
- <productname>Windows 2003</productname>. Older releases like
- <productname>Windows 95</productname>, <productname>Windows 98</productname>, and
- <productname>Windows ME</productname> are not supported because these operating
- systems do not have the infrastructure to support
- <productname>PostgreSQL</productname>. A separate installer
- project has been created to ease installation on
- <productname>Windows</productname> &mdash; see <ulink
- url="http://www.postgresql.org/ftp/win32/"></ulink>.
- </para>
-
- <para>
- Although tested throughout our release cycle, the Windows port
- does not have the benefit of years of use in production
- environments that <productname>PostgreSQL</productname> has on
- Unix platforms. Therefore it should be treated with the same
- level of caution as you would a new product.
- </para>
-
- <para>
- Previous releases required the Unix emulation toolkit
- <productname>Cygwin</productname> in order to run the server on Windows
- operating systems. <productname>PostgreSQL</productname> has
- supported native clients on Windows for many years.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Savepoints
- </term>
-
- <listitem>
- <para>
- Savepoints allow specific parts of a transaction to be aborted
- without affecting the remainder of the transaction. Prior
- releases had no such capability; there was no way to recover
- from a statement failure within a transaction except by
- aborting the whole transaction. This feature is valuable for
- application writers who require error recovery within a
- complex transaction.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Point-In-Time Recovery
- </term>
-
- <listitem>
- <para>
- In previous releases there was no way to recover from disk
- drive failure except to restore from a previous backup or use
- a standby replication server. Point-in-time recovery allows
- continuous backup of the server. You can recover either to
- the point of failure or to some transaction in the past.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Tablespaces
- </term>
-
- <listitem>
- <para>
- Tablespaces allow administrators to select different file systems
- for storage of individual tables, indexes, and databases.
- This improves performance and control over disk space
- usage. Prior releases used <application>initlocation</application> and
- manual symlink management for such tasks.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Improved Buffer Management, <command>CHECKPOINT</command>,
- <command>VACUUM</command>
- </term>
-
- <listitem>
- <para>
- This release has a more intelligent buffer replacement strategy,
- which will make better use of available shared buffers and
- improve performance. The performance impact of vacuum and
- checkpoints is also lessened.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Change Column Types
- </term>
-
- <listitem>
- <para>
- A column's data type can now be changed with <command>ALTER
- TABLE</command>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New Perl Server-Side Language
- </term>
-
- <listitem>
- <para>
- A new version of the <application>plperl</application> server-side language now
- supports a persistent shared storage area, triggers, returning records
- and arrays of records, and SPI calls to access the database.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Comma-separated-value (CSV) support in <command>COPY</command>
- </term>
-
- <listitem>
- <para>
- <command>COPY</command> can now read and write
- comma-separated-value files. It has the flexibility to
- interpret nonstandard quoting and separation characters too.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect2>
-
- <sect2>
- <title>Migration to Version 8.0</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is
- required for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- In <option>READ COMMITTED</option> serialization mode, volatile functions
- now see the results of concurrent transactions committed up to the
- beginning of each statement within the function, rather than up to the
- beginning of the interactive command that called the function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Functions declared <option>STABLE</option> or <option>IMMUTABLE</option> always
- use the snapshot of the calling query, and therefore do not see the
- effects of actions taken after the calling query starts, whether in
- their own transaction or other transactions. Such a function must be
- read-only, too, meaning that it cannot use any SQL commands other than
- <command>SELECT</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Nondeferred <option>AFTER</option> triggers are now fired immediately
- after completion of the triggering query, rather than upon
- finishing the current interactive command. This makes a
- difference when the triggering query occurred within a function:
- the trigger is invoked before the function proceeds to its next
- operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameters <varname>virtual_host</varname> and
- <varname>tcpip_socket</varname> have been replaced with a more general
- parameter <varname>listen_addresses</varname>. Also, the server now listens on
- <literal>localhost</literal> by default, which eliminates the need for the
- <literal>-i</literal> postmaster switch in many scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameters <varname>SortMem</varname> and
- <varname>VacuumMem</varname> have been renamed to <varname>work_mem</varname>
- and <varname>maintenance_work_mem</varname> to better reflect their
- use. The original names are still supported in
- <command>SET</command> and <command>SHOW</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameters <varname>log_pid</varname>,
- <varname>log_timestamp</varname>, and <varname>log_source_port</varname> have been
- replaced with a more general parameter <varname>log_line_prefix</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameter <varname>syslog</varname> has been
- replaced with a more logical <varname>log_destination</varname> variable to
- control the log output destination.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameter <varname>log_statement</varname> has been
- changed so it can selectively log just database modification or
- data definition statements. Server configuration parameter
- <varname>log_duration</varname> now prints only when <varname>log_statement</varname>
- prints the query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameter <varname>max_expr_depth</varname> parameter has
- been replaced with <varname>max_stack_depth</varname> which measures the
- physical stack size rather than the expression nesting depth. This
- helps prevent session termination due to stack overflow caused by
- recursive functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <function>length()</function> function no longer counts trailing spaces in
- <type>CHAR(n)</type> values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Casting an integer to <type>BIT(N)</type> selects the rightmost N bits of the
- integer, not the leftmost N bits as before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updating an element or slice of a NULL array value now produces
- a nonnull array result, namely an array containing
- just the assigned-to positions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Syntax checking of array input values has been tightened up
- considerably. Junk that was previously allowed in odd places with
- odd results now causes an error. Empty-string element values
- must now be written as <literal>""</literal>, rather than writing nothing.
- Also changed behavior with respect to whitespace surrounding
- array elements: trailing whitespace is now ignored, for symmetry
- with leading whitespace (which has always been ignored).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overflow in integer arithmetic operations is now detected and
- reported as an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The arithmetic operators associated with the single-byte
- <type>"char"</type> data type have been removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <function>extract()</function> function (also called
- <function>date_part</function>) now returns the proper year for BC dates.
- It previously returned one less than the correct year. The
- function now also returns the proper values for millennium and
- century.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <type>CIDR</type> values now must have their nonmasked bits be zero.
- For example, we no longer allow
- <literal>204.248.199.1/31</literal> as a <type>CIDR</type> value. Such
- values should never have been accepted by
- <productname>PostgreSQL</productname> and will now be rejected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>EXECUTE</command> now returns a completion tag that
- matches the executed statement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>psql</application>'s <command>\copy</command> command now reads or
- writes to the query's <literal>stdin/stdout</literal>, rather than
- <application>psql</application>'s <literal>stdin/stdout</literal>. The previous
- behavior can be accessed via new
- <option>pstdin</option>/<option>pstdout</option> parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The JDBC client interface has been removed from the core
- distribution, and is now hosted at <ulink url=
- "http://jdbc.postgresql.org"></ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The Tcl client interface has also been removed. There are several
- Tcl interfaces now hosted at <ulink url=
- "http://gborg.postgresql.org"></ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The server now uses its own time zone database, rather than the
- one supplied by the operating system. This will provide consistent
- behavior across all platforms. In most cases, there should be
- little noticeable difference in time zone behavior, except that
- the time zone names used by <command>SET</command>/<command>SHOW</command>
- <varname>TimeZone</varname> might be different from what your platform provides.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>Configure</application>'s threading option no longer requires
- users to run tests or edit configuration files; threading options
- are now detected automatically.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Now that tablespaces have been implemented,
- <application>initlocation</application> has been removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The API for user-defined GiST indexes has been changed. The
- Union and PickSplit methods are now passed a pointer to a
- special <structname>GistEntryVector</structname> structure,
- rather than a <type>bytea</type>.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Deprecated Features</title>
-
- <para>
- Some aspects of <productname>PostgreSQL</productname>'s behavior
- have been determined to be suboptimal. For the sake of backward
- compatibility these have not been removed in 8.0, but they are
- considered deprecated and will be removed in the next major
- release.
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- The 8.1 release will remove the <function>to_char()</function> function
- for intervals.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The server now warns of empty strings passed to
- <type>oid</type>/<type>float4</type>/<type>float8</type> data
- types, but continues to interpret them as zeroes as before.
- In the next major release, empty strings will be considered
- invalid input for these data types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- By default, tables in <productname>PostgreSQL</productname> 8.0
- and earlier are created with <type>OID</type>s. In the next release,
- this will <emphasis>not</emphasis> be the case: to create a table
- that contains <type>OID</type>s, the <option>WITH OIDS</option> clause must
- be specified or the <varname>default_with_oids</varname>
- configuration parameter must be set. Users are encouraged to
- explicitly specify <option>WITH OIDS</option> if their tables
- require OIDs for compatibility with future releases of
- <productname>PostgreSQL</productname>.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- release 8.0 and the previous major release.
- </para>
-
- <sect3>
- <title>Performance Improvements</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support cross-data-type index usage (Tom)
- </para>
- <para>
- Before this change, many queries would not use an index if the data
- types did not match exactly. This improvement makes index usage more
- intuitive and consistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New buffer replacement strategy that improves caching (Jan)
- </para>
- <para>
- Prior releases used a least-recently-used (LRU) cache to keep
- recently referenced pages in memory. The LRU algorithm
- did not consider the number of times a specific cache entry was
- accessed, so large table scans could force out useful cache pages.
- The new cache algorithm uses four separate lists to track most
- recently used and most frequently used cache pages and dynamically
- optimize their replacement based on the work load. This should
- lead to much more efficient use of the shared buffer cache.
- Administrators who have tested shared buffer sizes in the past
- should retest with this new cache replacement policy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add subprocess to write dirty buffers periodically to reduce
- checkpoint writes (Jan)
- </para>
- <para>
- In previous releases, the checkpoint process, which runs every few
- minutes, would write all dirty buffers to the operating system's
- buffer cache then flush all dirty operating system buffers to
- disk. This resulted in a periodic spike in disk usage that often
- hurt performance. The new code uses a background writer to trickle
- disk writes at a steady pace so checkpoints have far fewer dirty
- pages to write to disk. Also, the new code does not issue a global
- <function>sync()</function> call, but instead <function>fsync()</function>s just
- the files written since the last checkpoint. This should improve
- performance and minimize degradation during checkpoints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to prolong vacuum to reduce performance impact (Jan)
- </para>
- <para>
- On busy systems, <command>VACUUM</command> performs many I/O
- requests which can hurt performance for other users. This
- release allows you to slow down <command>VACUUM</command> to
- reduce its impact on other users, though this increases the
- total duration of <command>VACUUM</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
- </para>
- <para>
- This improves the way indexes are scanned when many duplicate
- values exist in the index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use dynamically-generated table size estimates while planning (Tom)
- </para>
- <para>
- Formerly the planner estimated table sizes using the values seen
- by the last <command>VACUUM</command> or <command>ANALYZE</command>,
- both as to physical table size (number of pages) and number of rows.
- Now, the current physical table size is obtained from the kernel,
- and the number of rows is estimated by multiplying the table size
- by the row density (rows per page) seen by the last
- <command>VACUUM</command> or <command>ANALYZE</command>. This should
- produce more reliable estimates in cases where the table size has
- changed significantly since the last housekeeping command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improved index usage with <literal>OR</literal> clauses (Tom)
- </para>
- <para>
- This allows the optimizer to use indexes in statements with many OR
- clauses that would not have been indexed in the past. It can also use
- multi-column indexes where the first column is specified and the second
- column is part of an <literal>OR</literal> clause.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve matching of partial index clauses (Tom)
- </para>
- <para>
- The server is now smarter about using partial indexes in queries
- involving complex <option>WHERE</option> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of the GEQO optimizer (Tom)
- </para>
- <para>
- The GEQO optimizer is used to plan queries involving many tables (by
- default, twelve or more). This release speeds up the way queries are
- analyzed to decrease time spent in optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Miscellaneous optimizer improvements
- </para>
- <para>
- There is not room here to list all the minor improvements made, but
- numerous special cases work better than in prior releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve lookup speed for C functions (Tom)
- </para>
- <para>
- This release uses a hash table to lookup information for dynamically
- loaded C functions. This improves their speed so they perform nearly as
- quickly as functions that are built into the server executable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add type-specific <command>ANALYZE</command> statistics
- capability (Mark Cave-Ayland)
- </para>
- <para>
- This feature allows more flexibility in generating statistics
- for nonstandard data types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>ANALYZE</command> now collects statistics for
- expression indexes (Tom)
- </para>
- <para>
- Expression indexes (also called functional indexes) allow users to
- index not just columns but the results of expressions and function
- calls. With this release, the optimizer can gather and use statistics
- about the contents of expression indexes. This will greatly improve
- the quality of planning for queries in which an expression index is
- relevant.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New two-stage sampling method for <command>ANALYZE</command>
- (Manfred Koizar)
- </para>
- <para>
- This gives better statistics when the density of valid rows is very
- different in different regions of a table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up <command>TRUNCATE</command> (Tom)
- </para>
- <para>
- This buys back some of the performance loss observed in 7.4, while still
- keeping <command>TRUNCATE</command> transaction-safe.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Server Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add WAL file archiving and point-in-time recovery (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add tablespaces so admins can control disk layout (Gavin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a built-in log rotation program (Andreas Pflug)
- </para>
- <para>
- It is now possible to log server messages conveniently without
- relying on either <application>syslog</application> or an external log
- rotation program.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new read-only server configuration parameters to show server
- compile-time settings: <varname>block_size</varname>,
- <varname>integer_datetimes</varname>, <varname>max_function_args</varname>,
- <varname>max_identifier_length</varname>, <varname>max_index_keys</varname> (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make quoting of <literal>sameuser</literal>, <literal>samegroup</literal>, and
- <literal>all</literal> remove special meaning of these terms in
- <filename>pg_hba.conf</filename> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use clearer IPv6 name <literal>::1/128</literal> for
- <literal>localhost</literal> in default <filename>pg_hba.conf</filename> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use CIDR format in <filename>pg_hba.conf</filename> examples (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename server configuration parameters <varname>SortMem</varname> and
- <varname>VacuumMem</varname> to <varname>work_mem</varname> and
- <varname>maintenance_work_mem</varname> (Old names still supported) (Tom)
- </para>
- <para>
- This change was made to clarify that bulk operations such as index and
- foreign key creation use <varname>maintenance_work_mem</varname>, while
- <varname>work_mem</varname> is for workspaces used during query execution.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow logging of session disconnections using server configuration
- <varname>log_disconnections</varname> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new server configuration parameter <varname>log_line_prefix</varname> to
- allow control of information emitted in each log line (Andrew)
- </para>
- <para>
- Available information includes user name, database name, remote IP
- address, and session start time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove server configuration parameters <varname>log_pid</varname>,
- <varname>log_timestamp</varname>, <varname>log_source_port</varname>; functionality
- superseded by <varname>log_line_prefix</varname> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Replace the <varname>virtual_host</varname> and <varname>tcpip_socket</varname>
- parameters with a unified <varname>listen_addresses</varname> parameter
- (Andrew, Tom)
- </para>
- <para>
- <varname>virtual_host</varname> could only specify a single IP address to
- listen on. <varname>listen_addresses</varname> allows multiple addresses
- to be specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Listen on localhost by default, which eliminates the need for the
- <option>-i</option> postmaster switch in many scenarios (Andrew)
- </para>
- <para>
- Listening on localhost (<literal>127.0.0.1</literal>) opens no new
- security holes but allows configurations like Windows and JDBC,
- which do not support local sockets, to work without special
- adjustments.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>syslog</varname> server configuration parameter, and add more
- logical <varname>log_destination</varname> variable to control log output
- location (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change server configuration parameter <varname>log_statement</varname> to take
- values <varname>all</varname>, <varname>mod</varname>, <varname>ddl</varname>, or
- <varname>none</varname> to select which queries are logged (Bruce)
- </para>
- <para>
- This allows administrators to log only data definition changes or
- only data modification statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Some logging-related configuration parameters could formerly be adjusted
- by ordinary users, but only in the <quote>more verbose</quote> direction.
- They are now treated more strictly: only superusers can set them.
- However, a superuser can use <command>ALTER USER</command> to provide per-user
- settings of these values for non-superusers. Also, it is now possible
- for superusers to set values of superuser-only configuration parameters
- via <literal>PGOPTIONS</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow configuration files to be placed outside the data directory (mlw)
- </para>
- <para>
- By default, configuration files are kept in the cluster's top directory.
- With this addition, configuration files can be placed outside the
- data directory, easing administration.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Plan prepared queries only when first executed so constants can be
- used for statistics (Oliver Jowett)
- </para>
- <para>
- Prepared statements plan queries once and execute them many
- times. While prepared queries avoid the overhead of re-planning
- on each use, the quality of the plan suffers from not knowing the exact
- parameters to be used in the query. In this release, planning of
- unnamed prepared statements is delayed until the first execution,
- and the actual parameter values of that execution are used as
- optimization hints. This allows use of out-of-line parameter passing
- without incurring a performance penalty.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>DECLARE CURSOR</command> to take parameters
- (Oliver Jowett)
- </para>
- <para>
- It is now useful to issue <command>DECLARE CURSOR</command> in a
- <function>Parse</function> message with parameters. The parameter values
- sent at <function>Bind</function> time will be substituted into the
- execution of the cursor's query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash joins and aggregates of <type>inet</type> and
- <type>cidr</type> data types (Tom)
- </para>
- <para>
- Release 7.4 handled hashing of mixed <type>inet</type> and
- <type>cidr</type> values incorrectly. (This bug did not exist
- in prior releases because they wouldn't try to hash either
- data type.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <varname>log_duration</varname> print only when <varname>log_statement</varname>
- prints the query (Ed L.)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Query Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add savepoints (nested transactions) (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unsupported isolation levels are now accepted and promoted to the
- nearest supported level (Peter)
- </para>
- <para>
- The SQL specification states that if a database doesn't support a
- specific isolation level, it should use the next more restrictive level.
- This change complies with that recommendation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>BEGIN WORK</command> to specify transaction
- isolation levels like <command>START TRANSACTION</command> does
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix table permission checking for cases in which rules generate
- a query type different from the originally submitted query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
- David Fetter)
- </para>
- <para>
- In previous releases, because single quotes had to be used to
- quote a function's body, the use of single quotes inside the
- function text required use of two single quotes or other error-prone
- notations. With this release we add the ability to use "dollar
- quoting" to quote a block of text. The ability to use different
- quoting delimiters at different nesting levels greatly simplifies
- the task of quoting correctly, especially in complex functions.
- Dollar quoting can be used anywhere quoted text is needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>CASE val WHEN compval1 THEN ...</literal> evaluate <literal>val</literal> only once (Tom)
- </para>
- <para>
- <option>CASE</option> no longer evaluates the tested expression multiple
- times. This has benefits when the expression is complex or is
- volatile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Test <option>HAVING</option> before computing target list of an
- aggregate query (Tom)
- </para>
- <para>
- Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
- ... GROUP BY ... HAVING SUM(lose) &gt; 0</literal>. This should work but formerly
- could fail with divide-by-zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Replace <varname>max_expr_depth</varname> parameter with
- <varname>max_stack_depth</varname> parameter, measured in kilobytes of stack
- size (Tom)
- </para>
- <para>
- This gives us a fairly bulletproof defense against crashing due to
- runaway recursive functions. Instead of measuring the depth of expression
- nesting, we now directly measure the size of the execution stack.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow arbitrary row expressions (Tom)
- </para>
- <para>
- This release allows SQL expressions to contain arbitrary composite
- types, that is, row values. It also allows functions to more easily
- take rows as arguments and return row values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <option>LIKE</option>/<option>ILIKE</option> to be used as the operator
- in row and subselect comparisons (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid locale-specific case conversion of basic ASCII letters in
- identifiers and keywords (Tom)
- </para>
- <para>
- This solves the <quote>Turkish problem</quote> with mangling of words
- containing <literal>I</literal> and <literal>i</literal>. Folding of characters
- outside the 7-bit-ASCII set is still locale-aware.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve syntax error reporting (Fabien, Tom)
- </para>
- <para>
- Syntax error reports are more useful than before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>EXECUTE</command> to return a completion tag
- matching the executed statement (Kris Jurka)
- </para>
- <para>
- Previous releases return an <command>EXECUTE</command> tag for
- any <command>EXECUTE</command> call. In this release, the tag
- returned will reflect the command executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting <option>NATURAL CROSS JOIN</option> in rule listings (Tom)
- </para>
- <para>
- Such a clause makes no logical sense, but in some cases the rule
- decompiler formerly produced this syntax.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Object Manipulation Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <command>COMMENT ON</command> for casts, conversions, languages,
- operator classes, and large objects (Christopher)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new server configuration parameter <varname>default_with_oids</varname> to
- control whether tables are created with <type>OID</type>s by default (Neil)
- </para>
- <para>
- This allows administrators to control whether <command>CREATE
- TABLE</command> commands create tables with or without <type>OID</type>
- columns by default. (Note: the current factory default setting for
- <varname>default_with_oids</varname> is <literal>TRUE</literal>, but the default
- will become <literal>FALSE</literal> in future releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>WITH</option> / <option>WITHOUT OIDS</option> clause to
- <command>CREATE TABLE AS</command> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER TABLE DROP COLUMN</command> to drop an <type>OID</type>
- column (<command>ALTER TABLE SET WITHOUT OIDS</command> still works)
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow composite types as table columns (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER ... ADD COLUMN</command> with defaults and
- <option>NOT NULL</option> constraints; works per SQL spec (Rod)
- </para>
- <para>
- It is now possible for <option>ADD COLUMN</option> to create a column
- that is not initially filled with NULLs, but with a specified
- default value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER COLUMN TYPE</command> to change column's type (Rod)
- </para>
- <para>
- It is now possible to alter a column's data type without dropping
- and re-adding the column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow multiple <command>ALTER</command> actions in a single <command>ALTER
- TABLE</command> command (Rod)
- </para>
- <para>
- This is particularly useful for <command>ALTER</command> commands that
- rewrite the table (which include <option>ALTER COLUMN TYPE</option> and
- <option>ADD COLUMN</option> with a default). By grouping
- <command>ALTER</command> commands together, the table need be rewritten
- only once.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
- columns (Tom)
- </para>
- <para>
- This falls out from the new capability of specifying defaults for new
- columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow changing the owners of aggregates, conversions, databases,
- functions, operators, operator classes, schemas, types, and tablespaces
- (Christopher, Euler Taveira de Oliveira)
- </para>
- <para>
- Previously this required modifying the system tables directly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow temporary object creation to be limited to <option>SECURITY
- DEFINER</option> functions (Sean Chittenden)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</option> (Christopher)
- </para>
- <para>
- Prior to this release, there was no way to clear an auto-cluster
- specification except to modify the system tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Constraint/Index/<type>SERIAL</type> names are now
- <replaceable>table_column_type</replaceable>
- with numbers appended to guarantee uniqueness within the schema
- (Tom)
- </para>
- <para>
- The SQL specification states that such names should be unique
- within a schema.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_get_serial_sequence()</function> to return a
- <type>SERIAL</type> column's sequence name (Christopher)
- </para>
- <para>
- This allows automated scripts to reliably find the <type>SERIAL</type>
- sequence name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn when primary/foreign key data type mismatch requires costly lookup
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <command>ALTER INDEX</command> command to allow moving of indexes
- between tablespaces (Gavin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER TABLE OWNER</command> change dependent sequence
- ownership too (Alvaro)
- </para>
- </listitem>
-
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Utility Command Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <command>CREATE SCHEMA</command> to create triggers,
- indexes, and sequences (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>ALSO</option> keyword to <command>CREATE RULE</command> (Fabien
- Coelho)
- </para>
- <para>
- This allows <option>ALSO</option> to be added to rule creation to contrast it with
- <option>INSTEAD</option> rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>NOWAIT</option> option to <command>LOCK</command> (Tatsuo)
- </para>
- <para>
- This allows the <command>LOCK</command> command to fail if it
- would have to wait for the requested lock.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>COPY</command> to read and write
- comma-separated-value (CSV) files (Andrew, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Generate error if the <command>COPY</command> delimiter and NULL
- string conflict (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>GRANT</command>/<command>REVOKE</command> behavior
- follows the SQL spec more closely
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid locking conflict between <command>CREATE INDEX</command>
- and <command>CHECKPOINT</command> (Tom)
- </para>
- <para>
- In 7.3 and 7.4, a long-running B-tree index build could block concurrent
- <command>CHECKPOINT</command>s from completing, thereby causing WAL bloat because the
- WAL log could not be recycled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Database-wide <command>ANALYZE</command> does not hold locks
- across tables (Tom)
- </para>
- <para>
- This reduces the potential for deadlocks against other backends
- that want exclusive locks on tables. To get the benefit of this
- change, do not execute database-wide <command>ANALYZE</command>
- inside a transaction block (<command>BEGIN</command> block); it
- must be able to commit and start a new transaction for each
- table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>REINDEX</command> does not exclusively lock the index's
- parent table anymore
- </para>
- <para>
- The index itself is still exclusively locked, but readers of the
- table can continue if they are not using the particular index
- being rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Erase MD5 user passwords when a user is renamed (Bruce)
- </para>
- <para>
- <productname>PostgreSQL</productname> uses the user name as salt
- when encrypting passwords via MD5. When a user's name is changed,
- the salt will no longer match the stored MD5 password, so the
- stored password becomes useless. In this release a notice is
- generated and the password is cleared. A new password must then
- be assigned if the user is to be able to log in with a password.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <application>pg_ctl</application> <option>kill</option> option for Windows (Andrew)
- </para>
- <para>
- Windows does not have a <literal>kill</literal> command to send signals to
- backends so this capability was added to <application>pg_ctl</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Information schema improvements
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--pwfile</option> option to
- <application>initdb</application> so the initial password can be
- set by GUI tools (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect locale/encoding mismatch in
- <application>initdb</application> (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>register</option> command to <application>pg_ctl</application> to
- register Windows operating system service (Dave Page)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Data Type and Function Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- More complete support for composite types (row types) (Tom)
- </para>
- <para>
- Composite values can be used in many places where only scalar values
- worked before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject nonrectangular array values as erroneous (Joe)
- </para>
- <para>
- Formerly, <function>array_in</function> would silently build a
- surprising result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overflow in integer arithmetic operations is now detected (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The arithmetic operators associated with the single-byte
- <type>"char"</type> data type have been removed.
- </para>
- <para>
- Formerly, the parser would select these operators in many situations
- where an <quote>unable to select an operator</quote> error would be more
- appropriate, such as <literal>null * null</literal>. If you actually want
- to do arithmetic on a <type>"char"</type> column, you can cast it to
- integer explicitly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Syntax checking of array input values considerably tightened up (Joe)
- </para>
- <para>
- Junk that was previously allowed in odd places with odd results
- now causes an <literal>ERROR</literal>, for example, non-whitespace
- after the closing right brace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Empty-string array element values must now be written as
- <literal>""</literal>, rather than writing nothing (Joe)
- </para>
- <para>
- Formerly, both ways of writing an empty-string element value were
- allowed, but now a quoted empty string is required. The case where
- nothing at all appears will probably be considered to be a NULL
- element value in some future release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Array element trailing whitespace is now ignored (Joe)
- </para>
- <para>
- Formerly leading whitespace was ignored, but trailing whitespace
- between an element value and the delimiter or right brace was
- significant. Now trailing whitespace is also ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Emit array values with explicit array bounds when lower bound is not one
- (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <literal>YYYY-monthname-DD</literal> as a date string (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>netmask</function> and <function>hostmask</function> functions
- return maximum-length mask length (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change factorial function to return <type>numeric</type> (Gavin)
- </para>
- <para>
- Returning <type>numeric</type> allows the factorial function to
- work for a wider range of input values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>to_char</function>/<function>to_date()</function> date conversion
- improvements (Kurt Roeckx, Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>length()</function> disregard trailing spaces in
- <type>CHAR(n)</type> (Gavin)
- </para>
- <para>
- This change was made to improve consistency: trailing spaces are
- semantically insignificant in <type>CHAR(n)</type> data, so they
- should not be counted by <function>length()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn about empty string being passed to
- <type>OID</type>/<type>float4</type>/<type>float8</type> data types (Neil)
- </para>
- <para>
- 8.1 will throw an error instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow leading or trailing whitespace in
- <type>int2</type>/<type>int4</type>/<type>int8</type>/<type>float4</type>/<type>float8</type>
- input routines
- (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better support for IEEE <literal>Infinity</literal> and <literal>NaN</literal>
- values in <type>float4</type>/<type>float8</type> (Neil)
- </para>
- <para>
- These should now work on all platforms that support IEEE-compliant
- floating point arithmetic.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>week</option> option to <function>date_trunc()</function> (Robert Creager)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char</function> for <literal>1 BC</literal>
- (previously it returned <literal>1 AD</literal>) (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>date_part(year)</function> for BC dates (previously it
- returned one less than the correct year) (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>date_part()</function> to return the proper millennium and
- century (Fabien Coelho)
- </para>
- <para>
- In previous versions, the century and millennium results had a wrong
- number and started in the wrong year, as compared to standard
- reckoning of such things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>ceiling()</function> as an alias for <function>ceil()</function>,
- and <function>power()</function> as an alias for <function>pow()</function> for
- standards compliance (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <function>ln()</function>, <function>log()</function>,
- <function>power()</function>, and <function>sqrt()</function> to emit the correct
- <literal>SQLSTATE</literal> error codes for certain error conditions, as
- specified by SQL:2003 (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>width_bucket()</function> function as defined by SQL:2003 (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>generate_series()</function> functions to simplify working
- with numeric sets (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>upper/lower/initcap()</function> functions to work with
- multibyte encodings (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add boolean and bitwise integer <option>AND</option>/<option>OR</option>
- aggregates (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New session information functions to return network addresses for client
- and server (Sean Chittenden)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function to determine the area of a closed path (Sean Chittenden)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function to send cancel request to other backends (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <type>interval</type> plus <type>datetime</type> operators (Tom)
- </para>
- <para>
- The reverse ordering, <type>datetime</type> plus <type>interval</type>,
- was already supported, but both are required by the SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Casting an integer to <type>BIT(N)</type> selects the rightmost N bits
- of the integer
- (Tom)
- </para>
- <para>
- In prior releases, the leftmost N bits were selected, but this was
- deemed unhelpful, not to mention inconsistent with casting from bit
- to int.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <type>CIDR</type> values to have all nonmasked bits be zero
- (Kevin Brintnall)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- In <literal>READ COMMITTED</literal> serialization mode, volatile functions
- now see the results of concurrent transactions committed up to the
- beginning of each statement within the function, rather than up to the
- beginning of the interactive command that called the function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Functions declared <literal>STABLE</literal> or <literal>IMMUTABLE</literal> always
- use the snapshot of the calling query, and therefore do not see the
- effects of actions taken after the calling query starts, whether in
- their own transaction or other transactions. Such a function must be
- read-only, too, meaning that it cannot use any SQL commands other than
- <command>SELECT</command>. There is a considerable performance gain from
- declaring a function <literal>STABLE</literal> or <literal>IMMUTABLE</literal>
- rather than <literal>VOLATILE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Nondeferred <option>AFTER</option> triggers are now fired immediately
- after completion of the triggering query, rather than upon
- finishing the current interactive command. This makes a difference
- when the triggering query occurred within a function: the trigger
- is invoked before the function proceeds to its next operation. For
- example, if a function inserts a new row into a table, any
- nondeferred foreign key checks occur before proceeding with the
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow function parameters to be declared with names (Dennis Bj&ouml;rklund)
- </para>
- <para>
- This allows better documentation of functions. Whether the names
- actually do anything depends on the specific function language
- being used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bj&ouml;rklund)
- </para>
- <para>
- This basically creates an automatic alias for each named parameter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
- </para>
- <para>
- This allows us to catch simple syntax errors sooner.
- </para>
- </listitem>
-
- <listitem>
- <para>
- More support for composite types (row and record variables) in PL/pgSQL
- </para>
- <para>
- For example, it now works to pass a rowtype variable to another function
- as a single variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Default values for PL/pgSQL variables can now reference previously
- declared variables
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve parsing of PL/pgSQL FOR loops (Tom)
- </para>
- <para>
- Parsing is now driven by presence of <literal>".."</literal> rather than
- data type of <option>FOR</option> variable. This makes no difference for
- correct functions, but should result in more understandable error
- messages when a mistake is made.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Tcl, SPI commands are now run in subtransactions. If an error
- occurs, the subtransaction is cleaned up and the error is reported
- as an ordinary Tcl error, which can be trapped with <literal>catch</literal>.
- Formerly, it was not possible to catch such errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <command>ELSEIF</command> in PL/pgSQL (Neil)
- </para>
- <para>
- Previously PL/pgSQL only allowed <command>ELSIF</command>, but many people
- are accustomed to spelling this keyword <command>ELSEIF</command>.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title><application>psql</application> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Improve <application>psql</application> information display about database
- objects (Christopher)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> to display group membership in
- <command>\du</command> and <command>\dg</command> (Markus Bertheau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <application>psql</application> <command>\dn</command> from showing
- temporary schemas (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> to handle tilde user expansion for file
- names (Zach Irmen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> to display fancy prompts, including
- color, via <application>readline</application> (Reece Hart, Chet Ramey)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>psql</application> <command>\copy</command> match <command>COPY</command> command syntax
- fully (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show the location of syntax errors (Fabien Coelho, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>CLUSTER</command> information to <application>psql</application>
- <command>\d</command> display
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>psql</application> <command>\copy stdin/stdout</command> to read
- from command input/output (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>pstdin</option>/<option>pstdout</option> to read from
- <application>psql</application>'s <literal>stdin</literal>/<literal>stdout</literal> (Mark
- Feit)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add global <application>psql</application> configuration file, <filename>psqlrc.sample</filename>
- (Bruce)
- </para>
- <para>
- This allows a central file where global <application>psql</application> startup commands can
- be stored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <application>psql</application> <command>\d+</command> indicate if the table
- has an <type>OID</type> column (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, use binary mode in <application>psql</application> when reading files so control-Z
- is not seen as end-of-file
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <command>\dn+</command> show permissions and description for schemas (Dennis
- Bj&ouml;rklund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow boolean settings to be set using upper or lower case (Michael Paesold)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title><application>pg_dump</application> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Use dependency information to improve the reliability of
- <application>pg_dump</application> (Tom)
- </para>
- <para>
- This should solve the longstanding problems with related objects
- sometimes being dumped in the wrong order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <application>pg_dump</application> output objects in alphabetical order if possible (Tom)
- </para>
- <para>
- This should make it easier to identify changes between
- dump files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_restore</application> to ignore some SQL errors (Fabien Coelho)
- </para>
- <para>
- This makes <application>pg_restore</application>'s behavior similar to the
- results of feeding a <application>pg_dump</application> output script to
- <application>psql</application>. In most cases, ignoring errors and plowing
- ahead is the most useful thing to do. Also added was a pg_restore
- option to give the old behavior of exiting on an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>pg_restore</application> <option>-l</option> display now includes
- objects' schema names
- </para>
- </listitem>
-
- <listitem>
- <para>
- New begin/end markers in <application>pg_dump</application> text output (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add start/stop times for
- <application>pg_dump</application>/<application>pg_dumpall</application> in verbose mode
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow most <application>pg_dump</application> options in
- <application>pg_dumpall</application> (Christopher)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <application>pg_dump</application> use <command>ALTER OWNER</command> rather
- than <command>SET SESSION AUTHORIZATION</command> by default
- (Christopher)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>libpq Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Make libpq's <option>SIGPIPE</option> handling thread-safe (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>PQmbdsplen()</function> which returns the display length
- of a character (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add thread locking to <application>SSL</application> and
- <application>Kerberos</application> connections (Manfred Spraul)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>PQoidValue()</function>, <function>PQcmdTuples()</function>, and
- <function>PQoidStatus()</function> to work on <command>EXECUTE</command>
- commands (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>PQserverVersion()</function> to provide more convenient
- access to the server version number (Greg Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>PQprepare/PQsendPrepared()</function> functions to support
- preparing statements without necessarily specifying the data types
- of their parameters (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Many ECPG improvements, including <command>SET DESCRIPTOR</command> (Michael)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Source Code Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shell script commands converted to C versions for Windows support (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create an extension makefile framework (Fabien Coelho, Peter)
- </para>
- <para>
- This simplifies the task of building extensions outside the original
- source tree.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support relocatable installations (Bruce)
- </para>
- <para>
- Directory paths for installed files (such as the
- <filename>/share</filename> directory) are now computed relative to the
- actual location of the executables, so that an installation tree
- can be moved to another place without reconfiguring and
- rebuilding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>--with-docdir</option> to choose installation location of documentation; also
- allow <option>--infodir</option> (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--without-docdir</option> to prevent installation of documentation (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Upgrade to <application>DocBook</application> V4.2 SGML (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <literal>PostgreSQL</literal> <application>CVS</application> tag (Marc)
- </para>
- <para>
- This was done to make it easier for organizations to manage their
- own copies of the <productname>PostgreSQL</productname>
- <application>CVS</application> repository. File version stamps from the master
- repository will not get munged by checking into or out of a copied
- repository.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clarify locking code (Manfred Koizar)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Buffer manager cleanup (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Decouple platform tests from CPU spinlock code (Bruce, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add inlined test-and-set code on PA-RISC for <application>gcc</application>
- (ViSolve, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve i386 spinlock code (Manfred Spraul)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up spinlock assembly code to avoid warnings from newer
- <application>gcc</application> releases (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove JDBC from source tree; now a separate project
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the libpgtcl client interface; now a separate project
- </para>
- </listitem>
-
- <listitem>
- <para>
- More accurately estimate memory and file descriptor usage (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improvements to the macOS startup scripts (Ray A.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <function>fsync()</function> test program (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Major documentation improvements (Neil, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>pg_encoding</application>; not needed
- anymore
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>pg_id</application>; not needed anymore
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>initlocation</application>; not needed
- anymore
- </para>
- </listitem>
-
- <listitem>
- <para>
- Auto-detect thread flags (no more manual testing) (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use Olson's public domain <application>timezone</application> library (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- With threading enabled, use thread flags on Unixware for
- backend executables too (Bruce)
- </para>
- <para>
- Unixware cannot mix threaded and nonthreaded object files in the
- same executable, so everything must be compiled as threaded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>psql</application> now uses a <application>flex</application>-generated
- lexical analyzer to process command strings
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reimplement the linked list data structure used throughout the
- backend (Neil)
- </para>
- <para>
- This improves performance by allowing list append and length
- operations to be more efficient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow dynamically loaded modules to create their own server configuration
- parameters (Thomas Hallgren)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New Brazilian version of FAQ (Euler Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add French FAQ (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <application>pgevent</application> for Windows logging
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make libpq and ECPG build as proper shared libraries on macOS (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Contrib Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Overhaul of <filename>contrib/dblink</filename> (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>contrib/dbmirror</filename> improvements (Steven Singer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <filename>contrib/xml2</filename> (John Gray, Torchbox)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updated <filename>contrib/mysql</filename>
- </para>
- </listitem>
-
- <listitem>
- <para>
- New version of <filename>contrib/btree_gist</filename> (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <filename>contrib/trgm</filename>, trigram matching for
- <productname>PostgreSQL</productname> (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Many <filename>contrib/tsearch2</filename> improvements (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add double metaphone to <filename>contrib/fuzzystrmatch</filename> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/pg_autovacuum</filename> to run as a Windows service (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add functions to <filename>contrib/dbsize</filename> (Andreas Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed <filename>contrib/pg_logger</filename>: obsoleted by integrated logging
- subprocess
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed <filename>contrib/rserv</filename>: obsoleted by various separate projects
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml
deleted file mode 100644
index 44a30892fdb..00000000000
--- a/doc/src/sgml/release-8.1.sgml
+++ /dev/null
@@ -1,5444 +0,0 @@
-<!-- doc/src/sgml/release-8.1.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-8-1-23">
- <title>Release 8.1.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-12-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.22.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 8.1.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.23</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.18,
- see <xref linkend="release-8-1-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force the default
- <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
- to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
- </para>
-
- <para>
- The default on Linux has actually been <literal>fdatasync</literal> for many
- years, but recent kernel changes caused <productname>PostgreSQL</productname> to
- choose <literal>open_datasync</literal> instead. This choice did not result
- in any performance improvement, and caused outright failures on
- certain filesystems, notably <literal>ext4</literal> with the
- <literal>data=journal</literal> mount option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recovery from base backup when the starting checkpoint WAL record
- is not in the same WAL segment as its redo point (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for detecting register-stack overrun on <literal>IA64</literal>
- (Tom Lane)
- </para>
-
- <para>
- The <literal>IA64</literal> architecture has two hardware stacks. Full
- prevention of stack-overrun failures requires checking both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a check for stack overflow in <function>copyObject()</function> (Tom Lane)
- </para>
-
- <para>
- Certain code paths could crash due to stack overflow given a
- sufficiently complex query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of page splits in temporary GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- It is possible to have a <quote>concurrent</quote> page split in a
- temporary index, if for example there is an open cursor scanning the
- index when an insertion is done. GiST failed to detect this case and
- hence could deliver wrong results when execution of the cursor
- continued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage while <command>ANALYZE</command>'ing complex index
- expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an index that uses a whole-row Var still depends on its table
- (Tom Lane)
- </para>
-
- <para>
- An index declared like <literal>create index i on t (foo(t.*))</literal>
- would not automatically get dropped when its table was dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
- parameters (Tom Lane)
- </para>
-
- <para>
- This avoids a possible crash due to loss of information about the
- expected result rowtype.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane)
- </para>
-
- <para>
- The planner would sometimes attempt to evaluate sub-expressions that
- in fact could never be reached, possibly leading to unexpected errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
- </para>
-
- <para>
- This avoids a failure when <varname>debug_print_parse</varname> is enabled
- and certain types of query are executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of distance from a point to a horizontal
- line segment (Tom Lane)
- </para>
-
- <para>
- This bug affected several different geometric distance-measurement
- operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote>
- expressions to not fail in recursion or error-recovery cases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>cube</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't emit <quote>identifier will be truncated</quote> notices in
- <filename>contrib/dblink</filename> except when creating new connections
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential coredump on missing public key in
- <filename>contrib/pgcrypto</filename> (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010o
- for DST law changes in Fiji and Samoa;
- also historical corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-22">
- <title>Release 8.1.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.21.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.1.X release series in November 2010.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.22</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.18,
- see <xref linkend="release-8-1-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent show_session_authorization() from crashing within autovacuum
- processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against functions returning setof record where not all the
- returned rows are actually of the same rowtype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when hashing a pass-by-reference function result
- (Tao Ma, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid recursion while assigning XIDs to heavily-nested
- subtransactions (Andres Freund, Robert Haas)
- </para>
-
- <para>
- The original coding could result in a crash if there was limited
- stack space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
- which could produce junk early in backend startup (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible data corruption in <command>ALTER TABLE ... SET
- TABLESPACE</command> when archiving is enabled (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
- TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Python, defend against null pointer results from
- <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle connection names longer than
- 62 bytes correctly (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010l
- for DST law changes in Egypt and Palestine; also historical corrections
- for Finland.
- </para>
-
- <para>
- This change also adds new names for two Micronesian timezones:
- Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
- abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
- Pacific/Ponape.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-21">
- <title>Release 8.1.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.20.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.21</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.18,
- see <xref linkend="release-8-1-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite recursion in <application>psql</application> when expanding
- a variable that refers to itself (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010j
- for DST law changes in Argentina, Australian Antarctic, Bangladesh,
- Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
- also historical corrections for Taiwan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-20">
- <title>Release 8.1.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.19.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.20</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.18,
- see <xref linkend="release-8-1-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when trying to recover from a failure in
- subtransaction start (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix server memory leak associated with use of savepoints and a client
- encoding different from server's encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-to-bit-string conversions to handle the first fractional
- byte correctly when the output bit width is wider than the given
- integer by something other than a multiple of 8 bits (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
- report the next WAL segment's name when the end location is exactly at a
- segment boundary (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more cases of temporary-file leakage (Heikki)
- </para>
-
- <para>
- This corrects a problem introduced in the previous minor release.
- One case that failed is when a plpgsql function returning set is
- called within another function's exception handler.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>numericlocale</literal> option to not
- format strings it shouldn't in latex and troff output formats (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix plpgsql failure in one case where a composite column is set to NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>volatile</literal> markings in PL/Python to avoid possible
- compiler-specific misbehavior (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
- memory management (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010e
- for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-19">
- <title>Release 8.1.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.18.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.19</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.18,
- see <xref linkend="release-8-1-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that shared tuple-level locks held by prepared transactions are
- not ignored (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature drop of temporary files used for a cursor that is accessed
- within a subtransaction (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of ownership dependencies during <literal>CREATE OR
- REPLACE FUNCTION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that Perl arrays are properly converted to
- <productname>PostgreSQL</productname> arrays when returned by a set-returning
- PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
- </para>
-
- <para>
- This worked correctly already for non-set-returning functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash in exception processing in PL/Python (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>psql</application>'s flex module is compiled with the correct
- system header definitions (Tom)
- </para>
-
- <para>
- This fixes build failures on platforms where
- <literal>--enable-largefile</literal> causes incompatible changes in the
- generated code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009s
- for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
- Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
- corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-18">
- <title>Release 8.1.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.17.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.18</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you have any hash indexes on <type>interval</type> columns,
- you must <command>REINDEX</command> them after updating to 8.1.18.
- Also, if you are upgrading from a version earlier than 8.1.15,
- see <xref linkend="release-8-1-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of sub-SELECTs appearing in the arguments of
- an outer-level aggregate function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash calculation for data type <type>interval</type> (Tom)
- </para>
-
- <para>
- This corrects wrong results for hash joins on interval values.
- It also changes the contents of hash indexes on interval columns.
- If you have any such indexes, you must <command>REINDEX</command> them
- after updating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
- suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
- </para>
-
- <para>
- It was previously handled as <literal>'th'</literal> (lowercase).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix calculation of distance between a point and a line segment (Tom)
- </para>
-
- <para>
- This led to incorrect results from a number of geometric operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>money</type> data type to work in locales where currency
- amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly round datetime input like
- <literal>00:12:57.9999999999999999999999999999</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix poor choice of page split point in GiST R-tree operator classes
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability issues in plperl initialization (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to not go into an infinite loop if
- <filename>postgresql.conf</filename> is empty (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
- properly handle the maximum number of parameters (twenty) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009l
- for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
- Argentina/San_Luis, Cuba, Jordan (historical correction only),
- Mauritius, Morocco, Palestine, Syria, Tunisia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-17">
- <title>Release 8.1.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-03-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.16.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.17</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.15,
- see <xref linkend="release-8-1-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</emphasis> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</command> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
-
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump when <function>to_char()</function> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix decompilation of <literal>CASE WHEN</literal> with an implicit coercion
- (Tom)
- </para>
-
- <para>
- This mistake could lead to Assert failures in an Assert-enabled build,
- or an <quote>unexpected CASE WHEN clause</quote> error message in other
- cases, when trying to examine or dump a view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
- </para>
-
- <para>
- If <command>CLUSTER</command> or a rewriting variant of <command>ALTER TABLE</command>
- were executed by someone other than the table owner, the
- <structname>pg_type</structname> entry for the table's TOAST table would end up
- marked as owned by that someone. This caused no immediate problems,
- since the permissions on the TOAST rowtype aren't examined by any
- ordinary database operation. However, it could lead to unexpected
- failures if one later tried to drop the role that issued the command
- (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</quote>
- warnings from <application>pg_dump</application> after having done so (in 8.3).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up PL/pgSQL error status variables fully at block exit
- (Ashesh Vashi and Dave Page)
- </para>
-
- <para>
- This is not a problem for PL/pgSQL itself, but the omission could cause
- the PL/pgSQL Debugger to crash while examining the state of a function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-16">
- <title>Release 8.1.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-02-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.15.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.16</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.15,
- see <xref linkend="release-8-1-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix crash in autovacuum (Alvaro)
- </para>
-
- <para>
- The crash occurs only after vacuuming a whole database for
- anti-transaction-wraparound purposes, which means that it occurs
- infrequently and is hard to track down.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of URLs in <function>headline()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of overlength headlines in <function>headline()</function>
- function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible Assert failure or misconversion if an encoding
- conversion is created with the wrong conversion function for the
- specified pair of encodings (Tom, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary locking of small tables in <command>VACUUM</command>
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the contents of a holdable cursor don't depend on the
- contents of TOAST tables (Tom)
- </para>
-
- <para>
- Previously, large field values in a cursor result might be represented
- as TOAST pointers, which would fail if the referenced table got dropped
- before the cursor is read, or if the large value is deleted and then
- vacuumed away. This cannot happen with an ordinary cursor,
- but it could with a cursor that is held past its creating transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix uninitialized variables in <filename>contrib/tsearch2</filename>'s
- <function>get_covers()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application> script to properly report failure when
- unable to obtain linkage information for PL/Perl (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make all documentation reference <literal>pgsql-bugs</literal> and/or
- <literal>pgsql-hackers</literal> as appropriate, instead of the
- now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
- mailing lists (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009a (for
- Kathmandu and historical DST corrections in Switzerland, Cuba)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-15">
- <title>Release 8.1.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-11-03</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.14.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.15</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>. Also, if you were running a previous
- 8.1.X release, it is recommended to <command>REINDEX</command> all GiST
- indexes after the upgrade.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix GiST index corruption due to marking the wrong index entry
- <quote>dead</quote> after a deletion (Teodor)
- </para>
-
- <para>
- This would result in index searches failing to find rows they
- should have found. Corrupted indexes can be fixed with
- <command>REINDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix backend crash when the client encoding cannot represent a localized
- error message (Tom)
- </para>
-
- <para>
- We have addressed similar issues before, but it would still fail if
- the <quote>character has no equivalent</quote> message itself couldn't
- be converted. The fix is to disable localization and send the plain
- ASCII error message when we detect such a situation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when deeply nested functions are invoked from
- a trigger (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-expansion of rule queries when a sub-<literal>SELECT</literal> appears
- in a function call in <literal>FROM</literal>, a multi-row <literal>VALUES</literal>
- list, or a <literal>RETURNING</literal> list (Tom)
- </para>
-
- <para>
- The usual symptom of this problem is an <quote>unrecognized node type</quote>
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an error is reported when a newly-defined PL/pgSQL trigger
- function is invoked as a normal function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible collision of <structfield>relfilenode</structfield> numbers
- when moving a table to another tablespace with <command>ALTER SET
- TABLESPACE</command> (Heikki)
- </para>
-
- <para>
- The command tried to re-use the existing filename, instead of
- picking one that is known unused in the destination directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect tsearch2 headline generation when single query
- item matches first word of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper display of fractional seconds in interval values when
- using a non-ISO datestyle in an <option>--enable-integer-datetimes</option>
- build (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
- behave correctly when the passed tuple and tuple descriptor have
- different numbers of columns (Tom)
- </para>
-
- <para>
- This situation is normal when a table has had columns added or removed,
- but these two functions didn't handle it properly.
- The only likely consequence is an incorrect error indication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s parsing of <command>CREATE ROLE</command> (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008i (for
- DST law changes in Argentina, Brazil, Mauritius, Syria)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-14">
- <title>Release 8.1.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-09-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.13.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.14</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Widen local lock counters from 32 to 64 bits (Tom)
- </para>
-
- <para>
- This responds to reports that the counters could overflow in
- sufficiently long transactions, leading to unexpected <quote>lock is
- already held</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate output of tuples during a GiST index scan (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add checks in executor startup to ensure that the tuples produced by an
- <command>INSERT</command> or <command>UPDATE</command> will match the target table's
- current rowtype (Tom)
- </para>
-
- <para>
- <command>ALTER COLUMN TYPE</command>, followed by re-use of a previously
- cached plan, could produce this type of situation. The check protects
- against data corruption and/or crashes that could ensue.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>AT TIME ZONE</literal> to first try to interpret its timezone
- argument as a timezone abbreviation, and only try it as a full timezone
- name if that fails, rather than the other way around as formerly (Tom)
- </para>
-
- <para>
- The timestamp input functions have always resolved ambiguous zone names
- in this order. Making <literal>AT TIME ZONE</literal> do so as well improves
- consistency, and fixes a compatibility bug introduced in 8.1:
- in ambiguous cases we now behave the same as 8.0 and before did,
- since in the older versions <literal>AT TIME ZONE</literal> accepted
- <emphasis>only</emphasis> abbreviations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix datetime input functions to correctly detect integer overflow when
- running on a 64-bit platform (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of writing very long log messages to syslog (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
- ON</literal> query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner bug with nested sub-select expressions (Tom)
- </para>
-
- <para>
- If the outer sub-select has no direct dependency on the parent query,
- but the inner one does, the outer value might not get recalculated
- for new parent query rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
- boolean results always result in two groups, regardless of the
- expressions' contents (Tom)
- </para>
-
- <para>
- This is very substantially more accurate than the regular <literal>GROUP
- BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
- <literal>IS NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to not fail when a <literal>FOR</literal> loop's target variable
- is a record containing composite-type fields (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
- about the encoding of data sent to or from Tcl (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to work with Python 2.5
- </para>
-
- <para>
- This is a back-port of fixes made during the 8.2 development cycle.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- error reporting after failure to send a SQL command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to properly preserve postmaster
- command-line arguments across a <literal>restart</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008f (for
- DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
- Pakistan, Palestine, and Paraguay)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-13">
- <title>Release 8.1.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-06-12</para>
- </formalpara>
-
- <para>
- This release contains one serious and one minor bug fix over 8.1.12.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.13</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
- </para>
-
- <para>
- Before this fix, a negative constant in a view or rule might be dumped
- as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
- be <literal>(-42)::integer</literal> due to operator precedence rules.
- Usually this would make little difference, but it could interact with
- another recent patch to cause
- <productname>PostgreSQL</productname> to reject what had been a valid
- <command>SELECT DISTINCT</command> view query. Since this could result in
- <application>pg_dump</application> output failing to reload, it is being treated
- as a high-priority fix. The only released versions in which dump
- output is actually incorrect are 8.3.1 and 8.2.7.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER AGGREGATE ... OWNER TO</command> update
- <structname>pg_shdepend</structname> (Tom)
- </para>
-
- <para>
- This oversight could lead to problems if the aggregate was later
- involved in a <command>DROP OWNED</command> or <command>REASSIGN OWNED</command>
- operation.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-12">
- <title>Release 8.1.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>never released</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.11.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.12</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new
- column is correctly checked to see if it's been initialized to all
- non-nulls (Brendan Jurd)
- </para>
-
- <para>
- Previous versions neglected to check this requirement at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <command>CREATE TABLE</command> failure when inheriting the
- <quote>same</quote> constraint from multiple parent relations that
- inherited that constraint from a common ancestor (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix conversions between ISO-8859-5 and other encodings to handle
- Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
- two dots) (Sergey Burladyan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a few datatype input functions
- that were allowing unused bytes in their results to contain
- uninitialized, unpredictable values (Tom)
- </para>
-
- <para>
- This could lead to failures in which two apparently identical literal
- values were not seen as equal, resulting in the parser complaining
- about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal>
- expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case in regular-expression substring matching
- (<literal>substring(<replaceable>string</replaceable> from
- <replaceable>pattern</replaceable>)</literal>) (Tom)
- </para>
-
- <para>
- The problem occurs when there is a match to the pattern overall but
- the user has specified a parenthesized subexpression and that
- subexpression hasn't got a match. An example is
- <literal>substring('foo' from 'foo(bar)?')</literal>.
- This should return NULL, since <literal>(bar)</literal> isn't matched, but
- it was mistakenly returning the whole-pattern match instead (ie,
- <literal>foo</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008c (for
- DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
- Argentina/San_Luis, and Chile)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect result from <application>ecpg</application>'s
- <function>PGTYPEStimestamp_sub()</function> function (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <filename>contrib/xml2</filename>'s
- <function>xpath_table()</function> function when the input query returns a
- NULL value (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s makefile to not override
- <literal>CFLAGS</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
- 4.3 (Tom)
- </para>
-
- <para>
- This problem affects <quote>old style</quote> (V0) C functions that
- return boolean. The fix is already in 8.3, but the need to
- back-patch it was not realized at the time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
- race condition (Tom)
- </para>
-
- <para>
- In rare cases a session that had just executed a
- <command>LISTEN</command> might not get a notification, even though
- one would be expected because the concurrent transaction executing
- <command>NOTIFY</command> was observed to commit later.
- </para>
-
- <para>
- A side effect of the fix is that a transaction that has executed
- a not-yet-committed <command>LISTEN</command> command will not see any
- row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
- should it choose to look; formerly it would have. This behavior
- was never documented one way or the other, but it is possible that
- some applications depend on the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>LISTEN</command> and <command>UNLISTEN</command> within a
- prepared transaction (Tom)
- </para>
-
- <para>
- This was formerly allowed but trying to do it had various unpleasant
- consequences, notably that the originating backend could not exit
- as long as an <command>UNLISTEN</command> remained uncommitted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash when an error occurs during a query using a hash index
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix input of datetime values for February 29 in years BC (Tom)
- </para>
-
- <para>
- The former coding was mistaken about which years were leap years.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unrecognized node type</quote> error in some variants of
- <command>ALTER OWNER</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to correctly extract the postmaster's port
- number from command-line options (Itagaki Takahiro, Tom)
- </para>
-
- <para>
- Previously, <literal>pg_ctl start -w</literal> could try to contact the
- postmaster on the wrong port, leading to bogus reports of startup
- failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fwrapv</option> to defend against possible misoptimization
- in recent <application>gcc</application> versions (Tom)
- </para>
-
- <para>
- This is known to be necessary when building <productname>PostgreSQL</productname>
- with <application>gcc</application> 4.3 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of constant expressions in <literal>ORDER BY</literal>
- and <literal>GROUP BY</literal> (Tom)
- </para>
-
- <para>
- An explicitly casted constant would be shown incorrectly. This could
- for example lead to corruption of a view definition during
- dump and reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to handle NOTICE messages correctly
- during COPY OUT (Tom)
- </para>
-
- <para>
- This failure has only been observed to occur when a user-defined
- datatype's output routine issues a NOTICE, but there is no
- guarantee it couldn't happen due to other causes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-11">
- <title>Release 8.1.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-01-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.10,
- including fixes for significant security issues.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <para>
- This is the last 8.1.X release for which the <productname>PostgreSQL</productname>
- community will produce binary packages for <productname>Windows</productname>.
- Windows users are encouraged to move to 8.2.X or later,
- since there are Windows-specific fixes in 8.2.X that
- are impractical to back-port. 8.1.X will continue to
- be supported on other platforms.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.11</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent functions in indexes from executing with the privileges of
- the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
- </para>
-
- <para>
- Functions used in index expressions and partial-index
- predicates are evaluated whenever a new table entry is made. It has
- long been understood that this poses a risk of trojan-horse code
- execution if one modifies a table owned by an untrustworthy user.
- (Note that triggers, defaults, check constraints, etc. pose the
- same type of risk.) But functions in indexes pose extra danger
- because they will be executed by routine maintenance operations
- such as <command>VACUUM FULL</command>, which are commonly performed
- automatically under a superuser account. For example, a nefarious user
- can execute code with superuser privileges by setting up a
- trojan-horse index definition and waiting for the next routine vacuum.
- The fix arranges for standard maintenance operations
- (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
- and <command>CLUSTER</command>) to execute as the table owner rather than
- the calling user, using the same privilege-switching mechanism already
- used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
- this security measure, execution of <command>SET SESSION
- AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
- <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
- </para>
-
- <para>
- Suitably crafted regular-expression patterns could cause crashes,
- infinite or near-infinite looping, and/or massive memory consumption,
- all of which pose denial-of-service hazards for applications that
- accept regex search patterns from untrustworthy sources.
- (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
-
- <para>
- The fix that appeared for this in 8.1.10 was incomplete, as it plugged
- the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
- CVE-2007-3278)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2007k
- (in particular, recent Argentina changes) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's handling of LIKE/regex estimation in non-C locales
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure in some cases of <literal>WHERE false AND var IN
- (SELECT ...)</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve the tablespace of indexes that are
- rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make archive recovery always start a new WAL timeline, rather than only
- when a recovery stop time was used (Simon)
- </para>
-
- <para>
- This avoids a corner-case risk of trying to overwrite an existing
- archived copy of the last WAL segment, and seems simpler and cleaner
- than the original definition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname>
- when the table is too small for it to be useful (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in <function>translate()</function> when using a multibyte
- database encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow in <literal>extract(epoch from interval)</literal> for intervals
- exceeding 68 years (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Perl to not fail when a UTF-8 regular expression is used
- in a trusted function (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal>
- as <literal>int</literal> rather than <literal>char</literal> (Tom)
- </para>
-
- <para>
- While this could theoretically happen anywhere, no standard build of
- Perl did things this way ... until <productname>macOS</productname> 10.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to not crash on long exception messages (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to correctly handle inheritance child tables
- that have default expressions different from their parent's (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> crash when <varname>PGPASSFILE</varname> refers
- to a file that is not a plain file (Martin Pitt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>ecpg</application> parser fixes (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pgcrypto</filename> defend against
- <application>OpenSSL</application> libraries that fail on keys longer than 128
- bits; which is the case at least on some Solaris versions (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
- NULL rowid as a category in its own right, rather than crashing (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>tsvector</type> and <type>tsquery</type> output routines to
- escape backslashes correctly (Teodor, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a specific version of <productname>Autoconf</productname> to be used
- when re-generating the <command>configure</command> script (Peter)
- </para>
-
- <para>
- This affects developers and packagers only. The change was made
- to prevent accidental use of untested combinations of
- <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
- You can remove the version check if you really want to use a
- different <productname>Autoconf</productname> version, but it's
- your responsibility whether the result works or not.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-10">
- <title>Release 8.1.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-09-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.9.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.10</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent index corruption when a transaction inserts rows and
- then aborts close to the end of a concurrent <command>VACUUM</command>
- on the same table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the <type>interval</type> data type to accept input consisting only of
- milliseconds or microseconds (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up rtree index insertion (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging so that log messages are never interleaved when using
- the syslogger process (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when <varname>log_min_error_statement</varname> logging runs out
- of memory (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of some foreign-key corner cases (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>REINDEX</command> and <command>CLUSTER</command> from failing
- due to attempting to process temporary tables of other sessions (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Windows socket improvements (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows
- because of possible encoding mismatches (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-9">
- <title>Release 8.1.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-04-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.8,
- including a security fix.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.9</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support explicit placement of the temporary-table schema within
- <varname>search_path</varname>, and disable searching it for functions
- and operators (Tom)
- </para>
- <para>
- This is needed to allow a security-definer function to set a
- truly secure value of <varname>search_path</varname>. Without it,
- an unprivileged SQL user can use temporary objects to execute code
- with the privileges of the security-definer function (CVE-2007-2138).
- See <command>CREATE FUNCTION</command> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>/contrib/tsearch2</filename> crash fixes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <command>COMMIT PREPARED</command> to be executed in the same
- database as the transaction was prepared in (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
- <command>UPDATE</command> chains (Tom, Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Planner fixes, including improving outer join and bitmap scan
- selection logic (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6)
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-8">
- <title>Release 8.1.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-07</para>
- </formalpara>
-
- <para>
- This release contains one fix from 8.1.7.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.8</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove overly-restrictive check for type length in constraints and
- functional indexes(Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-7">
- <title>Release 8.1.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.6, including
- a security fix.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.7</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove security vulnerabilities that allowed connected users
- to read backend memory (Tom)
- </para>
- <para>
- The vulnerabilities involve suppressing the normal check that a SQL
- function returns the data type it's declared to, and changing the
- data type of a table column (CVE-2007-0555, CVE-2007-0556). These
- errors can easily be exploited to cause a backend crash, and in
- principle might be used to read database content that the user
- should not be able to access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare bug wherein btree index page splits could fail
- due to choosing an infeasible split point (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>VACUUM</command> performance for databases with many tables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum to avoid leaving non-permanent transaction IDs in
- non-connectable databases (Alvaro)
- </para>
-
- <para>
- This bug affects the 8.1 branch only.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten security of multi-byte character processing for UTF8 sequences
- over three bytes long (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bogus <quote>permission denied</quote> failures occurring on Windows
- due to attempts to fsync already-deleted files (Magnus, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when an already-in-use PL/pgSQL function is
- updated (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-6">
- <title>Release 8.1.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-01-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.5.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.6</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of <function>getaddrinfo()</function> on AIX (Tom)
- </para>
-
- <para>
- This fixes a problem with starting the statistics collector,
- among other things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to handle a tar-format backup
- that contains large objects (blobs) with comments (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to re-find parent key</quote> errors in
- <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean out <filename>pg_internal.init</filename> cache files during server
- restart (Simon)
- </para>
-
- <para>
- This avoids a hazard that the cache files might contain stale
- data after PITR recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition for truncation of a large relation across a
- gigabyte boundary by <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug causing needless deadlock errors on row-level locks (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs affecting multi-gigabyte hash indexes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock in Windows signal handling (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error when constructing an <literal>ARRAY[]</literal> made up of multiple
- empty elements (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix ecpg memory leak during connection (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for macOS (Darwin) compilation (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>to_number()</function> and <function>to_char(numeric)</function>
- are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for
- new <application>initdb</application> installs (Tom)
- </para>
-
- <para>
- This is because <varname>lc_numeric</varname> can potentially
- change the output of these functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve index usage of regular expressions that use parentheses (Tom)
- </para>
-
- <para>
- This improves <application>psql</application> <literal>\d</literal> performance also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update timezone database
- </para>
-
- <para>
- This affects Australian and Canadian daylight-savings rules in
- particular.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-5">
- <title>Release 8.1.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-10-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.4.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.5</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow aggregate functions in <command>UPDATE</command>
-commands, except within sub-SELECTs (Tom)</para>
-<para>The behavior of such an aggregate was unpredictable, and in 8.1.X
-could cause a crash, so it has been disabled. The SQL standard does not allow
-this either.</para></listitem>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</para></listitem>
-<listitem><para>Fix core dump in duration logging for extended query protocol
-when a <command>COMMIT</command> or <command>ROLLBACK</command> is
-executed</para></listitem>
-<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
-function returning multiple rows (Tom)</para></listitem>
-<listitem><para>Fix <command>ALTER TABLE ... TYPE</command> to recheck
-<literal>NOT NULL</literal> for <literal>USING</literal> clause (Tom)</para></listitem>
-<listitem><para>Fix <function>string_to_array()</function> to handle overlapping
- matches for the separator string</para>
-<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</literal>.
-</para></listitem>
-<listitem><para>Fix <function>to_timestamp()</function> for
-<literal>AM</literal>/<literal>PM</literal> formats (Bruce)</para></listitem>
-<listitem><para>Fix autovacuum's calculation that decides whether
- <command>ANALYZE</command> is needed (Alvaro)</para></listitem>
-<listitem><para>Fix corner cases in pattern matching for
- <application>psql</application>'s <literal>\d</literal> commands</para></listitem>
-<listitem><para>Fix index-corrupting bugs in /contrib/ltree
- (Teodor)</para></listitem>
-<listitem><para>Numerous robustness fixes in <application>ecpg</application> (Joachim
-Wieland)</para></listitem>
-<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Minor fixes in /contrib/dblink and /contrib/tsearch2</para>
-</listitem>
-<listitem><para>Efficiency improvements in hash tables and bitmap index scans
-(Tom)</para></listitem>
-<listitem><para>Fix instability of statistics collection on Windows (Tom, Andrew)</para></listitem>
-<listitem><para>Fix <varname>statement_timeout</varname> to use the proper
-units on Win32 (Bruce)</para>
-<para>In previous Win32 8.1.X versions, the delay was off by a factor of
-100.</para></listitem>
-<listitem><para>Fixes for <acronym>MSVC</acronym> and <productname>Borland C++</productname>
-compilers (Hiroshi Saito)</para></listitem>
-<listitem><para>Fixes for <systemitem class="osname">AIX</systemitem> and
-<productname>Intel</productname> compilers (Tom)</para></listitem>
-<listitem><para>Fix rare bug in continuous archiving (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-4">
- <title>Release 8.1.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-05-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.3,
- including patches for extremely serious security issues.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.4</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
-
- <para>
- Full security against the SQL-injection attacks described in
- CVE-2006-2313 and CVE-2006-2314 might require changes in application
- code. If you have applications that embed untrustworthy strings
- into SQL commands, you should examine them as soon as possible to
- ensure that they are using recommended escaping techniques. In
- most cases, applications should be using subroutines provided by
- libraries or drivers (such as <application>libpq</application>'s
- <function>PQescapeStringConn()</function>) to perform string escaping,
- rather than relying on <foreignphrase>ad hoc</foreignphrase> code to do it.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change the server to reject invalidly-encoded multibyte
-characters in all cases (Tatsuo, Tom)</para>
-<para>While <productname>PostgreSQL</productname> has been moving in this direction for
-some time, the checks are now applied uniformly to all encodings and all
-textual input, and are now always errors not merely warnings. This change
-defends against SQL-injection attacks of the type described in CVE-2006-2313.
-</para></listitem>
-
-<listitem><para>Reject unsafe uses of <literal>\'</literal> in string literals</para>
-<para>As a server-side defense against SQL-injection attacks of the type
-described in CVE-2006-2314, the server now only accepts <literal>''</literal> and not
-<literal>\'</literal> as a representation of ASCII single quote in SQL string
-literals. By default, <literal>\'</literal> is rejected only when
-<varname>client_encoding</varname> is set to a client-only encoding (SJIS, BIG5, GBK,
-GB18030, or UHC), which is the scenario in which SQL injection is possible.
-A new configuration parameter <varname>backslash_quote</varname> is available to
-adjust this behavior when needed. Note that full security against
-CVE-2006-2314 might require client-side changes; the purpose of
-<varname>backslash_quote</varname> is in part to make it obvious that insecure
-clients are insecure.
-</para></listitem>
-
-<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be
-aware of encoding considerations and
-<varname>standard_conforming_strings</varname></para>
-<para>This fixes <application>libpq</application>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
-them against the planned changeover to SQL-standard string literal syntax.
-Applications that use multiple <productname>PostgreSQL</productname> connections
-concurrently should migrate to <function>PQescapeStringConn()</function> and
-<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly
-for the settings in use in each database connection. Applications that
-do string escaping <quote>by hand</quote> should be modified to rely on library
-routines instead.
-</para></listitem>
-
-<listitem><para>Fix weak key selection in pgcrypto (Marko Kreen)</para>
-<para>Errors in fortuna PRNG reseeding logic could cause a predictable
-session key to be selected by <function>pgp_sym_encrypt()</function> in some cases.
-This only affects non-OpenSSL-using builds.
-</para></listitem>
-
-<listitem><para>Fix some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</function>, <function>win866_to_iso</function>,
-<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>,
-<function>mic_to_euc_tw</function> were all broken to varying
-extents.
-</para></listitem>
-
-<listitem><para>Clean up stray remaining uses of <literal>\'</literal> in strings
-(Bruce, Jan)</para></listitem>
-
-<listitem><para>Make autovacuum visible in <structname>pg_stat_activity</structname>
-(Alvaro)</para></listitem>
-
-<listitem><para>Disable <literal>full_page_writes</literal> (Tom)</para>
-<para>In certain cases, having <literal>full_page_writes</literal> off would cause
-crash recovery to fail. A proper fix will appear in 8.2; for now it's just
-disabled.
-</para></listitem>
-
-<listitem><para>Various planner fixes, particularly for bitmap index scans and
-MIN/MAX optimization (Tom)</para></listitem>
-
-<listitem><para>Fix incorrect optimization in merge join (Tom)</para>
-<para>Outer joins could sometimes emit multiple copies of unmatched rows.
-</para></listitem>
-
-<listitem><para>Fix crash from using and modifying a plpgsql function in the
-same transaction</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a B-Tree index has been
-truncated</para></listitem>
-
-<listitem><para>Fix <literal>SIMILAR TO</literal> for patterns involving
-<literal>|</literal> (Tom)</para></listitem>
-
-<listitem><para>Fix <command>SELECT INTO</command> and <command>CREATE TABLE AS</command> to
-create tables in the default tablespace, not the base directory (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Improve qsort performance (Dann Corbit)</para>
-<para>Currently this code is only used on Solaris.
-</para></listitem>
-
-<listitem><para>Fix for OS/X Bonjour on x86 systems (Ashley Clark)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-
-<listitem><para>Fix problem with password prompting on some Win32 systems
-(Robert Kinberg)</para></listitem>
-
-<listitem><para>Improve <application>pg_dump</application>'s handling of default values
-for domains</para></listitem>
-
-<listitem><para>Fix <application>pg_dumpall</application> to handle identically-named
-users and groups reasonably (only possible when dumping from a pre-8.1 server)
-(Tom)</para>
-<para>The user and group will be merged into a single role with
-<literal>LOGIN</literal> permission. Formerly the merged role wouldn't have
-<literal>LOGIN</literal> permission, making it unusable as a user.
-</para></listitem>
-
-<listitem><para>Fix <application>pg_restore</application> <literal>-n</literal> to work as
-documented (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-3">
- <title>Release 8.1.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-02-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.2,
- including one very serious security issue.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.3</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, if you are upgrading from a version earlier than 8.1.2,
- see <xref linkend="release-8-1-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix bug that allowed any logged-in user to <command>SET
-ROLE</command> to any other database user id (CVE-2006-0553)</para>
-<para>Due to inadequate validity checking, a user could exploit the special
-case that <command>SET ROLE</command> normally uses to restore the previous role
-setting after an error. This allowed ordinary users to acquire superuser
-status, for example.
-The escalation-of-privilege risk exists only in 8.1.0-8.1.2.
-However, in all releases back to 7.3 there is a related bug in <command>SET
-SESSION AUTHORIZATION</command> that allows unprivileged users to crash the server,
-if it has been compiled with Asserts enabled (which is not the default).
-Thanks to Akio Ishida for reporting this problem.
-</para></listitem>
-
-<listitem><para>Fix bug with row visibility logic in self-inserted
-rows (Tom)</para>
-<para>Under rare circumstances a row inserted by the current command
-could be seen as already valid, when it should not be. Repairs bug
-created in 8.0.4, 7.4.9, and 7.3.11 releases.
-</para></listitem>
-
-<listitem><para>Fix race condition that could lead to <quote>file already
-exists</quote> errors during pg_clog and pg_subtrans file creation
-(Tom)</para></listitem>
-
-<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
-message arrives at just the wrong time (Tom)</para></listitem>
-
-<listitem><para>Properly check <literal>DOMAIN</literal> constraints for
-<literal>UNKNOWN</literal> parameters in prepared statements
-(Neil)</para></listitem>
-
-<listitem><para>Ensure <command>ALTER COLUMN TYPE</command> will process
-<literal>FOREIGN KEY</literal>, <literal>UNIQUE</literal>, and <literal>PRIMARY KEY</literal>
-constraints in the proper order (Nakano Yoshihisa)</para></listitem>
-
-<listitem><para>Fixes to allow restoring dumps that have cross-schema
-references to custom operators or operator classes (Tom)</para></listitem>
-
-<listitem><para>Allow <application>pg_restore</application> to continue properly after a
-<command>COPY</command> failure; formerly it tried to treat the remaining
-<command>COPY</command> data as SQL commands (Stephen Frost)</para></listitem>
-
-<listitem><para>Fix <application>pg_ctl</application> <literal>unregister</literal> crash
-when the data directory is not specified (Magnus)</para></listitem>
-
-<listitem><para>Fix <application>libpq</application> <function>PQprint</function> HTML tags
-(Christoph Zwerschke)</para></listitem>
-
-<listitem><para>Fix <application>ecpg</application> crash on AMD64 and PPC
-(Neil)</para></listitem>
-
-<listitem><para>Allow <literal>SETOF</literal> and <literal>%TYPE</literal> to be used
-together in function result type declarations</para></listitem>
-
-<listitem><para>Recover properly if error occurs during argument passing
-in <application>PL/Python</application> (Neil)</para></listitem>
-
-<listitem><para>Fix memory leak in <function>plperl_return_next</function>
-(Neil)</para></listitem>
-
-<listitem><para>Fix <application>PL/Perl</application>'s handling of locales on
-Win32 to match the backend (Andrew)</para></listitem>
-
-<listitem><para>Various optimizer fixes (Tom)</para></listitem>
-
-<listitem><para>Fix crash when <literal>log_min_messages</literal> is set to
-<literal>DEBUG3</literal> or above in <filename>postgresql.conf</filename> on Win32
-(Bruce)</para></listitem>
-
-<listitem><para>Fix <application>pgxs</application> <literal>-L</literal> library path
-specification for Win32, Cygwin, macOS, AIX (Bruce)</para></listitem>
-
-<listitem><para>Check that SID is enabled while checking for Win32 admin
-privileges (Magnus)</para></listitem>
-
-<listitem><para>Properly reject out-of-range date inputs (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</function>
-and <function>isinf</function> during configure (Tom)</para></listitem>
-
-<listitem><para>Improve speed of <command>COPY IN</command> via libpq, by
-avoiding a kernel call per data line (Alon Goldshuv)</para></listitem>
-
-<listitem><para>Improve speed of <filename>/contrib/tsearch2</filename> index
-creation (Tom)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-2">
- <title>Release 8.1.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-01-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.1.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.2</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- However, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the locale or
- <application>plperl</application> issues described below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix Windows code so that postmaster will continue rather
-than exit if there is no more room in ShmemBackendArray (Magnus)</para>
-<para>The previous behavior could lead to a denial-of-service situation if too
-many connection requests arrive close together. This applies
-<emphasis>only</emphasis> to the Windows port.</para></listitem>
-
-<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
-to return an already-used page as new, potentially causing loss of
-recently-committed data (Tom)</para></listitem>
-
-<listitem><para>Fix for protocol-level Describe messages issued
-outside a transaction or in a failed transaction (Tom)</para></listitem>
-
-<listitem><para>Fix character string comparison for locales that consider
-different character combinations as equal, such as Hungarian (Tom)</para>
-<para>This might require <command>REINDEX</command> to fix existing indexes on
-textual columns.</para></listitem>
-
-<listitem><para>Set locale environment variables during postmaster startup
-to ensure that <application>plperl</application> won't change the locale later</para>
-<para>This fixes a problem that occurred if the <application>postmaster</application> was
-started with environment variables specifying a different locale than what
-<application>initdb</application> had been told. Under these conditions, any use of
-<application>plperl</application> was likely to lead to corrupt indexes. You might need
-<command>REINDEX</command> to fix existing indexes on
-textual columns if this has happened to you.</para></listitem>
-
-<listitem><para>Allow more flexible relocation of installation
-directories (Tom)</para>
-<para>Previous releases supported relocation only if all installation
-directory paths were the same except for the last component.</para></listitem>
-
-<listitem><para>Prevent crashes caused by the use of
-<literal>ISO-8859-5</literal> and <literal>ISO-8859-9</literal> encodings
-(Tatsuo)</para></listitem>
-
-<listitem><para>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Fix bug where COPY CSV mode considered any
-<literal>\.</literal> to terminate the copy data</para> <para>The new code
-requires <literal>\.</literal> to appear alone on a line, as per
-documentation.</para></listitem>
-
-<listitem><para>Make COPY CSV mode quote a literal data value of
-<literal>\.</literal> to ensure it cannot be interpreted as the
-end-of-data marker (Bruce)</para></listitem>
-
-<listitem><para>Various fixes for functions returning <literal>RECORD</literal>s
-(Tom) </para></listitem>
-
-<listitem><para>Fix processing of <filename>postgresql.conf</filename> so a
-final line with no newline is processed properly (Tom)
-</para></listitem>
-
-<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> gen_salt,
-which caused it not to use all available salt space for MD5 and
-XDES algorithms (Marko Kreen, Solar Designer)</para>
-<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
-
-<listitem><para>Fix autovacuum crash when processing expression indexes
-</para></listitem>
-
-<listitem><para>Fix <filename>/contrib/dblink</filename> to throw an error,
-rather than crashing, when the number of columns specified is different from
-what's actually returned by the query (Joe)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1-1">
- <title>Release 8.1.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-12-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.1.0.
- For information about new features in the 8.1 major release, see
- <xref linkend="release-8-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.1.1</title>
-
- <para>
- A dump/restore is not required for those running 8.1.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix incorrect optimizations of outer-join conditions
-(Tom)</para></listitem>
-
-<listitem><para>Fix problems with wrong reported column names in cases
-involving sub-selects flattened by the optimizer (Tom)</para></listitem>
-
-<listitem><para>Fix update failures in scenarios involving CHECK constraints,
-toasted columns, <emphasis>and</emphasis> indexes (Tom)</para></listitem>
-
-<listitem><para>Fix bgwriter problems after recovering from errors
-(Tom)</para>
-<para>
-The background writer was found to leak buffer pins after write errors.
-While not fatal in itself, this might lead to mysterious blockages of
-later VACUUM commands.
-</para>
-</listitem>
-
-<listitem><para>Prevent failure if client sends Bind protocol message
-when current transaction is already aborted</para></listitem>
-
-<listitem><para><filename>/contrib/tsearch2</filename> and <filename>/contrib/ltree</filename>
-fixes (Teodor)</para></listitem>
-
-<listitem><para>Fix problems with translated error messages in
-languages that require word reordering, such as Turkish; also problems with
-unexpected truncation of output strings and wrong display of the smallest
-possible bigint value (Andrew, Tom)</para>
-<para>
-These problems only appeared on platforms that were using our
-<filename>port/snprintf.c</filename> code, which includes BSD variants if
-<literal>--enable-nls</literal> was given, and perhaps others. In addition,
-a different form of the translated-error-message problem could appear
-on Windows depending on which version of <filename>libintl</filename> was used.
-</para></listitem>
-
-<listitem><para>Re-allow <literal>AM</literal>/<literal>PM</literal>, <literal>HH</literal>,
-<literal>HH12</literal>, and <literal>D</literal> format specifiers for
-<function>to_char(time)</function> and <function>to_char(interval)</function>.
-(<function>to_char(interval)</function> should probably use
-<literal>HH24</literal>.) (Bruce)</para></listitem>
-
-<listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi
-Saito)</para></listitem>
-
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-
-<listitem><para>Retry file reads and writes after Windows
-NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
-
-<listitem><para>Prevent <application>autovacuum</application> from crashing during
-ANALYZE of expression index (Alvaro)</para></listitem>
-
-<listitem><para>Fix problems with ON COMMIT DELETE ROWS temp
-tables</para></listitem>
-
-<listitem><para>Fix problems when a trigger alters the output of a SELECT
-DISTINCT query</para></listitem>
-
-<listitem><para>Add 8.1.0 release note item on how to migrate invalid
-<literal>UTF-8</literal> byte sequences (Paul Lindner)</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-1">
- <title>Release 8.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-11-08</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>
- Improve concurrent access to the shared buffer cache (Tom)
- </term>
-
- <listitem>
- <para>
- Access to the shared buffer cache was identified as a
- significant scalability problem, particularly on multi-CPU
- systems. In this release, the way that locking is done in the
- buffer manager has been overhauled to reduce lock contention
- and improve scalability. The buffer manager has also been
- changed to use a <quote>clock sweep</quote> replacement
- policy.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Allow index scans to use an intermediate in-memory bitmap (Tom)
- </term>
-
- <listitem>
- <para>
- In previous releases, only a single index could be used to do
- lookups on a table. With this feature, if a query has
- <command>WHERE tab.col1 = 4 and tab.col2 = 9</command>, and there is
- no multicolumn index on <literal>col1</literal> and <literal>col2</literal>,
- but there is an index on <literal>col1</literal> and another on
- <literal>col2</literal>, it is possible to search both indexes and
- combine the results in memory, then do heap fetches for only
- the rows matching both the <literal>col1</literal> and
- <literal>col2</literal> restrictions. This is very useful in
- environments that have a lot of unstructured queries where it
- is impossible to create indexes that match all possible access
- conditions. Bitmap scans are useful even with a single index,
- as they reduce the amount of random access needed; a bitmap
- index scan is efficient for retrieving fairly large fractions
- of the complete table, whereas plain index scans are not.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
- </term>
-
- <listitem>
- <para>
- Two-phase commit allows transactions to be "prepared" on several
- computers, and once all computers have successfully prepared
- their transactions (none failed), all transactions can be
- committed. Even if a machine crashes after a prepare, the
- prepared transaction can be committed after the machine is
- restarted. New syntax includes <command>PREPARE TRANSACTION</command> and
- <command>COMMIT/ROLLBACK PREPARED</command>. A new system view
- <literal>pg_prepared_xacts</literal> has also been added.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Create a new role system that replaces users and groups
- (Stephen Frost)
- </term>
-
- <listitem>
- <para>
- Roles are a combination of users and groups. Like users, they
- can have login capability, and like groups, a role can have
- other roles as members. Roles basically remove the distinction
- between users and groups. For example, a role can:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Have login capability (optionally)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Own objects
- </para>
- </listitem>
-
- <listitem>
- <para>
- Hold access permissions for database objects
- </para>
- </listitem>
-
- <listitem>
- <para>
- Inherit permissions from other roles it is a member of
- </para>
- </listitem>
-
- </itemizedlist>
- <para>
- Once a user logs into a role, she obtains capabilities of
- the login role plus any inherited roles, and can use
- <command>SET ROLE</command> to switch to other roles she is a member of.
- This feature is a generalization of the SQL standard's concept of
- roles.
- This change also replaces <structname>pg_shadow</structname> and
- <structname>pg_group</structname> by new role-capable catalogs
- <structname>pg_authid</structname> and <structname>pg_auth_members</structname>. The old
- tables are redefined as read-only views on the new role tables.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Automatically use indexes for <function>MIN()</function> and
- <function>MAX()</function> (Tom)
- </term>
-
- <listitem>
- <para>
- In previous releases, the only way to use an index for
- <function>MIN()</function> or <function>MAX()</function> was to rewrite the
- query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</command>.
- Index usage now happens automatically.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Move <filename>/contrib/pg_autovacuum</filename> into the main server
- (Alvaro)
- </term>
-
- <listitem>
- <para>
- Integrating autovacuum into the server allows it to be
- automatically started and stopped in sync with the database
- server, and allows autovacuum to be configured from
- <filename>postgresql.conf</filename>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Add shared row level locks using <command>SELECT ... FOR SHARE</command>
- (Alvaro)
- </term>
-
- <listitem>
- <para>
- While <productname>PostgreSQL</productname>'s MVCC locking
- allows <command>SELECT</command> to never be blocked by writers and
- therefore does not need shared row locks for typical operations,
- shared locks are useful for applications that require shared row
- locking. In particular this reduces the locking requirements
- imposed by referential integrity checks.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Add dependencies on shared objects, specifically roles
- (Alvaro)
- </term>
-
- <listitem>
- <para>
- This extension of the dependency mechanism prevents roles from
- being dropped while there are still database objects they own.
- Formerly it was possible to accidentally <quote>orphan</quote> objects by
- deleting their owner. While this could be recovered from, it
- was messy and unpleasant.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Improve performance for partitioned tables (Simon)
- </term>
-
- <listitem>
- <para>
- The new <varname>constraint_exclusion</varname> configuration
- parameter avoids lookups on child tables where constraints indicate
- that no matching rows exist in the child table.
- </para>
- <para>
- This allows for a basic type of table partitioning. If child tables
- store separate key ranges and this is enforced using appropriate
- <command>CHECK</command> constraints, the optimizer will skip child
- table accesses when the constraint guarantees no matching rows
- exist in the child table.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect2>
-
- <sect2>
- <title>Migration to Version 8.1</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is required
- for those wishing to migrate data from any previous release.
- </para>
-
- <para>
- The 8.0 release announced that the <function>to_char()</function> function
- for intervals would be removed in 8.1. However, since no better API
- has been suggested, <function>to_char(interval)</function> has been enhanced in
- 8.1 and will remain in the server.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <varname>add_missing_from</varname> is now false by default (Neil)
- </para>
- <para>
- By default, we now generate an error if a table is used in a query
- without a <literal>FROM</literal> reference. The old behavior is still
- available, but the parameter must be set to 'true' to obtain it.
- </para>
-
- <para>
- It might be necessary to set <varname>add_missing_from</varname> to true
- in order to load an existing dump file, if the dump contains any
- views or rules created using the implicit-<literal>FROM</literal> syntax.
- This should be a one-time annoyance, because
- <productname>PostgreSQL</productname> 8.1 will convert
- such views and rules to standard explicit-<literal>FROM</literal> syntax.
- Subsequent dumps will therefore not have the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause input of a zero-length string (<literal>''</literal>) for
- <type>float4</type>/<type>float8</type>/<type>oid</type>
- to throw an error, rather than treating it as a zero (Neil)
- </para>
- <para>
- This change is consistent with the current handling of
- zero-length strings for integers. The schedule for this change
- was announced in 8.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>default_with_oids</varname> is now false by default (Neil)
- </para>
- <para>
- With this option set to false, user-created tables no longer
- have an OID column unless <command>WITH OIDS</command> is specified in
- <command>CREATE TABLE</command>. Though OIDs have existed in all
- releases of <productname>PostgreSQL</productname>, their use is limited
- because they are only four bytes long and the counter is shared
- across all installed databases. The preferred way of uniquely
- identifying rows is via sequences and the <type>SERIAL</type> type,
- which have been supported since <productname>PostgreSQL</productname> 6.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>E''</literal> syntax so eventually ordinary strings can
- treat backslashes literally (Bruce)
- </para>
- <para>
- Currently <productname>PostgreSQL</productname> processes a
- backslash in a string literal as introducing a special escape sequence,
- e.g. <literal>\n</literal> or <literal>\010</literal>.
- While this allows easy entry of special values, it is
- nonstandard and makes porting of applications from other
- databases more difficult. For this reason, the
- <productname>PostgreSQL</productname> project is planning to
- remove the special meaning of backslashes in strings. For
- backward compatibility and for users who want special backslash
- processing, a new string syntax has been created. This new string
- syntax is formed by writing an <literal>E</literal> immediately preceding the
- single quote that starts the string, e.g. <literal>E'hi\n'</literal>. While
- this release does not change the handling of backslashes in strings, it
- does add new configuration parameters to help users migrate applications
- for future releases:
- </para>
- <itemizedlist>
-
- <listitem>
- <para>
- <varname>standard_conforming_strings</varname> &mdash; does this release
- treat backslashes literally in ordinary strings?
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>escape_string_warning</varname> &mdash; warn about backslashes in
- ordinary (non-E) strings
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The <varname>standard_conforming_strings</varname> value is read-only.
- Applications can retrieve the value to know how backslashes are
- processed. (Presence of the parameter can also be taken as an
- indication that <literal>E''</literal> string syntax is supported.)
- In a future release, <varname>standard_conforming_strings</varname>
- will be true, meaning backslashes will be treated literally in
- non-E strings. To prepare for this change, use <literal>E''</literal>
- strings in places that need special backslash processing, and
- turn on <varname>escape_string_warning</varname> to find additional
- strings that need to be converted to use <literal>E''</literal>.
- Also, use two single-quotes (<literal>''</literal>) to embed a literal
- single-quote in a string, rather than the
- <productname>PostgreSQL</productname>-supported syntax of
- backslash single-quote (<literal>\'</literal>). The former is
- standards-conforming and does not require the use of the
- <literal>E''</literal> string syntax. You can also use the
- <literal>$$</literal> string syntax, which does not treat backslashes
- specially.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>REINDEX DATABASE</command> reindex all indexes in the
- database (Tom)
- </para>
- <para>
- Formerly, <command>REINDEX DATABASE</command> reindexed only
- system tables. This new behavior seems more intuitive. A new
- command <command>REINDEX SYSTEM</command> provides the old functionality
- of reindexing just the system tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Read-only large object descriptors now obey MVCC snapshot semantics
- </para>
- <para>
- When a large object is opened with <literal>INV_READ</literal> (and not
- <literal>INV_WRITE</literal>), the data read from the descriptor will now
- reflect a <quote>snapshot</quote> of the large object's state at the
- time of the transaction snapshot in use by the query that called
- <function>lo_open()</function>. To obtain the old behavior of always
- returning the latest committed data, include <literal>INV_WRITE</literal>
- in the mode flags for <function>lo_open()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add proper dependencies for arguments of sequence functions (Tom)
- </para>
- <para>
- In previous releases, sequence names passed to <function>nextval()</function>,
- <function>currval()</function>, and <function>setval()</function> were stored as
- simple text strings, meaning that renaming or dropping a
- sequence used in a <literal>DEFAULT</literal> clause made the clause
- invalid. This release stores all newly-created sequence function
- arguments as internal OIDs, allowing them to track sequence
- renaming, and adding dependency information that prevents
- improper sequence removal. It also makes such <literal>DEFAULT</literal>
- clauses immune to schema renaming and search path changes.
- </para>
- <para>
- Some applications might rely on the old behavior of
- run-time lookup for sequence names. This can still be done by
- explicitly casting the argument to <type>text</type>, for example
- <literal>nextval('myseq'::text)</literal>.
- </para>
- <para>
- Pre-8.1 database dumps loaded into 8.1 will use the old text-based
- representation and therefore will not have the features of
- OID-stored arguments. However, it is possible to update a
- database containing text-based <literal>DEFAULT</literal> clauses.
- First, save this query into a file, such as <filename>fixseq.sql</filename>:
-<programlisting>
-SELECT 'ALTER TABLE ' ||
- pg_catalog.quote_ident(n.nspname) || '.' ||
- pg_catalog.quote_ident(c.relname) ||
- ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) ||
- ' SET DEFAULT ' ||
- regexp_replace(d.adsrc,
- $$val\(\(('[^']*')::text\)::regclass$$,
- $$val(\1$$,
- 'g') ||
- ';'
-FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d
-WHERE n.oid = c.relnamespace AND
- c.oid = a.attrelid AND
- a.attrelid = d.adrelid AND
- a.attnum = d.adnum AND
- d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$;
-</programlisting>
- Next, run the query against a database to find what
- adjustments are required, like this for database <literal>db1</literal>:
-<programlisting>
-psql -t -f fixseq.sql db1
-</programlisting>
- This will show the <command>ALTER TABLE</command> commands needed to
- convert the database to the newer OID-based representation.
- If the commands look reasonable, run this to update the database:
-<programlisting>
-psql -t -f fixseq.sql db1 | psql -e db1
-</programlisting>
- This process must be repeated in each database to be updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat unquoted
- <literal>\{digit}+</literal> sequences as octal (Bruce)
- </para>
- <para>
- In previous releases, <literal>\{digit}+</literal> sequences were
- treated as decimal, and only <literal>\0{digit}+</literal> were treated
- as octal. This change was made for consistency.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove grammar productions for prefix and postfix <literal>%</literal>
- and <literal>^</literal> operators
- (Tom)
- </para>
- <para>
- These have never been documented and complicated the use of the
- modulus operator (<literal>%</literal>) with negative numbers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>&amp;&lt;</literal> and <literal>&amp;&gt;</literal> for polygons
- consistent with the box "over" operators (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>CREATE LANGUAGE</command> can ignore the provided arguments
- in favor of information from <structname>pg_pltemplate</structname>
- (Tom)
- </para>
- <para>
- A new system catalog <structname>pg_pltemplate</structname> has been defined
- to carry information about the preferred definitions of procedural
- languages (such as whether they have validator functions). When
- an entry exists in this catalog for the language being created,
- <command>CREATE LANGUAGE</command> will ignore all its parameters except the
- language name and instead use the catalog information. This measure
- was taken because of increasing problems with obsolete language
- definitions being loaded by old dump files. As of 8.1,
- <application>pg_dump</application> will dump procedural language definitions as
- just <command>CREATE LANGUAGE <replaceable>name</replaceable></command>, relying
- on a template entry to exist at load time. We expect this will be a
- more future-proof representation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_cancel_backend(int)</function> return a
- <type>boolean</type> rather than an <type>integer</type> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Some users are having problems loading UTF-8 data into 8.1.X.
- This is because previous versions allowed invalid UTF-8 byte
- sequences to be entered into the database, and this release
- properly accepts only valid UTF-8 sequences. One way to correct a
- dumpfile is to run the command <command>iconv -c -f UTF-8 -t
- UTF-8 -o cleanfile.sql dumpfile.sql</command>. The <literal>-c</literal> option
- removes invalid character sequences. A diff of the two files will
- show the sequences that are invalid. <command>iconv</command> reads the
- entire input file into memory so it might be necessary to use
- <application>split</application> to break up the dump into multiple smaller
- files for processing.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Additional Changes</title>
-
- <para>
- Below you will find a detailed account of the additional changes
- between <productname>PostgreSQL</productname> 8.1 and the
- previous major release.
- </para>
-
- <sect3>
- <title>Performance Improvements</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Improve GiST and R-tree index performance (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the optimizer, including auto-resizing of hash joins
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overhaul internal API in several areas
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change WAL record CRCs from 64-bit to 32-bit (Tom)
- </para>
- <para>
- We determined that the extra cost of computing 64-bit CRCs was
- significant, and the gain in reliability too marginal to justify it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent writing large empty gaps in WAL pages (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve spinlock behavior on SMP machines, particularly Opterons (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow nonconsecutive index columns to be used in a multicolumn
- index (Tom)
- </para>
- <para>
- For example, this allows an index on columns a,b,c to be used in
- a query with <command>WHERE a = 4 and c = 10</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip WAL logging for <command>CREATE TABLE AS</command> /
- <command>SELECT INTO</command> (Simon)
- </para>
- <para>
- Since a crash during <command>CREATE TABLE AS</command> would cause the
- table to be dropped during recovery, there is no reason to WAL
- log as the table is loaded. (Logging still happens if WAL
- archiving is enabled, however.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow concurrent GiST index access (Teodor, Oleg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration parameter <varname>full_page_writes</varname> to
- control writing full pages to WAL (Bruce)
- </para>
- <para>
- To prevent partial disk writes from corrupting the database,
- <productname>PostgreSQL</productname> writes a complete copy of
- each database disk page to WAL the first time it is modified
- after a checkpoint. This option turns off that functionality for more
- speed. This is safe to use with battery-backed disk caches where
- partial page writes cannot happen.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>O_DIRECT</literal> if available when using
- <literal>O_SYNC</literal> for <varname>wal_sync_method</varname>
- (Itagaki Takahiro)
- </para>
- <para>
- <literal>O_DIRECT</literal> causes disk writes to bypass the kernel
- cache, and for WAL writes, this improves performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>COPY FROM</command> performance (Alon Goldshuv)
- </para>
- <para>
- This was accomplished by reading <command>COPY</command> input in
- larger chunks, rather than character by character.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the performance of <function>COUNT()</function>,
- <function>SUM</function>, <function>AVG()</function>,
- <function>STDDEV()</function>, and
- <function>VARIANCE()</function> (Neil, Tom)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent problems due to transaction ID (XID) wraparound (Tom)
- </para>
- <para>
- The server will now warn when the transaction counter approaches
- the wraparound point. If the counter becomes too close to wraparound,
- the server will stop accepting queries. This ensures that data is
- not lost before needed vacuuming is performed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problems with object IDs (OIDs) conflicting with existing system
- objects after the OID counter has wrapped around (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add warning about the need to increase
- <varname>max_fsm_relations</varname> and <varname>max_fsm_pages</varname>
- during <command>VACUUM</command> (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>temp_buffers</varname> configuration parameter to allow
- users to determine the size of the local buffer area for
- temporary table access (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add session start time and client IP address to
- <literal>pg_stat_activity</literal> (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <literal>pg_stat</literal> views for bitmap scans (Tom)
- </para>
- <para>
- The meanings of some of the fields have changed slightly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enhance <literal>pg_locks</literal> view (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Log queries for client-side <command>PREPARE</command> and
- <command>EXECUTE</command> (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Kerberos name and user name case sensitivity to be
- specified in <filename>postgresql.conf</filename> (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration parameter <varname>krb_server_hostname</varname> so
- that the server host name can be specified as part of service
- principal (Todd Kover)
- </para>
- <para>
- If not set, any service principal matching an entry in the
- keytab can be used. This is new Kerberos matching behavior in
- this release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>log_line_prefix</varname> options for millisecond
- timestamps (<literal>%m</literal>) and remote host (<literal>%h</literal>) (Ed
- L.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add WAL logging for GiST indexes (Teodor, Oleg)
- </para>
- <para>
- GiST indexes are now safe for crash and point-in-time recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove old <filename>*.backup</filename> files when we do
- <function>pg_stop_backup()</function> (Bruce)
- </para>
- <para>
- This prevents a large number of <filename>*.backup</filename> files from
- existing in <filename>pg_xlog/</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration parameters to control TCP/IP keep-alive
- times for idle, interval, and count (Oliver Jowett)
- </para>
-
- <para>
- These values can be changed to allow more rapid detection of
- lost client connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add per-user and per-database connection limits (Petr Jelinek)
- </para>
- <para>
- Using <command>ALTER USER</command> and <command>ALTER DATABASE</command>,
- limits can now be enforced on the maximum number of sessions that
- can concurrently connect as a specific user or to a specific database.
- Setting the limit to zero disables user or database connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow more than two gigabytes of shared memory and per-backend
- work memory on 64-bit machines (Koichi Suzuki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New system catalog <structname>pg_pltemplate</structname> allows overriding
- obsolete procedural-language definitions in dump files (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Query Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add temporary views (Koju Iijima, Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>HAVING</command> without any aggregate functions or
- <command>GROUP BY</command> so that the query returns a single group (Tom)
- </para>
- <para>
- Previously, such a case would treat the <command>HAVING</command>
- clause the same as a <command>WHERE</command> clause. This was not per spec.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>USING</command> clause to allow additional tables to be
- specified to <command>DELETE</command> (Euler Taveira de Oliveira, Neil)
- </para>
- <para>
- In prior releases, there was no clear method for specifying
- additional tables to be used for joins in a <command>DELETE</command>
- statement. <command>UPDATE</command> already has a <literal>FROM</literal>
- clause for this purpose.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>\x</literal> hex escapes in backend and ecpg
- strings (Bruce)
- </para>
- <para>
- This is just like the standard C <literal>\x</literal> escape syntax.
- Octal escapes were already supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>BETWEEN SYMMETRIC</command> query syntax (Pavel Stehule)
- </para>
- <para>
- This feature allows <command>BETWEEN</command> comparisons without
- requiring the first value to be less than the second. For
- example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</command> returns
- false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</command> returns
- true. <command>BETWEEN ASYMMETRIC</command> was already supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>NOWAIT</command> option to <command>SELECT ... FOR
- UPDATE/SHARE</command> (Hans-Juergen Schoenig)
- </para>
- <para>
- While the <varname>statement_timeout</varname> configuration
- parameter allows a query taking more than a certain amount of
- time to be canceled, the <command>NOWAIT</command> option allows a
- query to be canceled as soon as a <command>SELECT ... FOR
- UPDATE/SHARE</command> command cannot immediately acquire a row lock.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Object Manipulation Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Track dependencies of shared objects (Alvaro)
- </para>
- <para>
- <productname>PostgreSQL</productname> allows global tables
- (users, databases, tablespaces) to reference information in
- multiple databases. This addition adds dependency information
- for global tables, so, for example, user ownership can be
- tracked across databases, so a user who owns something in any
- database can no longer be removed. Dependency tracking already
- existed for database-local objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow limited <command>ALTER OWNER</command> commands to be performed
- by the object owner (Stephen Frost)
- </para>
- <para>
- Prior releases allowed only superusers to change object owners.
- Now, ownership can be transferred if the user executing the command
- owns the object and would be able to create it as the new owner
- (that is, the user is a member of the new owning role and that role
- has the CREATE permission that would be needed to create the object
- afresh).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER</command> object <command>SET SCHEMA</command> capability
- for some object types (tables, functions, types) (Bernd Helmle)
- </para>
- <para>
- This allows objects to be moved to different schemas.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
- disable triggers (Satoshi Nagayasu)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Utility Command Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <command>TRUNCATE</command> to truncate multiple tables in a
- single command (Alvaro)
- </para>
- <para>
- Because of referential integrity checks, it is not allowed to
- truncate a table that is part of a referential integrity
- constraint. Using this new functionality, <command>TRUNCATE</command>
- can be used to truncate such tables, if both tables involved in
- a referential integrity constraint are truncated in a single
- <command>TRUNCATE</command> command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly process carriage returns and line feeds in
- <command>COPY CSV</command> mode (Andrew)
- </para>
- <para>
- In release 8.0, carriage returns and line feeds in <command>CSV
- COPY TO</command> were processed in an inconsistent manner. (This was
- documented on the TODO list.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>COPY WITH CSV HEADER</command> to allow a header line as
- the first line in <command>COPY</command> (Andrew)
- </para>
- <para>
- This allows handling of the common <command>CSV</command> usage of
- placing the column names on the first line of the data file. For
- <command>COPY TO</command>, the first line contains the column names,
- and for <command>COPY FROM</command>, the first line is ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, display better sub-second precision in
- <command>EXPLAIN ANALYZE</command> (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add trigger duration display to <command>EXPLAIN ANALYZE</command>
- (Tom)
- </para>
- <para>
- Prior releases included trigger execution time as part of the
- total execution time, but did not show it separately. It is now
- possible to see how much time is spent in each trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>\x</literal> hex escapes in <command>COPY</command>
- (Sergey Ten)
- </para>
- <para>
- Previous releases only supported octal escapes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>SHOW ALL</command> include variable descriptions
- (Matthias Schmidt)
- </para>
- <para>
- <command>SHOW</command> varname still only displays the variable's
- value and does not include the description.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>initdb</application> create a new standard
- database called <literal>postgres</literal>, and convert utilities to
- use <literal>postgres</literal> rather than <literal>template1</literal> for
- standard lookups (Dave)
- </para>
- <para>
- In prior releases, <literal>template1</literal> was used both as a
- default connection for utilities like
- <application>createuser</application>, and as a template for
- new databases. This caused <command>CREATE DATABASE</command> to
- sometimes fail, because a new database cannot be created if
- anyone else is in the template database. With this change, the
- default connection database is now <literal>postgres</literal>,
- meaning it is much less likely someone will be using
- <literal>template1</literal> during <command>CREATE DATABASE</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create new <application>reindexdb</application> command-line
- utility by moving <filename>/contrib/reindexdb</filename> into the
- server (Euler Taveira de Oliveira)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Data Type and Function Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <function>MAX()</function> and <function>MIN()</function> aggregates for
- array types (Koju Iijima)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_date()</function> and <function>to_timestamp()</function> to
- behave reasonably when <literal>CC</literal> and <literal>YY</literal> fields
- are both used (Karel Zak)
- </para>
- <para>
- If the format specification contains <literal>CC</literal> and a year
- specification is <literal>YYY</literal> or longer, ignore the
- <literal>CC</literal>. If the year specification is <literal>YY</literal> or
- shorter, interpret <literal>CC</literal> as the previous century.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>md5(bytea)</function> (Abhijit Menon-Sen)
- </para>
- <para>
- <function>md5(text)</function> already existed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <command>numeric ^ numeric</command> based on
- <function>power(numeric, numeric)</function>
- </para>
- <para>
- The function already existed, but there was no operator assigned
- to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>NUMERIC</type> modulus by properly truncating the quotient
- during computation (Bruce)
- </para>
- <para>
- In previous releases, modulus for large values sometimes
- returned negative results due to rounding of the quotient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a function <function>lastval()</function> (Dennis Bj&ouml;rklund)
- </para>
- <para>
- <function>lastval()</function> is a simplified version of
- <function>currval()</function>. It automatically determines the proper
- sequence name based on the most recent <function>nextval()</function> or
- <function>setval()</function> call performed by the current session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>to_timestamp(DOUBLE PRECISION) (Michael Glaesemann)</function>
- </para>
- <para>
- Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
- TIMEZONE</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_postmaster_start_time()</function> function (Euler
- Taveira de Oliveira, Matthias Schmidt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the full use of time zone names in <command>AT TIME
- ZONE</command>, not just the short list previously available (Magnus)
- </para>
- <para>
- Previously, only a predefined list of time zone names were
- supported by <command>AT TIME ZONE</command>. Now any supported time
- zone name can be used, e.g.:
-<programlisting>
-SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
-</programlisting>
- In the above query, the time zone used is adjusted based on the
- daylight saving time rules that were in effect on the supplied
- date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>GREATEST()</function> and <function>LEAST()</function> variadic
- functions (Pavel Stehule)
- </para>
- <para>
- These functions take a variable number of arguments and return
- the greatest or least value among the arguments.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_column_size()</function> (Mark Kirkwood)
- </para>
- <para>
- This returns storage size of a column, which might be compressed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>regexp_replace()</function> (Atsushi Ogawa)
- </para>
- <para>
- This allows regular expression replacement, like sed. An optional
- flag argument allows selection of global (replace all) and
- case-insensitive modes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interval division and multiplication (Bruce)
- </para>
- <para>
- Previous versions sometimes returned unjustified results, like
- <command>'4 months'::interval / 5</command> returning <command>'1 mon
- -6 days'</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix roundoff behavior in timestamp, time, and interval output (Tom)
- </para>
- <para>
- This fixes some cases in which the seconds field would be shown as
- <literal>60</literal> instead of incrementing the higher-order fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a separate day field to type <type>interval</type> so a one day
- interval can be distinguished from a 24 hour interval (Michael
- Glaesemann)
- </para>
- <para>
- Days that contain a daylight saving time adjustment are not 24
- hours long, but typically 23 or 25 hours. This change creates a
- conceptual distinction between intervals of <quote>so many days</quote>
- and intervals of <quote>so many hours</quote>. Adding
- <literal>1 day</literal> to a timestamp now gives the same local time on
- the next day even if a daylight saving time adjustment occurs
- between, whereas adding <literal>24 hours</literal> will give a different
- local time when this happens. For example, under US DST rules:
-<programlisting>
-'2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04'
-'2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04'
-</programlisting>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>justify_days()</function> and <function>justify_hours()</function>
- (Michael Glaesemann)
- </para>
- <para>
- These functions, respectively, adjust days to an appropriate
- number of full months and days, and adjust hours to an
- appropriate number of full days and hours.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move <filename>/contrib/dbsize</filename> into the backend, and rename
- some of the functions (Dave Page, Andreas Pflug)
- </para>
- <para>
- <itemizedlist>
-
- <listitem>
- <para>
- <function>pg_tablespace_size()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_database_size()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_relation_size()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_total_relation_size()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_size_pretty()</function>
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
- <para>
- <function>pg_total_relation_size()</function> includes indexes and TOAST
- tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add functions for read-only file access to the cluster directory
- (Dave Page, Andreas Pflug)
- </para>
- <para>
- <itemizedlist>
-
- <listitem>
- <para>
- <function>pg_stat_file()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_read_file()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>pg_ls_dir()</function>
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_reload_conf()</function> to force reloading of the
- configuration files (Dave Page, Andreas Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_rotate_logfile()</function> to force rotation of the
- server log file (Dave Page, Andreas Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <literal>pg_stat_*</literal> views to include TOAST tables (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Encoding and Locale Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Rename some encodings to be more consistent and to follow
- international standards (Bruce)
- </para>
- <para>
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>UNICODE</literal> is now <literal>UTF8</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ALT</literal> is now <literal>WIN866</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>WIN</literal> is now <literal>WIN1251</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>TCVN</literal> is now <literal>WIN1258</literal>
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
-
- <para>
- The original names still work.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>WIN1252</literal> encoding (Roland Volkmann)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for four-byte <literal>UTF8</literal> characters (John
- Hansen)
- </para>
- <para>
- Previously only one, two, and three-byte <literal>UTF8</literal> characters
- were supported. This is particularly important for support for
- some Chinese character sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow direct conversion between <literal>EUC_JP</literal> and
- <literal>SJIS</literal> to improve performance (Atsushi Ogawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the UTF8 encoding to work on Windows (Magnus)
- </para>
- <para>
- This is done by mapping UTF8 to the Windows-native UTF16
- implementation.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>General Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>ALTER LANGUAGE RENAME</command> (Sergey Yatskevich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow function characteristics, like strictness and volatility,
- to be modified via <command>ALTER FUNCTION</command> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum number of function arguments to 100 (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow SQL and PL/pgSQL functions to use <command>OUT</command> and
- <command>INOUT</command> parameters (Tom)
- </para>
- <para>
- <command>OUT</command> is an alternate way for a function to return
- values. Instead of using <command>RETURN</command>, values can be
- returned by assigning to parameters declared as <command>OUT</command> or
- <command>INOUT</command>. This is notationally simpler in some cases,
- particularly so when multiple values need to be returned.
- While returning multiple values from a function
- was possible in previous releases, this greatly simplifies the
- process. (The feature will be extended to other server-side
- languages in future releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move language handler functions into the <literal>pg_catalog</literal> schema
- </para>
- <para>
- This makes it easier to drop the public schema if desired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>SPI_getnspname()</function> to SPI (Neil)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>PL/pgSQL Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Overhaul the memory management of PL/pgSQL functions (Neil)
- </para>
- <para>
- The parsetree of each function is now stored in a separate
- memory context. This allows this memory to be easily reclaimed
- when it is no longer needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check function syntax at <command>CREATE FUNCTION</command> time,
- rather than at runtime (Neil)
- </para>
- <para>
- Previously, most syntax errors were reported only when the
- function was executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>OPEN</command> to open non-<command>SELECT</command> queries
- like <command>EXPLAIN</command> and <command>SHOW</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- No longer require functions to issue a <command>RETURN</command>
- statement (Tom)
- </para>
- <para>
- This is a byproduct of the newly added <command>OUT</command> and
- <command>INOUT</command> functionality. <command>RETURN</command> can
- be omitted when it is not needed to provide the function's
- return value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for an optional <command>INTO</command> clause to
- PL/pgSQL's <command>EXECUTE</command> statement (Pavel Stehule, Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE TABLE AS</command> set <command>ROW_COUNT</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Define <literal>SQLSTATE</literal> and <literal>SQLERRM</literal> to return
- the <literal>SQLSTATE</literal> and error message of the current
- exception (Pavel Stehule, Neil)
- </para>
- <para>
- These variables are only defined inside exception blocks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the parameters to the <command>RAISE</command> statement to be
- expressions (Pavel Stehule, Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a loop <command>CONTINUE</command> statement (Pavel Stehule, Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow block and loop labels (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>PL/Perl Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow large result sets to be returned efficiently (Abhijit
- Menon-Sen)
- </para>
- <para>
- This allows functions to use <function>return_next()</function> to avoid
- building the entire result set in memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
- </para>
- <para>
- This allows functions to use <function>spi_query()</function> and
- <function>spi_fetchrow()</function> to avoid accumulating the entire
- result set in memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force PL/Perl to handle strings as <literal>UTF8</literal> if the
- server encoding is <literal>UTF8</literal> (David Kamholz)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a validator function for PL/Perl (Andrew)
- </para>
- <para>
- This allows syntax errors to be reported at definition time,
- rather than execution time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/Perl to return a Perl array when the function returns
- an array type (Andrew)
- </para>
- <para>
- This basically maps <productname>PostgreSQL</productname> arrays
- to Perl arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Perl nonfatal warnings to generate <command>NOTICE</command>
- messages (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Perl's <literal>strict</literal> mode to be enabled (Andrew)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title><application>psql</application> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <command>\set ON_ERROR_ROLLBACK</command> to allow statements in
- a transaction to error without affecting the rest of the
- transaction (Greg Sabino Mullane)
- </para>
- <para>
- This is basically implemented by wrapping every statement in a
- sub-transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>\x</literal> hex strings in
- <application>psql</application> variables (Bruce)
- </para>
- <para>
- Octal escapes were already supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <command>troff -ms</command> output format (Roger
- Leigh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the history file location to be controlled by
- <envar>HISTFILE</envar> (Andreas Seltenreich)
- </para>
- <para>
- This allows configuration of per-database history storage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>\x</command> (expanded mode) from affecting
- the output of <command>\d tablename</command> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>-L</option> option to <application>psql</application> to
- log sessions (Lorne Sunley)
- </para>
- <para>
- This option was added because some operating systems do not have
- simple command-line activity logging functionality.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d</command> show the tablespaces of indexes (Qingqing
- Zhou)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> help (<command>\h</command>) to
- make a best guess on the proper help information (Greg Sabino
- Mullane)
- </para>
- <para>
- This allows the user to just add <command>\h</command> to the front of
- the syntax error query and get help on the supported syntax.
- Previously any additional query text beyond the command name
- had to be removed to use <command>\h</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>\pset numericlocale</command> to allow numbers to be
- output in a locale-aware format (Eugen Nedelcu)
- </para>
- <para>
- For example, using <literal>C</literal> locale <literal>100000</literal> would
- be output as <literal>100,000.0</literal> while a European locale might
- output this value as <literal>100.000,0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make startup banner show both server version number and
- <application>psql</application>'s version number, when they are different (Bruce)
- </para>
- <para>
- Also, a warning will be shown if the server and <application>psql</application>
- are from different major releases.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title><application>pg_dump</application> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <option>-n</option> / <option>--schema</option> switch to
- <application>pg_restore</application> (Richard van den Berg)
- </para>
- <para>
- This allows just the objects in a specified schema to be restored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dump</application> to dump large objects even in
- text mode (Tom)
- </para>
- <para>
- With this change, large objects are now always dumped; the former
- <option>-b</option> switch is a no-op.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dump</application> to dump a consistent snapshot of
- large objects (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Dump comments for large objects (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--encoding</option> to <application>pg_dump</application>
- (Magnus Hagander)
- </para>
- <para>
- This allows a database to be dumped in an encoding that is
- different from the server's encoding. This is valuable when
- transferring the dump to a machine with a different encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rely on <structname>pg_pltemplate</structname> for procedural languages (Tom)
- </para>
- <para>
- If the call handler for a procedural language is in the
- <literal>pg_catalog</literal> schema, <application>pg_dump</application> does not
- dump the handler. Instead, it dumps the language using just
- <command>CREATE LANGUAGE <replaceable>name</replaceable></command>,
- relying on the <structname>pg_pltemplate</structname> catalog to provide
- the language's creation parameters at load time.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title><application>libpq</application> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <envar>PGPASSFILE</envar> environment variable to specify the
- password file's filename (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>lo_create()</function>, that is similar to
- <function>lo_creat()</function> but allows the OID of the large object
- to be specified (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>libpq</application> consistently return an error
- to the client application on <function>malloc()</function>
- failure (Neil)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Source Code Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> to support building against a relocated
- installation
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add spinlock support for the Itanium processor using Intel
- compiler (Vikram Kalsi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Kerberos 5 support for Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Chinese FAQ (laser@pgsqldb.com)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename Rendezvous to Bonjour to match OS/X feature renaming
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>fsync_writethrough</literal> on
- macOS (Chris Campbell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Streamline the passing of information within the server, the
- optimizer, and the lock system (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_config</application> to be compiled using MSVC (Andrew)
- </para>
- <para>
- This is required to build DBD::Pg using <application>MSVC</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove support for Kerberos V4 (Magnus)
- </para>
- <para>
- Kerberos 4 had security vulnerabilities and is no longer
- maintained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Code cleanups (Coverity static analysis performed by
- EnterpriseDB)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <filename>postgresql.conf</filename> to use documentation defaults
- <literal>on</literal>/<literal>off</literal> rather than
- <literal>true</literal>/<literal>false</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enhance <application>pg_config</application> to be able to report more
- build-time values (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application> to be built thread-safe
- on Windows (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow IPv6 connections to be used on Windows (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Server Administration documentation about I/O subsystem
- reliability (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move private declarations from <filename>gist.h</filename> to
- <filename>gist_private.h</filename> (Neil)
- </para>
-
- <para>
- In previous releases, <filename>gist.h</filename> contained both the
- public GiST API (intended for use by authors of GiST index
- implementations) as well as some private declarations used by
- the implementation of GiST itself. The latter have been moved
- to a separate file, <filename>gist_private.h</filename>. Most GiST
- index implementations should be unaffected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overhaul GiST memory management (Neil)
- </para>
-
- <para>
- GiST methods are now always invoked in a short-lived memory
- context. Therefore, memory allocated via <function>palloc()</function>
- will be reclaimed automatically, so GiST index implementations
- do not need to manually release allocated memory via
- <function>pfree()</function>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
-
- <sect3>
- <title>Contrib Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <filename>/contrib/pg_buffercache</filename> contrib module (Mark
- Kirkwood)
- </para>
- <para>
- This displays the contents of the buffer cache, for debugging and
- performance tuning purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <filename>/contrib/array</filename> because it is obsolete (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up the <filename>/contrib/lo</filename> module (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move <filename>/contrib/findoidjoins</filename> to
- <filename>/src/tools</filename> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <literal>&lt;&lt;</literal>, <literal>&gt;&gt;</literal>,
- <literal>&amp;&lt;</literal>, and <literal>&amp;&gt;</literal> operators from
- <filename>/contrib/cube</filename>
- </para>
- <para>
- These operators were not useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>/contrib/btree_gist</filename> (Janko Richter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>/contrib/pgbench</filename> (Tomoaki Sato, Tatsuo)
- </para>
- <para>
- There is now a facility for testing with SQL command scripts given
- by the user, instead of only a hard-wired command sequence.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>/contrib/pgcrypto</filename> (Marko Kreen)
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Implementation of OpenPGP symmetric-key and public-key encryption
- </para>
- <para>
- Both RSA and Elgamal public-key algorithms are supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
- </para>
- </listitem>
-
- <listitem>
- <para>
- OpenSSL build: support 3DES, use internal AES with OpenSSL &lt; 0.9.7
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take build parameters (OpenSSL, zlib) from <filename>configure</filename> result
- </para>
- <para>
- There is no need to edit the <filename>Makefile</filename> anymore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove support for <filename>libmhash</filename> and <filename>libmcrypt</filename>
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml
deleted file mode 100644
index d87c5bbd467..00000000000
--- a/doc/src/sgml/release-8.2.sgml
+++ /dev/null
@@ -1,7077 +0,0 @@
-<!-- doc/src/sgml/release-8.2.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-8-2-23">
- <title>Release 8.2.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.22.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 8.2.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.23</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- <para>
- However, a longstanding error was discovered in the definition of the
- <literal>information_schema.referential_constraints</literal> view. If you
- rely on correct results from that view, you should replace its
- definition as explained in the first changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in <literal>information_schema.referential_constraints</literal> view
- (Tom Lane)
- </para>
-
- <para>
- This view was being insufficiently careful about matching the
- foreign-key constraint to the depended-on primary or unique key
- constraint. That could result in failure to show a foreign key
- constraint at all, or showing it multiple times, or claiming that it
- depends on a different constraint than the one it really does.
- </para>
-
- <para>
- Since the view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can (as a superuser) drop the
- <literal>information_schema</literal> schema then re-create it by sourcing
- <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database
- to be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
- SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
- (Tom Lane)
- </para>
-
- <para>
- If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
- attempts to copy its data verbatim to another table could produce
- corrupt results in certain corner cases.
- The problem can only manifest in this precise form in 8.4 and later,
- but we patched earlier versions as well in case there are other code
- paths that could trigger the same bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition during toast table access from stale syscache entries
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was transient errors like <quote>missing chunk
- number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited
- toast table would always belong to a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locale support in <type>money</type> type's input and output
- (Tom Lane)
- </para>
-
- <para>
- Aside from not supporting all standard
- <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
- formatting options, the input and output functions were inconsistent,
- meaning there were locales in which dumped <type>money</type> values could
- not be re-read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't let <link
- linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
- affect <literal>CASE foo WHEN NULL ...</literal> constructs
- (Heikki Linnakangas)
- </para>
-
- <para>
- <varname>transform_null_equals</varname> is only supposed to affect
- <literal>foo = NULL</literal> expressions written directly by the user, not
- equality checks generated internally by this form of <literal>CASE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change foreign-key trigger creation order to better support
- self-referential foreign keys (Tom Lane)
- </para>
-
- <para>
- For a cascading foreign key that references its own table, a row update
- will fire both the <literal>ON UPDATE</literal> trigger and the
- <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
- trigger must execute first, else the <literal>CHECK</literal> will check a
- non-final state of the row and possibly throw an inappropriate error.
- However, the firing order of these triggers is determined by their
- names, which generally sort in creation order since the triggers have
- auto-generated names following the convention
- <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require
- modifying that convention, which we will do in 9.2, but it seems risky
- to change it in existing releases. So this patch just changes the
- creation order of the triggers. Users encountering this type of error
- should drop and re-create the foreign key constraint to get its
- triggers into the right order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve blank lines within commands in <application>psql</application>'s command
- history (Robert Haas)
- </para>
-
- <para>
- The former behavior could cause problems if an empty line was removed
- from within a string literal, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the preferred version of <application>xsubpp</application> to build PL/Perl,
- not necessarily the operating system's main copy
- (David Wheeler and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor query cancel interrupts promptly in <function>pgstatindex()</function>
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure VPATH builds properly install all server header files
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shorten file names reported in verbose error messages (Peter Eisentraut)
- </para>
-
- <para>
- Regular builds have always reported just the name of the C file
- containing the error message call, but VPATH builds formerly
- reported an absolute path name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interpretation of Windows timezone names for Central America
- (Tom Lane)
- </para>
-
- <para>
- Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not
- <literal>CST6CDT</literal>, because DST is generally not observed anywhere in
- Central America.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011n
- for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
- also historical corrections for Alaska and British East Africa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-22">
- <title>Release 8.2.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-26</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.21.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.2.X release series in December 2011.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.22</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs in GiST index page split processing (Heikki
- Linnakangas)
- </para>
-
- <para>
- The probability of occurrence was low, but these could lead to index
- corruption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly accessing off the end of memory in <command>ANALYZE</command>
- (Noah Misch)
- </para>
-
- <para>
- This fixes a very-low-probability server crash scenario.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in relcache init file invalidation (Tom Lane)
- </para>
-
- <para>
- There was a window wherein a new backend process could read a stale init
- file but miss the inval messages that would tell it the data is stale.
- The result would be bizarre failures in catalog accesses, typically
- <quote>could not read block 0 in file ...</quote> later during startup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak at end of a GiST index scan (Tom Lane)
- </para>
-
- <para>
- Commands that perform many separate GiST index scans, such as
- verification of a new GiST-based exclusion constraint on a table
- already containing many rows, could transiently require large amounts of
- memory due to this leak.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when constructing a large, lossy bitmap
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array- and path-creating functions to ensure padding bytes are
- zeroes (Tom Lane)
- </para>
-
- <para>
- This avoids some situations where the planner will think that
- semantically-equal constants are not equal, resulting in poor
- optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
- </para>
-
- <para>
- This could lead to loss of committed transactions after a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dump bug for <literal>VALUES</literal> in a view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <literal>SELECT FOR UPDATE/SHARE</literal> on sequences (Tom Lane)
- </para>
-
- <para>
- This operation doesn't work as expected and can lead to failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against integer overflow when computing size of a hash table (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability bugs in use of credentials control messages for
- <quote>peer</quote> authentication (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix typo in <function>pg_srand48</function> seed initialization (Andres Freund)
- </para>
-
- <para>
- This led to failure to use all bits of the provided seed. This function
- is not used on most platforms (only those without <function>srandom</function>),
- and the potential security exposure from a less-random-than-expected
- seed seems minimal in any case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow when the sum of <literal>LIMIT</literal> and
- <literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add overflow checks to <type>int4</type> and <type>int8</type> versions of
- <function>generate_series()</function> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp)
- </para>
-
- <para>
- In a format with <literal>FM</literal> and no digit positions
- after the decimal point, zeroes to the left of the decimal point could
- be removed incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_size_pretty()</function> to avoid overflow for inputs close to
- 2^63 (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s counting of script file line numbers during
- <literal>COPY</literal> from a different file (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- <varname>standard_conforming_strings</varname> (Tom Lane)
- </para>
-
- <para>
- <application>pg_restore</application> could emit incorrect commands when restoring
- directly to a database server from an archive file that had been made
- with <varname>standard_conforming_strings</varname> set to <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix write-past-buffer-end and memory leak in <application>libpq</application>'s
- LDAP service lookup code (Albe Laurenz)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, avoid failures when using nonblocking I/O
- and an SSL connection (Martin Pihlak, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve libpq's handling of failures during connection startup
- (Tom Lane)
- </para>
-
- <para>
- In particular, the response to a server report of <function>fork()</function>
- failure during SSL connection startup is now saner.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> write <type>double</type> values with 15 digits
- precision (Akira Kurosawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
- (Tom Lane)
- </para>
-
- <para>
- <filename>contrib/pg_crypto</filename>'s blowfish encryption code could give
- wrong results on platforms where char is signed (which is most),
- leading to encrypted passwords being weaker than they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/seg</filename> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgstatindex()</function> to give consistent results for empty
- indexes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow building with perl 5.14 (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update configure script's method for probing existence of system
- functions (Tom Lane)
- </para>
-
- <para>
- The version of autoconf we used in 8.3 and 8.2 could be fooled by
- compilers that perform link-time optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted issues with build and install file paths containing spaces
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011i
- for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-21">
- <title>Release 8.2.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-04-18</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.20.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.21</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid potential deadlock during catalog cache initialization
- (Nikhil Sontakke)
- </para>
-
- <para>
- In some cases the cache loading code would acquire share lock on a
- system index before locking the index's catalog. This could deadlock
- against processes trying to acquire exclusive locks in the other,
- more standard order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</literal> trigger
- handling when there was a concurrent update to the target tuple
- (Tom Lane)
- </para>
-
- <para>
- This bug has been observed to result in intermittent <quote>cannot
- extract system attribute from virtual tuple</quote> failures while trying to
- do <literal>UPDATE RETURNING ctid</literal>. There is a very small probability
- of more serious errors, such as generating incorrect index entries for
- the updated tuple.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>DROP TABLE</command> when there are pending deferred trigger
- events for the table (Tom Lane)
- </para>
-
- <para>
- Formerly the <command>DROP</command> would go through, leading to
- <quote>could not open relation with OID nnn</quote> errors when the
- triggers were eventually fired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python memory leak involving array slices (Daniel Popowich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to cope with long lines (over 1KB) in
- TOC files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put in more safeguards against crashing due to division-by-zero
- with overly enthusiastic compiler optimization (Aurelien Jarno)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
- </para>
-
- <para>
- There was a hard-wired assumption that this system function was not
- available on MIPS hardware on these systems. Use a compile-time test
- instead, since more recent versions have it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compilation failures on HP-UX (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix path separator used by <application>pg_regress</application> on Cygwin
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011f
- for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
- and Turkey; also historical corrections for South Australia, Alaska,
- and Hawaii.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-20">
- <title>Release 8.2.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.19.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.20</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures when <command>EXPLAIN</command> tries to display a simple-form
- <literal>CASE</literal> expression (Tom Lane)
- </para>
-
- <para>
- If the <literal>CASE</literal>'s test expression was a constant, the planner
- could simplify the <literal>CASE</literal> into a form that confused the
- expression-display code, resulting in <quote>unexpected CASE WHEN
- clause</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assignment to an array slice that is before the existing range
- of subscripts (Tom Lane)
- </para>
-
- <para>
- If there was a gap between the newly added subscripts and the first
- pre-existing subscript, the code miscalculated how many entries needed
- to be copied from the old array's null bitmap, potentially leading to
- data corruption or crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unexpected conversion overflow in planner for very distant date
- values (Tom Lane)
- </para>
-
- <para>
- The <type>date</type> type supports a wider range of dates than can be
- represented by the <type>timestamp</type> types, but the planner assumed it
- could always convert a date to timestamp with impunity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s text output for large objects (BLOBs)
- when <varname>standard_conforming_strings</varname> is on (Tom Lane)
- </para>
-
- <para>
- Although restoring directly to a database worked correctly, string
- escaping was incorrect if <application>pg_restore</application> was asked for
- SQL text output and <varname>standard_conforming_strings</varname> had been
- enabled in the source database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous parsing of <type>tsquery</type> values containing
- <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
- </para>
-
- <para>
- Queries containing this combination of operators were not executed
- correctly. The same error existed in <filename>contrib/intarray</filename>'s
- <type>query_int</type> type and <filename>contrib/ltree</filename>'s
- <type>ltxtquery</type> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in <filename>contrib/intarray</filename>'s input function
- for the <type>query_int</type> type (Apple)
- </para>
-
- <para>
- This bug is a security risk since the function's return address could
- be overwritten. Thanks to Apple Inc's security team for reporting this
- issue and supplying the fix. (CVE-2010-4015)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/seg</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>seg</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update. (This is identical to the bug that was fixed in
- <filename>contrib/cube</filename> in the previous update.)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-19">
- <title>Release 8.2.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-12-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.18.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.19</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force the default
- <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
- to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
- </para>
-
- <para>
- The default on Linux has actually been <literal>fdatasync</literal> for many
- years, but recent kernel changes caused <productname>PostgreSQL</productname> to
- choose <literal>open_datasync</literal> instead. This choice did not result
- in any performance improvement, and caused outright failures on
- certain filesystems, notably <literal>ext4</literal> with the
- <literal>data=journal</literal> mount option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in <quote>bad buffer id: 0</quote> failures or
- corruption of index contents during replication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recovery from base backup when the starting checkpoint WAL record
- is not in the same WAL segment as its redo point (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for detecting register-stack overrun on <literal>IA64</literal>
- (Tom Lane)
- </para>
-
- <para>
- The <literal>IA64</literal> architecture has two hardware stacks. Full
- prevention of stack-overrun failures requires checking both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a check for stack overflow in <function>copyObject()</function> (Tom Lane)
- </para>
-
- <para>
- Certain code paths could crash due to stack overflow given a
- sufficiently complex query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of page splits in temporary GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- It is possible to have a <quote>concurrent</quote> page split in a
- temporary index, if for example there is an open cursor scanning the
- index when an insertion is done. GiST failed to detect this case and
- hence could deliver wrong results when execution of the cursor
- continued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage while <command>ANALYZE</command>'ing complex index
- expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an index that uses a whole-row Var still depends on its table
- (Tom Lane)
- </para>
-
- <para>
- An index declared like <literal>create index i on t (foo(t.*))</literal>
- would not automatically get dropped when its table was dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
- parameters (Tom Lane)
- </para>
-
- <para>
- This avoids a possible crash due to loss of information about the
- expected result rowtype.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Behave correctly if <literal>ORDER BY</literal>, <literal>LIMIT</literal>,
- <literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the
- <literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane)
- </para>
-
- <para>
- The planner would sometimes attempt to evaluate sub-expressions that
- in fact could never be reached, possibly leading to unexpected errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
- </para>
-
- <para>
- This avoids a failure when <varname>debug_print_parse</varname> is enabled
- and certain types of query are executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of distance from a point to a horizontal
- line segment (Tom Lane)
- </para>
-
- <para>
- This bug affected several different geometric distance-measurement
- operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote>
- expressions to not fail in recursion or error-recovery cases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application>'s handling of set-returning functions
- (Jan Urbanski)
- </para>
-
- <para>
- Attempts to call SPI functions within the iterator generating a set
- result would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>cube</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't emit <quote>identifier will be truncated</quote> notices in
- <filename>contrib/dblink</filename> except when creating new connections
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential coredump on missing public key in
- <filename>contrib/pgcrypto</filename> (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010o
- for DST law changes in Fiji and Samoa;
- also historical corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-18">
- <title>Release 8.2.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.17.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.18</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows shared-memory allocation code
- (Tsutomu Yamada, Magnus Hagander)
- </para>
-
- <para>
- This bug led to the often-reported <quote>could not reattach to shared
- memory</quote> error message. This is a back-patch of a fix that was
- applied to newer branches some time ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</literal>) as non-fatal on
- Windows (Magnus Hagander)
- </para>
-
- <para>
- Under high load, Windows processes will sometimes fail at startup with
- this error code. Formerly the postmaster treated this as a panic
- condition and restarted the whole database, but that seems to be
- an overreaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate scans of <literal>UNION ALL</literal> member relations
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
- and provide additional detail in the resulting error messages
- (Tom Lane)
- </para>
-
- <para>
- This should improve the system's robustness with corrupted indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent show_session_authorization() from crashing within autovacuum
- processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against functions returning setof record where not all the
- returned rows are actually of the same rowtype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when hashing a pass-by-reference function result
- (Tao Ma, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid recursion while assigning XIDs to heavily-nested
- subtransactions (Andres Freund, Robert Haas)
- </para>
-
- <para>
- The original coding could result in a crash if there was limited
- stack space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
- which could produce junk early in backend startup (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible data corruption in <command>ALTER TABLE ... SET
- TABLESPACE</command> when archiving is enabled (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
- TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Python, defend against null pointer results from
- <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle connection names longer than
- 62 bytes correctly (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>hstore(text, text)</function>
- function to <filename>contrib/hstore</filename> (Robert Haas)
- </para>
-
- <para>
- This function is the recommended substitute for the now-deprecated
- <literal>=&gt;</literal> operator. It was back-patched so that future-proofed
- code can be used with older server versions. Note that the patch will
- be effective only after <filename>contrib/hstore</filename> is installed or
- reinstalled in a particular database. Users might prefer to execute
- the <command>CREATE FUNCTION</command> command by hand, instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010l
- for DST law changes in Egypt and Palestine; also historical corrections
- for Finland.
- </para>
-
- <para>
- This change also adds new names for two Micronesian timezones:
- Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
- abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
- Pacific/Ponape.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make Windows' <quote>N. Central Asia Standard Time</quote> timezone map to
- Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
- </para>
-
- <para>
- Microsoft changed the DST behavior of this zone in the timezone update
- from KB976098. Asia/Novosibirsk is a better match to its new behavior.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-17">
- <title>Release 8.2.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.16.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.17</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash if a cache reset message is received during
- rebuild of a relcache entry (Heikki)
- </para>
-
- <para>
- This error was introduced in 8.2.16 while fixing a related failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite recursion in <application>psql</application> when expanding
- a variable that refers to itself (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\copy</literal> to not add spaces around
- a dot within <literal>\copy (select ...)</literal> (Tom)
- </para>
-
- <para>
- Addition of spaces around the decimal point in a numeric literal would
- result in a syntax error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crashes in syslogger process on Windows (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deal more robustly with incomplete time zone information in the
- Windows registry (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the set of known Windows time zone names (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010j
- for DST law changes in Argentina, Australian Antarctic, Bangladesh,
- Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
- also historical corrections for Taiwan.
- </para>
-
- <para>
- Also, add <literal>PKST</literal> (Pakistan Summer Time) to the default set of
- timezone abbreviations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-16">
- <title>Release 8.2.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.15.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.16</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during backend startup (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes due to not handling errors during relcache reload
- cleanly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when trying to recover from a failure in
- subtransaction start (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix server memory leak associated with use of savepoints and a client
- encoding different from server's encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
- index page split (Yoichi Hirai)
- </para>
-
- <para>
- This would result in index corruption, or even more likely an error
- during WAL replay, if we were unlucky enough to crash during
- end-of-recovery cleanup after having completed an incomplete GIST
- insertion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-to-bit-string conversions to handle the first fractional
- byte correctly when the output bit width is wider than the given
- integer by something other than a multiple of 8 bits (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
- report the next WAL segment's name when the end location is exactly at a
- segment boundary (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more cases of temporary-file leakage (Heikki)
- </para>
-
- <para>
- This corrects a problem introduced in the previous minor release.
- One case that failed is when a plpgsql function returning set is
- called within another function's exception handler.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve constraint exclusion processing of boolean-variable cases,
- in particular make it possible to exclude a partition that has a
- <quote>bool_column = false</quote> constraint (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible infinite loop if <function>SSL_read</function> or
- <function>SSL_write</function> fails without setting <varname>errno</varname> (Tom)
- </para>
-
- <para>
- This is reportedly possible with some Windows versions of
- <application>OpenSSL</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>numericlocale</literal> option to not
- format strings it shouldn't in latex and troff output formats (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>psql</application> return the correct exit status (3) when
- <literal>ON_ERROR_STOP</literal> and <literal>--single-transaction</literal> are
- both specified and an error occurs during the implied <command>COMMIT</command>
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix plpgsql failure in one case where a composite column is set to NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when calling PL/Perl functions from PL/PerlU
- or vice versa (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>volatile</literal> markings in PL/Python to avoid possible
- compiler-specific misbehavior (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
- memory management (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make building of <filename>contrib/xml2</filename> more robust on Windows
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in Windows signal handling (Radu Ilie)
- </para>
-
- <para>
- One known symptom of this bug is that rows in <structname>pg_listener</structname>
- could be dropped under heavy load.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010e
- for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-15">
- <title>Release 8.2.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.14.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.15</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.14,
- see <xref linkend="release-8-2-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that shared tuple-level locks held by prepared transactions are
- not ignored (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature drop of temporary files used for a cursor that is accessed
- within a subtransaction (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect logic for GiST index page splits, when the split depends
- on a non-first column of the index (Paul Ramsey)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't error out if recycling or removing an old WAL file fails at the
- end of checkpoint (Heikki)
- </para>
-
- <para>
- It's better to treat the problem as non-fatal and allow the checkpoint
- to complete. Future checkpoints will retry the removal. Such problems
- are not expected in normal operation, but have been seen to be
- caused by misdesigned Windows anti-virus and backup software.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure WAL files aren't repeatedly archived on Windows (Heikki)
- </para>
-
- <para>
- This is another symptom that could happen if some other process
- interfered with deletion of a no-longer-needed file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of ownership dependencies during <literal>CREATE OR
- REPLACE FUNCTION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with calling <literal>plperl</literal> from <literal>plperlu</literal> or vice
- versa (Tom)
- </para>
-
- <para>
- An error exit from the inner function could result in crashes due to
- failure to re-select the correct Perl interpreter for the outer function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leak when a PL/Perl function is redefined
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that Perl arrays are properly converted to
- <productname>PostgreSQL</productname> arrays when returned by a set-returning
- PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
- </para>
-
- <para>
- This worked correctly already for non-set-returning functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash in exception processing in PL/Python (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>psql</application>'s flex module is compiled with the correct
- system header definitions (Tom)
- </para>
-
- <para>
- This fixes build failures on platforms where
- <literal>--enable-largefile</literal> causes incompatible changes in the
- generated code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the timezone abbreviation files to match current reality (Joachim
- Wieland)
- </para>
-
- <para>
- This includes adding <literal>IDT</literal> and <literal>SGT</literal> to the default
- timezone abbreviation set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009s
- for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
- Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
- corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-14">
- <title>Release 8.2.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.13.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.14</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you have any hash indexes on <type>interval</type> columns,
- you must <command>REINDEX</command> them after updating to 8.2.14.
- Also, if you are upgrading from a version earlier than 8.2.11,
- see <xref linkend="release-8-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force WAL segment switch during <function>pg_start_backup()</function>
- (Heikki)
- </para>
-
- <para>
- This avoids corner cases that could render a base backup unusable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>LOAD</command> of an already-loaded loadable module
- into a no-op (Tom)
- </para>
-
- <para>
- Formerly, <command>LOAD</command> would attempt to unload and re-load the
- module, but this is unsafe and not all that useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords during LDAP authentication (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of sub-SELECTs appearing in the arguments of
- an outer-level aggregate function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs associated with fetching a whole-row value from the
- output of a Sort or Materialize plan node (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Revert planner change that disabled partial-index and constraint
- exclusion optimizations when there were more than 100 clauses in
- an AND or OR list (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash calculation for data type <type>interval</type> (Tom)
- </para>
-
- <para>
- This corrects wrong results for hash joins on interval values.
- It also changes the contents of hash indexes on interval columns.
- If you have any such indexes, you must <command>REINDEX</command> them
- after updating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
- suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
- </para>
-
- <para>
- It was previously handled as <literal>'th'</literal> (lowercase).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix calculation of distance between a point and a line segment (Tom)
- </para>
-
- <para>
- This led to incorrect results from a number of geometric operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>money</type> data type to work in locales where currency
- amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly round datetime input like
- <literal>00:12:57.9999999999999999999999999999</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix poor choice of page split point in GiST R-tree operator classes
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid performance degradation in bulk inserts into GIN indexes
- when the input values are (nearly) in sorted order (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly enforce NOT NULL domain constraints in some contexts in
- PL/pgSQL (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability issues in plperl initialization (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to not go into an infinite loop if
- <filename>postgresql.conf</filename> is empty (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/hstore</filename> throw an error when a key or
- value is too long to fit in its data structure, rather than
- silently truncating it (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
- properly handle the maximum number of parameters (twenty) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009l
- for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
- Argentina/San_Luis, Cuba, Jordan (historical correction only),
- Mauritius, Morocco, Palestine, Syria, Tunisia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-13">
- <title>Release 8.2.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-03-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.12.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.13</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.11,
- see <xref linkend="release-8-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</emphasis> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</command> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
-
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump when <function>to_char()</function> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure in <filename>contrib/tsearch2</filename> when C locale is
- used with a multi-byte encoding (Teodor)
- </para>
-
- <para>
- Crashes were possible on platforms where <type>wchar_t</type> is narrower
- than <type>int</type>; Windows in particular.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extreme inefficiency in <filename>contrib/tsearch2</filename> parser's
- handling of an email-like string containing multiple <literal>@</literal>
- characters (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix decompilation of <literal>CASE WHEN</literal> with an implicit coercion
- (Tom)
- </para>
-
- <para>
- This mistake could lead to Assert failures in an Assert-enabled build,
- or an <quote>unexpected CASE WHEN clause</quote> error message in other
- cases, when trying to examine or dump a view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
- </para>
-
- <para>
- If <command>CLUSTER</command> or a rewriting variant of <command>ALTER TABLE</command>
- were executed by someone other than the table owner, the
- <structname>pg_type</structname> entry for the table's TOAST table would end up
- marked as owned by that someone. This caused no immediate problems,
- since the permissions on the TOAST rowtype aren't examined by any
- ordinary database operation. However, it could lead to unexpected
- failures if one later tried to drop the role that issued the command
- (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</quote>
- warnings from <application>pg_dump</application> after having done so (in 8.3).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to not treat <literal>INTO</literal> after <command>INSERT</command> as
- an INTO-variables clause anywhere in the string, not only at the start;
- in particular, don't fail for <command>INSERT INTO</command> within
- <command>CREATE RULE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up PL/pgSQL error status variables fully at block exit
- (Ashesh Vashi and Dave Page)
- </para>
-
- <para>
- This is not a problem for PL/pgSQL itself, but the omission could cause
- the PL/pgSQL Debugger to crash while examining the state of a function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Retry failed calls to <function>CallNamedPipe()</function> on Windows
- (Steve Marshall, Magnus)
- </para>
-
- <para>
- It appears that this function can sometimes fail transiently;
- we previously treated any failure as a hard error, which could
- confuse <command>LISTEN</command>/<command>NOTIFY</command> as well as other
- operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-12">
- <title>Release 8.2.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-02-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.11.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.12</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.11,
- see <xref linkend="release-8-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve handling of URLs in <function>headline()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of overlength headlines in <function>headline()</function>
- function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible Assert failure or misconversion if an encoding
- conversion is created with the wrong conversion function for the
- specified pair of encodings (Tom, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible Assert failure if a statement executed in PL/pgSQL is
- rewritten into another kind of statement, for example if an
- <command>INSERT</command> is rewritten into an <command>UPDATE</command> (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a snapshot is available to datatype input functions (Tom)
- </para>
-
- <para>
- This primarily affects domains that are declared with <literal>CHECK</literal>
- constraints involving user-defined stable or immutable functions. Such
- functions typically fail if no snapshot has been set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make it safer for SPI-using functions to be used within datatype I/O;
- in particular, to be used in domain check constraints (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary locking of small tables in <command>VACUUM</command>
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a problem that made <literal>UPDATE RETURNING tableoid</literal>
- return zero instead of the correct OID (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner misestimation of selectivity when transitive equality
- is applied to an outer-join clause (Tom)
- </para>
-
- <para>
- This could result in bad plans for queries like
- <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's handling of long <literal>IN</literal> lists (Tom)
- </para>
-
- <para>
- This change avoids wasting large amounts of time on such lists
- when constraint exclusion is enabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the contents of a holdable cursor don't depend on the
- contents of TOAST tables (Tom)
- </para>
-
- <para>
- Previously, large field values in a cursor result might be represented
- as TOAST pointers, which would fail if the referenced table got dropped
- before the cursor is read, or if the large value is deleted and then
- vacuumed away. This cannot happen with an ordinary cursor,
- but it could with a cursor that is held past its creating transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when a set-returning function is terminated without
- reading its whole result (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s
- <function>dblink_get_result(text,bool)</function> function (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible garbage output from <filename>contrib/sslinfo</filename> functions
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application> script to properly report failure when
- unable to obtain linkage information for PL/Perl (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make all documentation reference <literal>pgsql-bugs</literal> and/or
- <literal>pgsql-hackers</literal> as appropriate, instead of the
- now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
- mailing lists (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009a (for
- Kathmandu and historical DST corrections in Switzerland, Cuba)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-11">
- <title>Release 8.2.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-11-03</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.10.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.11</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.7,
- see <xref linkend="release-8-2-7"/>. Also, if you were running a previous
- 8.2.X release, it is recommended to <command>REINDEX</command> all GiST
- indexes after the upgrade.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix GiST index corruption due to marking the wrong index entry
- <quote>dead</quote> after a deletion (Teodor)
- </para>
-
- <para>
- This would result in index searches failing to find rows they
- should have found. Corrupted indexes can be fixed with
- <command>REINDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix backend crash when the client encoding cannot represent a localized
- error message (Tom)
- </para>
-
- <para>
- We have addressed similar issues before, but it would still fail if
- the <quote>character has no equivalent</quote> message itself couldn't
- be converted. The fix is to disable localization and send the plain
- ASCII error message when we detect such a situation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when deeply nested functions are invoked from
- a trigger (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimization of <replaceable>expression</replaceable> <literal>IN</literal>
- (<replaceable>expression-list</replaceable>) queries (Tom, per an idea from Robert
- Haas)
- </para>
-
- <para>
- Cases in which there are query variables on the right-hand side had been
- handled less efficiently in 8.2.x and 8.3.x than in prior versions.
- The fix restores 8.1 behavior for such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-expansion of rule queries when a sub-<literal>SELECT</literal> appears
- in a function call in <literal>FROM</literal>, a multi-row <literal>VALUES</literal>
- list, or a <literal>RETURNING</literal> list (Tom)
- </para>
-
- <para>
- The usual symptom of this problem is an <quote>unrecognized node type</quote>
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak during rescan of a hashed aggregation plan (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an error is reported when a newly-defined PL/pgSQL trigger
- function is invoked as a normal function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible collision of <structfield>relfilenode</structfield> numbers
- when moving a table to another tablespace with <command>ALTER SET
- TABLESPACE</command> (Heikki)
- </para>
-
- <para>
- The command tried to re-use the existing filename, instead of
- picking one that is known unused in the destination directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect tsearch2 headline generation when single query
- item matches first word of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper display of fractional seconds in interval values when
- using a non-ISO datestyle in an <option>--enable-integer-datetimes</option>
- build (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
- behave correctly when the passed tuple and tuple descriptor have
- different numbers of columns (Tom)
- </para>
-
- <para>
- This situation is normal when a table has had columns added or removed,
- but these two functions didn't handle it properly.
- The only likely consequence is an incorrect error indication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s parsing of <command>CREATE ROLE</command> (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <filename>pg_control</filename> is opened in binary mode
- (Itagaki Takahiro)
- </para>
-
- <para>
- <application>pg_controldata</application> and <application>pg_resetxlog</application>
- did this incorrectly, and so could fail on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008i (for
- DST law changes in Argentina, Brazil, Mauritius, Syria)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-10">
- <title>Release 8.2.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-09-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.9.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.10</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.7,
- see <xref linkend="release-8-2-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bug in btree WAL recovery code (Heikki)
- </para>
-
- <para>
- Recovery failed if the WAL ended partway through a page split operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential miscalculation of <structfield>datfrozenxid</structfield> (Alvaro)
- </para>
-
- <para>
- This error may explain some recent reports of failure to remove old
- <structname>pg_clog</structname> data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen local lock counters from 32 to 64 bits (Tom)
- </para>
-
- <para>
- This responds to reports that the counters could overflow in
- sufficiently long transactions, leading to unexpected <quote>lock is
- already held</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate output of tuples during a GiST index scan (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed permissions checks when a view contains a simple
- <literal>UNION ALL</literal> construct (Heikki)
- </para>
-
- <para>
- Permissions for the referenced tables were checked properly, but not
- permissions for the view itself.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add checks in executor startup to ensure that the tuples produced by an
- <command>INSERT</command> or <command>UPDATE</command> will match the target table's
- current rowtype (Tom)
- </para>
-
- <para>
- <command>ALTER COLUMN TYPE</command>, followed by re-use of a previously
- cached plan, could produce this type of situation. The check protects
- against data corruption and/or crashes that could ensue.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible repeated drops during <command>DROP OWNED</command> (Tom)
- </para>
-
- <para>
- This would typically result in strange errors such as <quote>cache
- lookup failed for relation NNN</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>AT TIME ZONE</literal> to first try to interpret its timezone
- argument as a timezone abbreviation, and only try it as a full timezone
- name if that fails, rather than the other way around as formerly (Tom)
- </para>
-
- <para>
- The timestamp input functions have always resolved ambiguous zone names
- in this order. Making <literal>AT TIME ZONE</literal> do so as well improves
- consistency, and fixes a compatibility bug introduced in 8.1:
- in ambiguous cases we now behave the same as 8.0 and before did,
- since in the older versions <literal>AT TIME ZONE</literal> accepted
- <emphasis>only</emphasis> abbreviations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix datetime input functions to correctly detect integer overflow when
- running on a 64-bit platform (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent integer overflows during units conversion when displaying a
- configuration parameter that has units (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of writing very long log messages to syslog (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow spaces in the suffix part of an LDAP URL in
- <filename>pg_hba.conf</filename> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
- ON</literal> query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner bug with nested sub-select expressions (Tom)
- </para>
-
- <para>
- If the outer sub-select has no direct dependency on the parent query,
- but the inner one does, the outer value might not get recalculated
- for new parent query rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
- boolean results always result in two groups, regardless of the
- expressions' contents (Tom)
- </para>
-
- <para>
- This is very substantially more accurate than the regular <literal>GROUP
- BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
- <literal>IS NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to not fail when a <literal>FOR</literal> loop's target variable
- is a record containing composite-type fields (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
- about the encoding of data sent to or from Tcl (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, work around a Microsoft bug by preventing
- <application>libpq</application> from trying to send more than 64kB per system call
- (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- error reporting after failure to send a SQL command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to properly preserve postmaster
- command-line arguments across a <literal>restart</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008f (for
- DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
- Pakistan, Palestine, and Paraguay)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-9">
- <title>Release 8.2.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-06-12</para>
- </formalpara>
-
- <para>
- This release contains one serious and one minor bug fix over 8.2.8.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.9</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.7,
- see <xref linkend="release-8-2-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
- </para>
-
- <para>
- Before this fix, a negative constant in a view or rule might be dumped
- as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
- be <literal>(-42)::integer</literal> due to operator precedence rules.
- Usually this would make little difference, but it could interact with
- another recent patch to cause
- <productname>PostgreSQL</productname> to reject what had been a valid
- <command>SELECT DISTINCT</command> view query. Since this could result in
- <application>pg_dump</application> output failing to reload, it is being treated
- as a high-priority fix. The only released versions in which dump
- output is actually incorrect are 8.3.1 and 8.2.7.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER AGGREGATE ... OWNER TO</command> update
- <structname>pg_shdepend</structname> (Tom)
- </para>
-
- <para>
- This oversight could lead to problems if the aggregate was later
- involved in a <command>DROP OWNED</command> or <command>REASSIGN OWNED</command>
- operation.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-8">
- <title>Release 8.2.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>never released</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.7.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.8</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, if you are upgrading from a version earlier than 8.2.7,
- see <xref linkend="release-8-2-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
- occurred on Windows when using UTF-8 database encoding and a different
- client encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new
- column is correctly checked to see if it's been initialized to all
- non-nulls (Brendan Jurd)
- </para>
-
- <para>
- Previous versions neglected to check this requirement at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <command>CREATE TABLE</command> failure when inheriting the
- <quote>same</quote> constraint from multiple parent relations that
- inherited that constraint from a common ancestor (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to show the alias, if any, attached
- to the target table of an <command>UPDATE</command> or <command>DELETE</command>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GIN bug that could result in a <literal>too many LWLocks
- taken</literal> failure (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash when decompressing corrupted data
- (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair two places where SIGTERM exit of a backend could leave corrupted
- state in shared memory (Tom)
- </para>
-
- <para>
- Neither case is very important if SIGTERM is used to shut down the
- whole database cluster together, but there was a problem if someone
- tried to SIGTERM individual backends.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix conversions between ISO-8859-5 and other encodings to handle
- Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
- two dots) (Sergey Burladyan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several datatype input functions, notably <function>array_in()</function>,
- that were allowing unused bytes in their results to contain
- uninitialized, unpredictable values (Tom)
- </para>
-
- <para>
- This could lead to failures in which two apparently identical literal
- values were not seen as equal, resulting in the parser complaining
- about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal>
- expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case in regular-expression substring matching
- (<literal>substring(<replaceable>string</replaceable> from
- <replaceable>pattern</replaceable>)</literal>) (Tom)
- </para>
-
- <para>
- The problem occurs when there is a match to the pattern overall but
- the user has specified a parenthesized subexpression and that
- subexpression hasn't got a match. An example is
- <literal>substring('foo' from 'foo(bar)?')</literal>.
- This should return NULL, since <literal>(bar)</literal> isn't matched, but
- it was mistakenly returning the whole-pattern match instead (ie,
- <literal>foo</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008c (for
- DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
- Argentina/San_Luis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect result from <application>ecpg</application>'s
- <function>PGTYPEStimestamp_sub()</function> function (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix broken GiST comparison function for <filename>contrib/tsearch2</filename>'s
- <type>tsquery</type> type (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes in <filename>contrib/cube</filename> functions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <filename>contrib/xml2</filename>'s
- <function>xpath_table()</function> function when the input query returns a
- NULL value (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s makefile to not override
- <literal>CFLAGS</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
- 4.3 (Tom)
- </para>
-
- <para>
- This problem affects <quote>old style</quote> (V0) C functions that
- return boolean. The fix is already in 8.3, but the need to
- back-patch it was not realized at the time.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-7">
- <title>Release 8.2.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-03-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.6.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.7</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- However, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the Windows locale
- issue described below.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix character string comparison for Windows locales that consider
- different character combinations as equal (Tom)
- </para>
-
- <para>
- This fix applies only on Windows and only when using UTF-8
- database encoding. The same fix was made for all other cases
- over two years ago, but Windows with UTF-8 uses a separate code
- path that was not updated. If you are using a locale that
- considers some non-identical strings as equal, you may need to
- <command>REINDEX</command> to fix existing indexes on textual columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair potential deadlock between concurrent <command>VACUUM FULL</command>
- operations on different system catalogs (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
- race condition (Tom)
- </para>
-
- <para>
- In rare cases a session that had just executed a
- <command>LISTEN</command> might not get a notification, even though
- one would be expected because the concurrent transaction executing
- <command>NOTIFY</command> was observed to commit later.
- </para>
-
- <para>
- A side effect of the fix is that a transaction that has executed
- a not-yet-committed <command>LISTEN</command> command will not see any
- row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
- should it choose to look; formerly it would have. This behavior
- was never documented one way or the other, but it is possible that
- some applications depend on the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>LISTEN</command> and <command>UNLISTEN</command> within a
- prepared transaction (Tom)
- </para>
-
- <para>
- This was formerly allowed but trying to do it had various unpleasant
- consequences, notably that the originating backend could not exit
- as long as an <command>UNLISTEN</command> remained uncommitted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow dropping a temporary table within a
- prepared transaction (Heikki)
- </para>
-
- <para>
- This was correctly disallowed by 8.1, but the check was inadvertently
- broken in 8.2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash when an error occurs during a query using a hash index
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks in certain usages of set-returning functions (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix input of datetime values for February 29 in years BC (Tom)
- </para>
-
- <para>
- The former coding was mistaken about which years were leap years.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unrecognized node type</quote> error in some variants of
- <command>ALTER OWNER</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structname>pg_stat_activity</structname>.<structfield>waiting</structfield> flag
- is cleared when a lock wait is aborted (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of process permissions on Windows Vista (Dave, Magnus)
- </para>
-
- <para>
- In particular, this fix allows starting the server as the Administrator
- user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008a
- (in particular, recent Chile changes); adjust timezone abbreviation
- <literal>VET</literal> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to correctly extract the postmaster's port
- number from command-line options (Itagaki Takahiro, Tom)
- </para>
-
- <para>
- Previously, <literal>pg_ctl start -w</literal> could try to contact the
- postmaster on the wrong port, leading to bogus reports of startup
- failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fwrapv</option> to defend against possible misoptimization
- in recent <application>gcc</application> versions (Tom)
- </para>
-
- <para>
- This is known to be necessary when building <productname>PostgreSQL</productname>
- with <application>gcc</application> 4.3 or later.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- Correctly enforce <varname>statement_timeout</varname> values longer
- than <literal>INT_MAX</literal> microseconds (about 35 minutes) (Tom)
- </para>
-
- <para>
- This bug affects only builds with <option>--enable-integer-datetimes</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected PARAM_SUBLINK ID</quote> planner error when
- constant-folding simplifies a sub-select (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical errors in constraint-exclusion handling of <literal>IS
- NULL</literal> and <literal>NOT</literal> expressions (Tom)
- </para>
-
- <para>
- The planner would sometimes exclude partitions that should not
- have been excluded because of the possibility of NULL results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix another cause of <quote>failed to build any N-way joins</quote>
- planner errors (Tom)
- </para>
-
- <para>
- This could happen in cases where a clauseless join needed to be
- forced before a join clause could be exploited.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect constant propagation in outer-join planning (Tom)
- </para>
-
- <para>
- The planner could sometimes incorrectly conclude that a variable
- could be constrained to be equal to a constant, leading
- to wrong query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of constant expressions in <literal>ORDER BY</literal>
- and <literal>GROUP BY</literal> (Tom)
- </para>
-
- <para>
- An explicitly casted constant would be shown incorrectly. This could
- for example lead to corruption of a view definition during
- dump and reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to handle NOTICE messages correctly
- during COPY OUT (Tom)
- </para>
-
- <para>
- This failure has only been observed to occur when a user-defined
- datatype's output routine issues a NOTICE, but there is no
- guarantee it couldn't happen due to other causes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-6">
- <title>Release 8.2.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-01-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.5,
- including fixes for significant security issues.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.6</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent functions in indexes from executing with the privileges of
- the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
- </para>
-
- <para>
- Functions used in index expressions and partial-index
- predicates are evaluated whenever a new table entry is made. It has
- long been understood that this poses a risk of trojan-horse code
- execution if one modifies a table owned by an untrustworthy user.
- (Note that triggers, defaults, check constraints, etc. pose the
- same type of risk.) But functions in indexes pose extra danger
- because they will be executed by routine maintenance operations
- such as <command>VACUUM FULL</command>, which are commonly performed
- automatically under a superuser account. For example, a nefarious user
- can execute code with superuser privileges by setting up a
- trojan-horse index definition and waiting for the next routine vacuum.
- The fix arranges for standard maintenance operations
- (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
- and <command>CLUSTER</command>) to execute as the table owner rather than
- the calling user, using the same privilege-switching mechanism already
- used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
- this security measure, execution of <command>SET SESSION
- AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
- <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
- </para>
-
- <para>
- Suitably crafted regular-expression patterns could cause crashes,
- infinite or near-infinite looping, and/or massive memory consumption,
- all of which pose denial-of-service hazards for applications that
- accept regex search patterns from untrustworthy sources.
- (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
-
- <para>
- The fix that appeared for this in 8.2.5 was incomplete, as it plugged
- the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
- CVE-2007-3278)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in WAL replay for GIN indexes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GIN index build to work properly when
- <varname>maintenance_work_mem</varname> is 4GB or more (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2007k
- (in particular, recent Argentina changes) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's handling of LIKE/regex estimation in non-C locales
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning-speed problem for deep outer-join nests, as well as
- possible poor choice of join order (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure in some cases of <literal>WHERE false AND var IN
- (SELECT ...)</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE TABLE ... SERIAL</command> and
- <command>ALTER SEQUENCE ... OWNED BY</command> not change the
- <function>currval()</function> state of the sequence (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve the tablespace and storage parameters of indexes that are
- rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make archive recovery always start a new WAL timeline, rather than only
- when a recovery stop time was used (Simon)
- </para>
-
- <para>
- This avoids a corner-case risk of trying to overwrite an existing
- archived copy of the last WAL segment, and seems simpler and cleaner
- than the original definition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname>
- when the table is too small for it to be useful (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in <function>translate()</function> when using a multibyte
- database encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>corr()</function> return the correct result for negative
- correlation values (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow in <literal>extract(epoch from interval)</literal> for intervals
- exceeding 68 years (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Perl to not fail when a UTF-8 regular expression is used
- in a trusted function (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal>
- as <literal>int</literal> rather than <literal>char</literal> (Tom)
- </para>
-
- <para>
- While this could theoretically happen anywhere, no standard build of
- Perl did things this way ... until <productname>macOS</productname> 10.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to work correctly with Python 2.5 on 64-bit machines
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python to not crash on long exception messages (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to correctly handle inheritance child tables
- that have default expressions different from their parent's (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> crash when <varname>PGPASSFILE</varname> refers
- to a file that is not a plain file (Martin Pitt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>ecpg</application> parser fixes (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pgcrypto</filename> defend against
- <application>OpenSSL</application> libraries that fail on keys longer than 128
- bits; which is the case at least on some Solaris versions (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
- NULL rowid as a category in its own right, rather than crashing (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>tsvector</type> and <type>tsquery</type> output routines to
- escape backslashes correctly (Teodor, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a specific version of <productname>Autoconf</productname> to be used
- when re-generating the <command>configure</command> script (Peter)
- </para>
-
- <para>
- This affects developers and packagers only. The change was made
- to prevent accidental use of untested combinations of
- <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
- You can remove the version check if you really want to use a
- different <productname>Autoconf</productname> version, but it's
- your responsibility whether the result works or not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update <function>gettimeofday</function> configuration check so that
- <productname>PostgreSQL</productname> can be built on newer versions of
- <productname>MinGW</productname> (Magnus)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-5">
- <title>Release 8.2.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-09-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.4.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.5</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent index corruption when a transaction inserts rows and
- then aborts close to the end of a concurrent <command>VACUUM</command>
- on the same table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>ALTER DOMAIN ADD CONSTRAINT</literal> for cases involving
- domains over domains (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some planner problems with outer joins, notably poor
- size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</literal>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the <type>interval</type> data type to accept input consisting only of
- milliseconds or microseconds (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow timezone name to appear before the year in <type>timestamp</type> input (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixes for <acronym>GIN</acronym> indexes used by <filename>/contrib/tsearch2</filename> (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up rtree index insertion (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging so that log messages are never interleaved when using
- the syslogger process (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when <varname>log_min_error_statement</varname> logging runs out
- of memory (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of some foreign-key corner cases (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>stddev_pop(numeric)</function> and <function>var_pop(numeric)</function> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>REINDEX</command> and <command>CLUSTER</command> from failing
- due to attempting to process temporary tables of other sessions (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Windows socket and semaphore improvements (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>pg_ctl -w</command> work properly in Windows service mode (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory allocation bug when using <application>MIT Kerberos</application> on Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows
- because of possible encoding mismatches (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restrict <filename>/contrib/pgstattuple</filename> functions to superusers, for security reasons (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not let <filename>/contrib/intarray</filename> try to make its GIN opclass
- the default (this caused problems at dump/restore) (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-4">
- <title>Release 8.2.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-04-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.3,
- including a security fix.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.4</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support explicit placement of the temporary-table schema within
- <varname>search_path</varname>, and disable searching it for functions
- and operators (Tom)
- </para>
-
- <para>
- This is needed to allow a security-definer function to set a
- truly secure value of <varname>search_path</varname>. Without it,
- an unprivileged SQL user can use temporary objects to execute code
- with the privileges of the security-definer function (CVE-2007-2138).
- See <command>CREATE FUNCTION</command> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>shared_preload_libraries</varname> for Windows
- by forcing reload in each backend (Korry Douglas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> so it properly upper/lower cases localized day or month
- names (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>/contrib/tsearch2</filename> crash fixes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <command>COMMIT PREPARED</command> to be executed in the same
- database as the transaction was prepared in (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>pg_dump</command> to do binary backups larger than two gigabytes
- on Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New traditional (Taiwan) Chinese <acronym>FAQ</acronym> (Zhou Daojing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent the statistics collector from writing to disk too frequently (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
- <command>UPDATE</command> chains (Tom, Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in domains that use array types (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>pg_dump</command> so it can dump a serial column's sequence
- using <option>-t</option> when not also dumping the owning table
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Planner fixes, including improving outer join and bitmap scan
- selection logic (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible wrong answers or crash when a PL/pgSQL function tries
- to <literal>RETURN</literal> from within an <literal>EXCEPTION</literal> block
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PANIC during enlargement of a hash index (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-3">
- <title>Release 8.2.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-07</para>
- </formalpara>
-
- <para>
- This release contains two fixes from 8.2.2.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.3</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove overly-restrictive check for type length in constraints and
- functional indexes(Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-2">
- <title>Release 8.2.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.1, including
- a security fix.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.2</title>
-
- <para>
- A dump/restore is not required for those running 8.2.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove security vulnerabilities that allowed connected users
- to read backend memory (Tom)
- </para>
-
- <para>
- The vulnerabilities involve suppressing the normal check that a SQL
- function returns the data type it's declared to, and changing the
- data type of a table column (CVE-2007-0555, CVE-2007-0556). These
- errors can easily be exploited to cause a backend crash, and in
- principle might be used to read database content that the user
- should not be able to access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix not-so-rare-anymore bug wherein btree index page splits could fail
- due to choosing an infeasible split point (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Borland C compile scripts (L Bayuk)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle <function>to_char('CC')</function> for years ending in
- <literal>00</literal> (Tom)
- </para>
-
- <para>
- Year 2000 is in the twentieth century, not the twenty-first.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>/contrib/tsearch2</filename> localization improvements (Tatsuo, Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect permission check in
- <literal>information_schema.key_column_usage</literal> view (Tom)
- </para>
-
- <para>
- The symptom is <quote>relation with OID nnnnn does not exist</quote> errors.
- To get this fix without using <command>initdb</command>, use <command>CREATE OR
- REPLACE VIEW</command> to install the corrected definition found in
- <filename>share/information_schema.sql</filename>. Note you will need to do
- this in each database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>VACUUM</command> performance for databases with many tables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potentially incorrect results from index searches using
- <literal>ROW</literal> inequality conditions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten security of multi-byte character processing for UTF8 sequences
- over three bytes long (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bogus <quote>permission denied</quote> failures occurring on Windows
- due to attempts to fsync already-deleted files (Magnus, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug that could cause the statistics collector
- to hang on Windows (Magnus)
- </para>
-
- <para>
- This would in turn lead to autovacuum not working.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when an already-in-use PL/pgSQL function is
- updated (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible errors in processing PL/pgSQL exception blocks (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2-1">
- <title>Release 8.2.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-01-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.2.
- For information about new features in the 8.2 major release, see
- <xref linkend="release-8-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.2.1</title>
-
- <para>
- A dump/restore is not required for those running 8.2.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix crash with <literal>SELECT</literal> ... <literal>LIMIT ALL</literal> (also
- <literal>LIMIT NULL</literal>) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>Several /contrib/tsearch2</filename> fixes (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, make log messages coming from the operating system use
- <acronym>ASCII</acronym> encoding (Hiroshi Saito)
- </para>
-
- <para>
- This fixes a conversion problem when there is a mismatch between
- the encoding of the operating system and database server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows linking of <application>pg_dump</application> using
- <filename>win32.mak</filename>
- (Hiroshi Saito)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner mistakes for outer join queries (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several problems in queries involving sub-SELECTs (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in SPI during subtransaction abort (Tom)
- </para>
-
- <para>
- This affects all PL functions since they all use SPI.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve build speed of <acronym>PDF</acronym> documentation (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-add <acronym>JST</acronym> (Japan) timezone abbreviation (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimization decisions related to index scans (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <application>psql</application> print multi-byte combining characters as
- before, rather than output as <literal>\u</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve index usage of regular expressions that use parentheses (Tom)
- </para>
-
- <para>
- This improves <application>psql</application> <literal>\d</literal> performance also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dumpall</application> assume that databases have public
- <literal>CONNECT</literal> privilege, when dumping from a pre-8.2 server (Tom)
- </para>
-
- <para>
- This preserves the previous behavior that anyone can connect to a
- database if allowed by <filename>pg_hba.conf</filename>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-2">
- <title>Release 8.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-12-05</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- This release adds many functionality and performance improvements that
- were requested by users, including:
-
- <itemizedlist>
-
- <listitem>
- <para>
- Query language enhancements including <command>INSERT/UPDATE/DELETE
- RETURNING</command>, multirow <literal>VALUES</literal> lists, and
- optional target-table alias in
- <command>UPDATE</command>/<command>DELETE</command>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Index creation without blocking concurrent
- <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
- operations
- </para>
- </listitem>
-
- <listitem>
- <para>
- Many query optimization improvements, including support for
- reordering outer joins
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improved sorting performance with lower memory usage
- </para>
- </listitem>
-
- <listitem>
- <para>
- More efficient locking with better concurrency
- </para>
- </listitem>
-
- <listitem>
- <para>
- More efficient vacuuming
- </para>
- </listitem>
-
- <listitem>
- <para>
- Easier administration of warm standby servers
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <literal>FILLFACTOR</literal> support for tables and indexes
- </para>
- </listitem>
-
- <listitem>
- <para>
- Monitoring, logging, and performance tuning additions
- </para>
- </listitem>
-
- <listitem>
- <para>
- More control over creating and dropping objects
- </para>
- </listitem>
-
- <listitem>
- <para>
- Table inheritance relationships can be defined
- for and removed from pre-existing tables
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>COPY TO</command> can copy the output of an arbitrary
- <command>SELECT</command> statement
- </para>
- </listitem>
-
- <listitem>
- <para>
- Array improvements, including nulls in arrays
- </para>
- </listitem>
-
- <listitem>
- <para>
- Aggregate-function improvements, including multiple-input
- aggregates and SQL:2003 statistical functions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Many <filename>contrib/</filename> improvements
- </para>
- </listitem>
-
- </itemizedlist>
-
- </para>
-
- </sect2>
-
- <sect2>
- <title>Migration to Version 8.2</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is
- required for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Set <link
- linkend="guc-escape-string-warning"><varname>escape_string_warning</varname></link>
- to <literal>on</literal> by default (Bruce)
- </para>
-
- <para>
- This issues a warning if backslash escapes are used in
- <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</literal>)
- strings</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the <link linkend="sql-syntax-row-constructors">row
- constructor syntax</link> (<literal>ROW(...)</literal>) so that
- list elements <literal>foo.*</literal> will be expanded to a list
- of their member fields, rather than creating a nested
- row type field as formerly (Tom)
- </para>
-
- <para>
- The new behavior is substantially more useful since it
- allows, for example, triggers to check for data changes
- with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</literal>.
- The old behavior is still available by omitting <literal>.*</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="row-wise-comparison">row comparisons</link>
- follow <acronym>SQL</acronym> standard semantics and allow them
- to be used in index scans (Tom)
- </para>
-
- <para>
- Previously, row = and &lt;&gt; comparisons followed the
- standard but &lt; &lt;= &gt; &gt;= did not. A row comparison
- can now be used as an index constraint for a multicolumn
- index matching the row value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</optional> NULL</literal></link>
- tests follow <acronym>SQL</acronym> standard semantics (Tom)
- </para>
-
- <para>
- The former behavior conformed to the standard for simple cases
- with <literal>IS NULL</literal>, but <literal>IS NOT NULL</literal> would return
- true if any row field was non-null, whereas the standard says it
- should return true only when all fields are non-null.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-set-constraints"><command>SET
- CONSTRAINT</command></link> affect only one constraint (Kris Jurka)
- </para>
-
- <para>
- In previous releases, <command>SET CONSTRAINT</command> modified
- all constraints with a matching name. In this release,
- the schema search path is used to modify only the first
- matching constraint. A schema specification is also
- supported. This more nearly conforms to the SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>RULE</literal> permission for tables, for security reasons
- (Tom)
- </para>
-
- <para>
- As of this release, only a table's owner can create or modify
- rules for the table. For backwards compatibility,
- <command>GRANT</command>/<command>REVOKE RULE</command> is still accepted,
- but it does nothing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Array comparison improvements (Tom)
- </para>
-
- <para>
- Now array dimensions are also compared.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <link linkend="functions-array">array concatenation</link>
- to match documented behavior (Tom)
- </para>
-
- <para>
- This changes the previous behavior where concatenation
- would modify the array lower bound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make command-line options of <application>postmaster</application>
- and <link linkend="app-postgres"><application>postgres</application></link>
- identical (Peter)
- </para>
-
- <para>
- This allows the postmaster to pass arguments to each backend
- without using <literal>-o</literal>. Note that some options are now
- only available as long-form options, because there were conflicting
- single-letter options.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deprecate use of <application>postmaster</application> symbolic link (Peter)
- </para>
-
- <para>
- <application>postmaster</application> and <application>postgres</application>
- commands now act identically, with the behavior determined
- by command-line options. The <application>postmaster</application> symbolic link is
- kept for compatibility, but is not really needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <link
- linkend="guc-log-duration"><varname>log_duration</varname></link>
- to output even if the query is not output (Tom)
- </para>
-
- <para>
- In prior releases, <varname>log_duration</varname> only printed if
- the query appeared earlier in the log.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting"><function>to_char(time)</function></link>
- and <link
- linkend="functions-formatting"><function>to_char(interval)</function></link>
- treat <literal>HH</literal> and <literal>HH12</literal> as 12-hour
- intervals
- </para>
-
- <para>
- Most applications should use <literal>HH24</literal> unless they
- want a 12-hour display.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Zero unmasked bits in conversion from <link
- linkend="datatype-inet"><type>INET</type></link> to <link
- linkend="datatype-inet"><type>CIDR</type></link> (Tom)
- </para>
-
- <para>
- This ensures that the converted value is actually valid for
- <type>CIDR</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>australian_timezones</varname> configuration variable
- (Joachim Wieland)
- </para>
-
- <para>
- This variable has been superseded by a more general facility
- for configuring timezone abbreviations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve cost estimation for nested-loop index scans (Tom)
- </para>
-
- <para>
- This might eliminate the need to set unrealistically small
- values of <link
- linkend="guc-random-page-cost"><varname>random_page_cost</varname></link>.
- If you have been using a very small <varname>random_page_cost</varname>,
- please recheck your test cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change behavior of <command>pg_dump</command> <literal>-n</literal> and
- <literal>-t</literal> options. (Greg Sabino Mullane)
- </para>
- <para>
- See the <command>pg_dump</command> manual page for details.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <link linkend="libpq"><application>libpq</application></link>
- <function>PQdsplen()</function> to return a useful value (Martijn
- van Oosterhout)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Declare <link linkend="libpq"><application>libpq</application></link>
- <function>PQgetssl()</function> as returning <literal>void *</literal>,
- rather than <literal>SSL *</literal> (Martijn van Oosterhout)
- </para>
-
- <para>
- This allows applications to use the function without including
- the OpenSSL headers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- C-language loadable modules must now include a
- <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link>
- macro call for version compatibility checking
- (Martijn van Oosterhout)
- </para>
- </listitem>
-
- <listitem>
- <para>
- For security's sake, modules used by a PL/PerlU function are no
- longer available to PL/Perl functions (Andrew)
- </para>
- <note>
- <para>
- This also implies that data can no longer be shared between a PL/Perl
- function and a PL/PerlU function.
- Some Perl installations have not been compiled with the correct flags
- to allow multiple interpreters to exist within a single process.
- In this situation PL/Perl and PL/PerlU cannot both be used in a
- single backend. The solution is to get a Perl installation which
- supports multiple interpreters.
- </para>
- </note>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/xml2/</filename>, rename <function>xml_valid()</function> to
- <function>xml_is_well_formed()</function> (Tom)
- </para>
-
- <para>
- <function>xml_valid()</function> will remain for backward compatibility,
- but its behavior will change to do schema checking in a future
- release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <filename>contrib/ora2pg/</filename>, now at <ulink
- url="http://www.samse.fr/GPL/ora2pg"></ulink>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove contrib modules that have been migrated to PgFoundry:
- <filename>adddepend</filename>, <filename>dbase</filename>, <filename>dbmirror</filename>,
- <filename>fulltextindex</filename>, <filename>mac</filename>, <filename>userlock</filename>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove abandoned contrib modules:
- <filename>mSQL-interface</filename>, <filename>tips</filename>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <acronym>QNX</acronym> and <acronym>BEOS</acronym> ports (Bruce)
- </para>
-
- <para>
- These ports no longer had active maintainers.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the
- changes between <productname>PostgreSQL</productname> 8.2 and
- the previous major release.
- </para>
-
- <sect3>
- <title>Performance Improvements</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the planner to reorder <link linkend="queries-join">outer
- joins</link> in some circumstances (Tom)
- </para>
-
- <para>
- In previous releases, outer joins would always be evaluated in
- the order written in the query. This change allows the
- query optimizer to consider reordering outer joins, in cases where
- it can determine that the join order can be changed without
- altering the meaning of the query. This can make a
- considerable performance difference for queries involving
- multiple outer joins or mixed inner and outer joins.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve efficiency of <link
- linkend="functions-comparisons"><literal>IN</literal>
- (list-of-expressions)</link> clauses (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve sorting speed and reduce memory usage (Simon, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve subtransaction performance (Alvaro, Itagaki Takahiro,
- Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>FILLFACTOR</literal> to <link
- linkend="sql-createtable">table</link> and <link
- linkend="sql-createindex">index</link> creation (ITAGAKI
- Takahiro)
- </para>
-
- <para>
- This leaves extra free space in each table or index page,
- allowing improved performance as the database grows. This
- is particularly valuable to maintain clustering.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase default values for <link
- linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
- and <varname>max_fsm_pages</varname>
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locking performance by breaking the lock manager tables into
- sections
- (Tom)
- </para>
-
- <para>
- This allows locking to be more fine-grained, reducing
- contention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking requirements of sequential scans (Qingqing
- Zhou)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking required for database creation and destruction
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the optimizer's selectivity estimates for <link
- linkend="functions-like"><literal>LIKE</literal></link>, <link
- linkend="functions-like"><literal>ILIKE</literal></link>, and
- <link linkend="functions-posix-regexp">regular expression</link>
- operations (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planning of joins to <link linkend="ddl-inherit">inherited
- tables</link> and <link linkend="queries-union"><literal>UNION
- ALL</literal></link> views (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="guc-constraint-exclusion">constraint
- exclusion</link> to be applied to <link
- linkend="ddl-inherit">inherited</link> <command>UPDATE</command> and
- <command>DELETE</command> queries (Tom)
- </para>
-
- <para>
- <command>SELECT</command> already honored constraint exclusion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planning of constant <literal>WHERE</literal> clauses, such as
- a condition that depends only on variables inherited from an
- outer query level (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protocol-level unnamed prepared statements are re-planned
- for each set of <literal>BIND</literal> values (Tom)
- </para>
-
- <para>
- This improves performance because the exact parameter values
- can be used in the plan.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
- Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid extra scan of tables without indexes during <link
- linkend="sql-vacuum"><command>VACUUM</command></link> (Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve multicolumn <link linkend="gist"><acronym>GiST</acronym></link>
- indexing (Oleg, Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dead index entries before B-Tree page split (Junji
- Teramoto)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow a forced switch to a new transaction log file (Simon, Tom)
- </para>
-
- <para>
- This is valuable for keeping warm standby slave servers
- in sync with the master. Transaction log file switching now also happens
- automatically during <link
- linkend="functions-admin"><function>pg_stop_backup()</function></link>.
- This ensures that all
- transaction log files needed for recovery can be archived immediately.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>WAL</acronym> informational functions (Simon)
- </para>
-
- <para>
- Add functions for interrogating the current transaction log insertion
- point and determining <acronym>WAL</acronym> filenames from the
- hex <acronym>WAL</acronym> locations displayed by <link
- linkend="functions-admin"><function>pg_stop_backup()</function></link>
- and related functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve recovery from a crash during <acronym>WAL</acronym> replay (Simon)
- </para>
-
- <para>
- The server now does periodic checkpoints during <acronym>WAL</acronym>
- recovery, so if there is a crash, future <acronym>WAL</acronym>
- recovery is shortened. This also eliminates the need for
- warm standby servers to replay the entire log since the
- base backup if they crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reliability of long-term <acronym>WAL</acronym> replay
- (Heikki, Simon, Tom)
- </para>
-
- <para>
- Formerly, trying to roll forward through more than 2 billion
- transactions would not work due to XID wraparound. This meant
- warm standby servers had to be reloaded
- from fresh base backups periodically.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="guc-archive-timeout"><varname>archive_timeout</varname></link>
- to force transaction log file switches at a given interval (Simon)
- </para>
-
- <para>
- This enforces a maximum replication delay for warm standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add native <link linkend="auth-ldap"><acronym>LDAP</acronym></link>
- authentication (Magnus Hagander)
- </para>
-
- <para>
- This is particularly useful for platforms that do not
- support <acronym>PAM</acronym>, such as Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-grant-description-objects"><literal>GRANT
- CONNECT ON DATABASE</literal></link> (Gevik Babakhani)
- </para>
-
- <para>
- This gives SQL-level control over database access. It works as
- an additional filter on top of the existing
- <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- controls.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="ssl-tcp"><acronym>SSL</acronym>
- Certificate Revocation List</link> (<acronym>CRL</acronym>) files
- (Libor Hoho&scaron;)
- </para>
-
- <para>
- The server and <application>libpq</application> both recognize <acronym>CRL</acronym>
- files now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="gist"><acronym>GiST</acronym></link> indexes are
- now clusterable (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove routine autovacuum server log entries (Bruce)
- </para>
-
- <para>
- <link
- linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
- now shows autovacuum activity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track maximum XID age within individual tables, instead of whole databases (Alvaro)
- </para>
-
- <para>
- This reduces the overhead involved in preventing transaction
- ID wraparound, by avoiding unnecessary VACUUMs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add last vacuum and analyze timestamp columns to the stats
- collector (Larry Rosenman)
- </para>
-
- <para>
- These values now appear in the <link
- linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</literal></link>
- system views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of statistics monitoring, especially
- <varname>stats_command_string</varname>
- (Tom, Bruce)
- </para>
-
- <para>
- This release enables <varname>stats_command_string</varname> by
- default, now that its overhead is minimal. This means
- <link
- linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
- will now show all active queries by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <literal>waiting</literal> column to <link
- linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
- (Tom)
- </para>
-
- <para>
- This allows <structname>pg_stat_activity</structname> to show all the
- information included in the <application>ps</application> display.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration parameter <link
- linkend="guc-update-process-title"><varname>update_process_title</varname></link>
- to control whether the <application>ps</application> display is updated
- for every command (Bruce)
- </para>
-
- <para>
- On platforms where it is expensive to update the <application>ps</application>
- display, it might be worthwhile to turn this off and rely solely on
- <structname>pg_stat_activity</structname> for status information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow units to be specified in configuration settings
- (Peter)
- </para>
-
- <para>
- For example, you can now set <link
- linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
- to <literal>32MB</literal> rather than mentally converting sizes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="config-setting">include
- directives</link> in <filename>postgresql.conf</filename> (Joachim
- Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve logging of protocol-level prepare/bind/execute
- messages (Bruce, Tom)
- </para>
-
- <para>
- Such logging now shows statement names, bind parameter
- values, and the text of the query being executed. Also,
- the query text is properly included in logged error messages
- when enabled by <varname>log_min_error_statement</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <link
- linkend="guc-max-stack-depth"><varname>max_stack_depth</varname></link>
- from being set to unsafe values
- </para>
-
- <para>
- On platforms where we can determine the actual kernel stack depth
- limit (which is most), make sure that the initial default value of
- <varname>max_stack_depth</varname> is safe, and reject attempts to set it
- to unsafely large values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable highlighting of error location in query in more
- cases (Tom)
- </para>
-
- <para>
- The server is now able to report a specific error location for
- some semantic errors (such as unrecognized column name), rather
- than just for basic syntax errors as before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to re-find parent key</quote> errors in
- <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean out <filename>pg_internal.init</filename> cache files during server
- restart (Simon)
- </para>
-
- <para>
- This avoids a hazard that the cache files might contain stale
- data after PITR recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition for truncation of a large relation across a
- gigabyte boundary by <command>VACUUM</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug causing needless deadlock errors on row-level locks (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs affecting multi-gigabyte hash indexes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Each backend process is now its own process group leader (Tom)
- </para>
-
- <para>
- This allows query cancel to abort subprocesses invoked from a
- backend or archive/recovery process.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Query Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-insert"><command>INSERT</command></link>/<link
- linkend="sql-update"><command>UPDATE</command></link>/<link
- linkend="sql-delete"><command>DELETE</command></link>
- <literal>RETURNING</literal> (Jonah Harris, Tom)
- </para>
-
- <para>
- This allows these commands to return values, such as the
- computed serial key for a new row. In the <command>UPDATE</command>
- case, values from the updated version of the row are returned.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for multiple-row <link
- linkend="queries-values"><literal>VALUES</literal></link> clauses,
- per SQL standard (Joe, Tom)
- </para>
-
- <para>
- This allows <command>INSERT</command> to insert multiple rows of
- constants, or queries to generate result sets using constants.
- For example, <literal>INSERT ... VALUES (...), (...),
- ....</literal>, and <literal>SELECT * FROM (VALUES (...), (...),
- ....) AS alias(f1, ...)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-update"><command>UPDATE</command></link>
- and <link linkend="sql-delete"><command>DELETE</command></link>
- to use an alias for the target table (Atsushi Ogawa)
- </para>
-
- <para>
- The SQL standard does not permit an alias in these commands, but
- many database systems allow one anyway for notational convenience.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-update"><command>UPDATE</command></link>
- to set multiple columns with a list of values (Susanne
- Ebrecht)
- </para>
-
- <para>
- This is basically a short-hand for assigning the columns
- and values in pairs. The syntax is <literal>UPDATE tab
- SET (<replaceable>column</replaceable>, ...) = (<replaceable>val</replaceable>, ...)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make row comparisons work per standard (Tom)
- </para>
-
- <para>
- The forms &lt;, &lt;=, &gt;, &gt;= now compare rows lexicographically,
- that is, compare the first elements, if equal compare the second
- elements, and so on. Formerly they expanded to an AND condition
- across all the elements, which was neither standard nor very useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-truncate"><literal>CASCADE</literal></link>
- option to <command>TRUNCATE</command> (Joachim Wieland)
- </para>
-
- <para>
- This causes <command>TRUNCATE</command> to automatically include all tables
- that reference the specified table(s) via foreign keys. While
- convenient, this is a dangerous tool &mdash; use with caution!
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>FOR UPDATE</literal> and <literal>FOR SHARE</literal>
- in the same <link linkend="sql-insert"><literal>SELECT</literal></link>
- command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="functions-comparisons"><literal>IS NOT
- DISTINCT FROM</literal></link> (Pavel Stehule)
- </para>
-
- <para>
- This operator is similar to equality (<literal>=</literal>), but
- evaluates to true when both left and right operands are
- <literal>NULL</literal>, and to false when just one is, rather than
- yielding <literal>NULL</literal> in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the length output used by <link
- linkend="queries-union"><literal>UNION</literal></link>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>
- (Tom)
- </para>
-
- <para>
- When all corresponding columns are of the same defined length, that
- length is used for the result, rather than a generic length.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="functions-like"><literal>ILIKE</literal></link>
- to work for multi-byte encodings (Tom)
- </para>
-
- <para>
- Internally, <literal>ILIKE</literal> now calls <function>lower()</function>
- and then uses <literal>LIKE</literal>. Locale-specific regular
- expression patterns still do not work in these encodings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable <link
- linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</varname></link>
- to be turned <literal>on</literal> (Kevin Grittner)
- </para>
-
- <para>
- This allows backslash escaping in strings to be disabled,
- making <productname>PostgreSQL</productname> more
- standards-compliant. The default is <literal>off</literal> for backwards
- compatibility, but future releases will default this to <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not flatten subqueries that contain <literal>volatile</literal>
- functions in their target lists (Jaime Casanova)
- </para>
-
- <para>
- This prevents surprising behavior due to multiple evaluation
- of a <literal>volatile</literal> function (such as <function>random()</function>
- or <function>nextval()</function>). It might cause performance
- degradation in the presence of functions that are unnecessarily
- marked as <literal>volatile</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add system views <link
- linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</literal></link>
- and <link
- linkend="view-pg-cursors"><literal>pg_cursors</literal></link>
- to show prepared statements and open cursors (Joachim Wieland, Neil)
- </para>
-
- <para>
- These are very useful in pooled connection setups.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support portal parameters in <link
- linkend="sql-explain"><command>EXPLAIN</command></link> and <link
- linkend="sql-execute"><command>EXECUTE</command></link> (Tom)
- </para>
-
- <para>
- This allows, for example, <acronym>JDBC</acronym> <literal>?</literal> parameters to
- work in these commands.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If <acronym>SQL</acronym>-level <link
- linkend="sql-prepare"><command>PREPARE</command></link> parameters
- are unspecified, infer their types from the content of the
- query (Neil)
- </para>
-
- <para>
- Protocol-level <command>PREPARE</command> already did this.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>LIMIT</literal> and <literal>OFFSET</literal> to exceed
- two billion (Dhanaraj M)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>TABLESPACE</literal> clause to <link
- linkend="sql-createtableas"><command>CREATE TABLE AS</command></link>
- (Neil)
- </para>
-
- <para>
- This allows a tablespace to be specified for the new table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>ON COMMIT</literal> clause to <link
- linkend="sql-createtableas"><command>CREATE TABLE AS</command></link>
- (Neil)
- </para>
-
- <para>
- This allows temporary tables to be truncated or dropped on
- transaction commit. The default behavior is for the table
- to remain until the session ends.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>INCLUDING CONSTRAINTS</literal> to <link
- linkend="sql-createtable"><command>CREATE TABLE LIKE</command></link>
- (Greg Stark)
- </para>
-
- <para>
- This allows easy copying of <literal>CHECK</literal> constraints to a new
- table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the creation of placeholder (shell) <link
- linkend="sql-createtype">types</link> (Martijn van Oosterhout)
- </para>
-
- <para>
- A shell type declaration creates a type name, without specifying
- any of the details of the type. Making a shell type is useful
- because it allows cleaner declaration of the type's input/output
- functions, which must exist before the type can be defined <quote>for
- real</quote>. The syntax is <command>CREATE TYPE <replaceable
- class="parameter">typename</replaceable></command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="sql-createaggregate">Aggregate functions</link>
- now support multiple input parameters (Sergey Koposov, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new aggregate creation <link
- linkend="sql-createaggregate">syntax</link> (Tom)
- </para>
-
- <para>
- The new syntax is <command>CREATE AGGREGATE
- <replaceable>aggname</replaceable> (<replaceable>input_type</replaceable>)
- (<replaceable>parameter_list</replaceable>)</command>. This more
- naturally supports the new multi-parameter aggregate
- functionality. The previous syntax is still supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="sql-alterrole"><command>ALTER ROLE PASSWORD NULL</command></link>
- to remove a previously set role password (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>DROP</command> object <literal>IF EXISTS</literal> for many
- object types (Andrew)
- </para>
-
- <para>
- This allows <command>DROP</command> operations on non-existent
- objects without generating an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-drop-owned"><literal>DROP OWNED</literal></link>
- to drop all objects owned by a role (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-reassign-owned"><literal>REASSIGN
- OWNED</literal></link> to reassign ownership of all objects owned
- by a role (Alvaro)
- </para>
-
- <para>
- This, and <literal>DROP OWNED</literal> above, facilitate dropping
- roles.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-grant"><command>GRANT ON SEQUENCE</command></link>
- syntax (Bruce)
- </para>
-
- <para>
- This was added for setting sequence-specific permissions.
- <literal>GRANT ON TABLE</literal> for sequences is still supported
- for backward compatibility.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-grant"><literal>USAGE</literal></link>
- permission for sequences that allows only <function>currval()</function>
- and <function>nextval()</function>, not <function>setval()</function>
- (Bruce)
- </para>
-
- <para>
- <literal>USAGE</literal> permission allows more fine-grained
- control over sequence access. Granting <literal>USAGE</literal>
- allows users to increment
- a sequence, but prevents them from setting the sequence to
- an arbitrary value using <function>setval()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-altertable"><literal>ALTER TABLE
- [ NO ] INHERIT</literal></link> (Greg Stark)
- </para>
-
- <para>
- This allows inheritance to be adjusted dynamically, rather than
- just at table creation and destruction. This is very valuable
- when using inheritance to implement table partitioning.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-comment">comments</link> on global
- objects to be stored globally (Kris Jurka)
- </para>
-
- <para>
- Previously, comments attached to databases were stored in individual
- databases, making them ineffective, and there was no provision
- at all for comments on roles or tablespaces. This change adds a new
- shared catalog <link
- linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
- and stores comments on databases, roles, and tablespaces therein.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Command Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add option to allow indexes to be created without blocking
- concurrent writes to the table (Greg Stark, Tom)
- </para>
-
- <para>
- The new syntax is <link linkend="sql-createindex"><command>CREATE
- INDEX CONCURRENTLY</command></link>. The default behavior is
- still to block table modification while an index is being
- created.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide <link linkend="functions-advisory-locks">advisory
- locking</link> functionality (Abhijit Menon-Sen, Tom)
- </para>
-
- <para>
- This is a new locking API designed to replace what used to be
- in /contrib/userlock. The userlock code is now on pgfoundry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-copy"><command>COPY</command></link> to
- dump a <command>SELECT</command> query (Zoltan Boszormenyi, Karel
- Zak)
- </para>
-
- <para>
- This allows <command>COPY</command> to dump arbitrary <acronym>SQL</acronym>
- queries. The syntax is <literal>COPY (SELECT ...) TO</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <link linkend="sql-copy"><command>COPY</command></link>
- command return a command tag that includes the number of
- rows copied (Volkan YAZICI)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-vacuum"><command>VACUUM</command></link>
- to expire rows without being affected by other concurrent
- <command>VACUUM</command> operations (Hannu Krossing, Alvaro, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="app-initdb"><application>initdb</application></link>
- detect the operating system locale and set the default
- <varname>DateStyle</varname> accordingly (Peter)
- </para>
-
- <para>
- This makes it more likely that the installed
- <filename>postgresql.conf</filename> <varname>DateStyle</varname> value will
- be as desired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce number of progress messages displayed by <application>initdb</application> (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Date/Time Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow full timezone names in <link
- linkend="datatype-datetime"><type>timestamp</type></link> input values
- (Joachim Wieland)
- </para>
-
- <para>
- For example, <literal>'2006-05-24 21:11
- America/New_York'::timestamptz</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support configurable timezone abbreviations (Joachim Wieland)
- </para>
-
- <para>
- A desired set of timezone abbreviations can be chosen via the
- configuration parameter <link
- linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</varname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</varname></link>
- and <link
- linkend="view-pg-timezone-names"><varname>pg_timezone_names</varname></link>
- views to show supported timezones (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-datetime-table"><function>clock_timestamp()</function></link>,
- <link
- linkend="functions-datetime-table"><function>statement_timestamp()</function></link>,
- and <link
- linkend="functions-datetime-table"><function>transaction_timestamp()</function></link>
- (Bruce)
- </para>
-
- <para>
- <function>clock_timestamp()</function> is the current wall-clock time,
- <function>statement_timestamp()</function> is the time the current
- statement arrived at the server, and
- <function>transaction_timestamp()</function> is an alias for
- <function>now()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-formatting"><function>to_char()</function></link>
- to print localized month and day names (Euler Taveira de
- Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-formatting"><function>to_char(time)</function></link>
- and <link
- linkend="functions-formatting"><function>to_char(interval)</function></link>
- to output <acronym>AM</acronym>/<acronym>PM</acronym> specifications
- (Bruce)
- </para>
-
- <para>
- Intervals and times are treated as 24-hour periods, e.g.
- <literal>25 hours</literal> is considered <acronym>AM</acronym>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new function <link
- linkend="functions-datetime-table"><function>justify_interval()</function></link>
- to adjust interval units (Mark Dilger)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow timezone offsets up to 14:59 away from GMT
- </para>
-
- <para>
- Kiribati uses GMT+14, so we'd better accept that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Interval computation improvements (Michael Glaesemann, Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Data Type and Function Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow arrays to contain <literal>NULL</literal> elements (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow assignment to array elements not contiguous with the existing
- entries (Tom)
- </para>
-
- <para>
- The intervening array positions will be filled with nulls.
- This is per SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New built-in <link linkend="functions-array">operators</link>
- for array-subset comparisons (<literal>@&gt;</literal>,
- <literal>&lt;@</literal>, <literal>&amp;&amp;</literal>) (Teodor, Tom)
- </para>
-
- <para>
- These operators can be indexed for many data types using
- <acronym>GiST</acronym> or <acronym>GIN</acronym> indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add convenient arithmetic <link
- linkend="cidr-inet-operators-table">operations</link> on
- <type>INET</type>/<type>CIDR</type> values (Stephen R. van den
- Berg)
- </para>
-
- <para>
- The new operators are <literal>&amp;</literal> (and), <literal>|</literal>
- (or), <literal>~</literal> (not), <type>inet</type> <literal>+</literal> <type>int8</type>,
- <type>inet</type> <literal>-</literal> <type>int8</type>, and
- <type>inet</type> <literal>-</literal> <type>inet</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <link
- linkend="functions-aggregate-statistics-table">aggregate functions</link>
- from SQL:2003 (Neil)
- </para>
-
- <para>
- The new functions are <function>var_pop()</function>,
- <function>var_samp()</function>, <function>stddev_pop()</function>, and
- <function>stddev_samp()</function>. <function>var_samp()</function> and
- <function>stddev_samp()</function> are merely renamings of the
- existing aggregates <function>variance()</function> and
- <function>stddev()</function>. The latter names remain available
- for backward compatibility.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add SQL:2003 statistical <link
- linkend="functions-aggregate-statistics-table">aggregates</link>
- (Sergey Koposov)
- </para>
-
- <para>
- New functions: <function>regr_intercept()</function>,
- <function>regr_slope()</function>, <function>regr_r2()</function>,
- <function>corr()</function>, <function>covar_samp()</function>,
- <function>covar_pop()</function>, <function>regr_avgx()</function>,
- <function>regr_avgy()</function>, <function>regr_sxy()</function>,
- <function>regr_sxx()</function>, <function>regr_syy()</function>,
- <function>regr_count()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createdomain">domains</link> to be
- based on other domains (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly enforce domain <link
- linkend="ddl-constraints"><literal>CHECK</literal></link> constraints
- everywhere (Neil, Tom)
- </para>
-
- <para>
- For example, the result of a user-defined function that is
- declared to return a domain type is now checked against the
- domain's constraints. This closes a significant hole in the domain
- implementation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problems with dumping renamed <link
- linkend="datatype-serial"><type>SERIAL</type></link> columns
- (Tom)
- </para>
-
- <para>
- The fix is to dump a <type>SERIAL</type> column by explicitly
- specifying its <literal>DEFAULT</literal> and sequence elements,
- and reconstructing the <type>SERIAL</type> column on reload
- using a new <link linkend="sql-altersequence"><command>ALTER
- SEQUENCE OWNED BY</command></link> command. This also allows
- dropping a <type>SERIAL</type> column specification.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a server-side sleep function <link
- linkend="functions-datetime-delay"><function>pg_sleep()</function></link>
- (Joachim Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add all comparison operators for the <link
- linkend="datatype-oid"><type>tid</type></link> (tuple id) data
- type (Mark Kirkwood, Greg Stark, Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/pgSQL Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>TG_table_name</literal> and <literal>TG_table_schema</literal> to
- trigger parameters (Andrew)
- </para>
-
- <para>
- <literal>TG_relname</literal> is now deprecated. Comparable
- changes have been made in the trigger parameters for the other
- PLs as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>FOR</literal> statements to return values to scalars
- as well as records and row types (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <literal>BY</literal> clause to the <literal>FOR</literal> loop,
- to control the iteration increment (Jaime Casanova)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>STRICT</literal> to <link
- linkend="plpgsql-statements-sql-onerow"><command>SELECT
- INTO</command></link> (Matt Miller)
- </para>
-
- <para>
- <literal>STRICT</literal> mode throws an exception if more or less
- than one row is returned by the <command>SELECT</command>, for
- <productname>Oracle PL/SQL</productname> compatibility.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/Perl Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>table_name</literal> and <literal>table_schema</literal> to
- trigger parameters (Adam Sj&oslash;gren)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add prepared queries (Dmitry Karasik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>$_TD</literal> trigger data a global variable (Andrew)
- </para>
-
- <para>
- Previously, it was lexical, which caused unexpected sharing
- violations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run PL/Perl and PL/PerlU in separate interpreters, for security
- reasons (Andrew)
- </para>
- <para>
- In consequence, they can no longer share data nor loaded modules.
- Also, if Perl has not been compiled with the requisite flags to
- allow multiple interpreters, only one of these languages can be used
- in any given backend process.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/Python Server-Side Language Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Named parameters are passed as ordinary variables, as well as in the
- <literal>args[]</literal> array (Sven Suursoho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>table_name</literal> and <literal>table_schema</literal> to
- trigger parameters (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow returning of composite types and result sets (Sven Suursoho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return result-set as <literal>list</literal>, <literal>iterator</literal>,
- or <literal>generator </literal>(Sven Suursoho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow functions to return <literal>void</literal> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Python 2.5 is now supported (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="app-psql"><application>psql</application></link> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add new command <literal>\password</literal> for changing role
- password with client-side password encryption (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>\c</literal> to connect to a new host and port
- number (David, Volkan YAZICI)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add tablespace display to <literal>\l+</literal> (Philip Yarra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <literal>\df</literal> slash command to include the argument
- names and modes (<literal>OUT</literal> or <literal>INOUT</literal>) of
- the function (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support binary <command>COPY</command> (Andreas Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add option to run the entire session in a single transaction
- (Simon)
- </para>
-
- <para>
- Use option <literal>-1</literal> or <literal>--single-transaction</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for automatically retrieving <command>SELECT</command>
- results in batches using a cursor (Chris Mair)
- </para>
-
- <para>
- This is enabled using <command>\set FETCH_COUNT
- <replaceable>n</replaceable></command>. This
- feature allows large result sets to be retrieved in
- <application>psql</application> without attempting to buffer the entire
- result set in memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make multi-line values align in the proper column
- (Martijn van Oosterhout)
- </para>
-
- <para>
- Field values containing newlines are now displayed in a more
- readable fashion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save multi-line statements as a single entry, rather than
- one line at a time (Sergey E. Koposov)
- </para>
-
- <para>
- This makes up-arrow recall of queries easier. (This is
- not available on Windows, because that platform uses the native
- command-line editing present in the operating system.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the line counter 64-bit so it can handle files with more
- than two billion lines (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report both the returned data and the command status tag
- for <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE
- RETURNING</command> (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow complex selection of objects to be included or excluded
- by <application>pg_dump</application> (Greg Sabino Mullane)
- </para>
-
- <para>
- <application>pg_dump</application> now supports multiple <literal>-n</literal>
- (schema) and <literal>-t</literal> (table) options, and adds
- <literal>-N</literal> and <literal>-T</literal> options to exclude objects.
- Also, the arguments of these switches can now be wild-card expressions
- rather than single object names, for example
- <literal>-t 'foo*'</literal>, and a schema can be part of
- a <literal>-t</literal> or <literal>-T</literal> switch, for example
- <literal>-t schema1.table1</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="app-pgrestore"><application>pg_restore</application></link>
- <literal>--no-data-for-failed-tables</literal> option to suppress
- loading data if table creation failed (i.e., the table already
- exists) (Martin Pitt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="app-pgrestore"><application>pg_restore</application></link>
- option to run the entire session in a single transaction
- (Simon)
- </para>
-
- <para>
- Use option <literal>-1</literal> or <literal>--single-transaction</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="libpq"><application>libpq</application></link> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="libpq-misc"><function>PQencryptPassword()</function></link>
- to encrypt passwords (Tom)
- </para>
-
- <para>
- This allows passwords to be sent pre-encrypted for commands
- like <link linkend="sql-alterrole"><command>ALTER ROLE ...
- PASSWORD</command></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function <link
- linkend="libpq-threading"><function>PQisthreadsafe()</function></link>
- (Bruce)
- </para>
-
- <para>
- This allows applications to query the thread-safety status
- of the library.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="libpq-exec-main"><function>PQdescribePrepared()</function></link>,
- <link
- linkend="libpq-exec-main"><function>PQdescribePortal()</function></link>,
- and related functions to return information about previously
- prepared statements and open cursors (Volkan YAZICI)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="libpq-ldap"><acronym>LDAP</acronym></link> lookups
- from <link
- linkend="libpq-pgservice"><filename>pg_service.conf</filename></link>
- (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a hostname in <link
- linkend="libpq-pgpass"><filename>~/.pgpass</filename></link>
- to match the default socket directory (Bruce)
- </para>
-
- <para>
- A blank hostname continues to match any Unix-socket connection,
- but this addition allows entries that are specific to one of
- several postmasters on the machine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="ecpg"><application>ecpg</application></link> Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="sql-show"><command>SHOW</command></link> to
- put its result into a variable (Joachim Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-copy"><command>COPY TO STDOUT</command></link>
- (Joachim Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add regression tests (Joachim Wieland, Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Major source code cleanups (Joachim Wieland, Michael)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><application>Windows</application> Port</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <acronym>MSVC</acronym> to compile the <productname>PostgreSQL</productname>
- server (Magnus, Hiroshi Saito)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>MSVC</acronym> support for utility commands and <link
- linkend="app-pgdump"><application>pg_dump</application></link> (Hiroshi
- Saito)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for Windows code pages <literal>1253</literal>,
- <literal>1254</literal>, <literal>1255</literal>, and <literal>1257</literal>
- (Kris Jurka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Drop privileges on startup, so that the server can be started from
- an administrative account (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Stability fixes (Qingqing Zhou, Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add native semaphore implementation (Qingqing Zhou)
- </para>
-
- <para>
- The previous code mimicked SysV semaphores.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Source Code Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="gin"><acronym>GIN</acronym></link> (Generalized
- Inverted iNdex) index access method (Teodor, Oleg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove R-tree indexing (Tom)
- </para>
-
- <para>
- Rtree has been re-implemented using <link
- linkend="gist"><acronym>GiST</acronym></link>. Among other
- differences, this means that rtree indexes now have support
- for crash recovery via write-ahead logging (WAL).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce libraries needlessly linked into the backend (Martijn
- van Oosterhout, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a configure flag to allow libedit to be preferred over
- <acronym>GNU</acronym> readline (Bruce)
- </para>
-
- <para>
- Use configure <link
- linkend="configure"><literal>--with-libedit-preferred</literal></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow installation into directories containing spaces
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve ability to relocate installation directories (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <productname>Solaris x86_64</productname> using the
- <productname>Solaris</productname> compiler (Pierre Girard, Theo
- Schlossnagle, Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>DTrace</application> support (Robert Lor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>PG_VERSION_NUM</literal> for use by third-party
- applications wanting to test the backend version in C using &gt;
- and &lt; comparisons (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>XLOG_BLCKSZ</literal> as independent from <literal>BLCKSZ</literal>
- (Mark Wong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>LWLOCK_STATS</literal> define to report locking
- activity (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Emit warnings for unknown <application>configure</application> options
- (Martijn van Oosterhout)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server support for <quote>plugin</quote> libraries
- that can be used for add-on tasks such as debugging and performance
- measurement (Korry Douglas)
- </para>
-
- <para>
- This consists of two features: a table of <quote>rendezvous
- variables</quote> that allows separately-loaded shared libraries to
- communicate, and a new configuration parameter <link
- linkend="guc-local-preload-libraries"><varname>local_preload_libraries</varname></link>
- that allows libraries to be loaded into specific sessions without
- explicit cooperation from the client application. This allows
- external add-ons to implement features such as a PL/pgSQL debugger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename existing configuration parameter
- <varname>preload_libraries</varname> to <link
- linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</varname></link>
- (Tom)
- </para>
-
- <para>
- This was done for clarity in comparison to
- <varname>local_preload_libraries</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new configuration parameter <link
- linkend="guc-server-version-num"><varname>server_version_num</varname></link>
- (Greg Sabino Mullane)
- </para>
-
- <para>
- This is like <varname>server_version</varname>, but is an
- integer, e.g. <literal>80200</literal>. This allows applications to
- make version checks more easily.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a configuration parameter <link
- linkend="guc-seq-page-cost"><varname>seq_page_cost</varname></link>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-implement the <link linkend="regress">regression test</link> script as a C program
- (Magnus, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow loadable modules to allocate shared memory and
- lightweight locks (Marc Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add automatic initialization and finalization of dynamically
- loaded libraries (Ralf Engelschall, Tom)
- </para>
-
- <para>
- New <link linkend="xfunc-c-dynload">functions</link>
- <function>_PG_init()</function> and <function>_PG_fini()</function> are
- called if the library defines such symbols. Hence we no
- longer need to specify an initialization function in
- <varname>shared_preload_libraries</varname>; we can assume that
- the library used the <function>_PG_init()</function> convention
- instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link>
- header block to all shared object files (Martijn van
- Oosterhout)
- </para>
-
- <para>
- The magic block prevents version mismatches between loadable object
- files and servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add shared library support for AIX (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New <link linkend="datatype-xml"><acronym>XML</acronym></link>
- documentation section (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Contrib Changes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Major tsearch2 improvements (Oleg, Teodor)
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- multibyte encoding support, including <acronym>UTF8</acronym>
- </para>
- </listitem>
- <listitem>
- <para>
- query rewriting support
- </para>
- </listitem>
- <listitem>
- <para>
- improved ranking functions
- </para>
- </listitem>
- <listitem>
- <para>
- thesaurus dictionary support
- </para>
- </listitem>
- <listitem>
- <para>
- Ispell dictionaries now recognize <application>MySpell</application>
- format, used by <application>OpenOffice</application>
- </para>
- </listitem>
- <listitem>
- <para>
- <acronym>GIN</acronym> support
- </para>
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- <listitem>
- <para>
- Add adminpack module containing <application>Pgadmin</application> administration
- functions (Dave)
- </para>
-
- <para>
- These functions provide additional file system access
- routines not present in the default <productname>PostgreSQL</productname>
- server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add sslinfo module (Victor Wagner)
- </para>
-
- <para>
- Reports information about the current connection's <acronym>SSL</acronym>
- certificate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add pgrowlocks module (Tatsuo)
- </para>
-
- <para>
- This shows row locking information for a specified table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add hstore module (Oleg, Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add isn module, replacing isbn_issn (Jeremy Kronuz)
- </para>
-
- <para>
- This new implementation supports <acronym>EAN13</acronym>, <acronym>UPC</acronym>,
- <acronym>ISBN</acronym> (books), <acronym>ISMN</acronym> (music), and
- <acronym>ISSN</acronym> (serials).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add index information functions to pgstattuple (ITAGAKI Takahiro,
- Satoshi Nagayasu)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add pg_freespacemap module to display free space map information
- (Mark Kirkwood)
- </para>
- </listitem>
-
- <listitem>
- <para>
- pgcrypto now has all planned functionality (Marko Kreen)
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Include iMath library in pgcrypto to have the public-key encryption
- functions always available.
- </para>
- </listitem>
- <listitem>
- <para>
- Add SHA224 algorithm that was missing in OpenBSD code.
- </para>
- </listitem>
- <listitem>
- <para>
- Activate builtin code for SHA224/256/384/512 hashes on older
- OpenSSL to have those algorithms always available.
- </para>
- </listitem>
- <listitem>
- <para>
- New function gen_random_bytes() that returns cryptographically strong
- randomness. Useful for generating encryption keys.
- </para>
- </listitem>
- <listitem>
- <para>
- Remove digest_exists(), hmac_exists() and cipher_exists() functions.
- </para>
- </listitem>
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Improvements to cube module (Joshua Reich)
- </para>
-
- <para>
- New functions are <function>cube(float[])</function>,
- <function>cube(float[], float[])</function>, and
- <function>cube_subset(cube, int4[])</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add async query capability to dblink (Kai Londenberg,
- Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New operators for array-subset comparisons (<literal>@&gt;</literal>,
- <literal>&lt;@</literal>, <literal>&amp;&amp;</literal>) (Tom)
- </para>
-
- <para>
- Various contrib packages already had these operators for their
- datatypes, but the naming wasn't consistent. We have now added
- consistently named array-subset comparison operators to the core code
- and all the contrib packages that have such functionality.
- (The old names remain available, but are deprecated.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add uninstall scripts for all contrib packages that have install
- scripts (David, Josh Drake)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml
deleted file mode 100644
index 021922966b3..00000000000
--- a/doc/src/sgml/release-8.3.sgml
+++ /dev/null
@@ -1,8549 +0,0 @@
-<!-- doc/src/sgml/release-8.3.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-8-3-23">
- <title>Release 8.3.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-02-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.22.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 8.3.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.23</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent execution of <function>enum_recv</function> from SQL (Tom Lane)
- </para>
-
- <para>
- The function was misdeclared, allowing a simple SQL command to crash the
- server. In principle an attacker might be able to use it to examine the
- contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP)
- for reporting this issue. (CVE-2013-0255)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL grammar to allow subscripting or field selection from a
- sub-SELECT result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against race conditions when scanning
- <structname>pg_tablespace</structname> (Stephen Frost, Tom Lane)
- </para>
-
- <para>
- <command>CREATE DATABASE</command> and <command>DROP DATABASE</command> could
- misbehave if there were concurrent updates of
- <structname>pg_tablespace</structname> entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>DROP OWNED</command> from trying to drop whole databases or
- tablespaces (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- For safety, ownership of these objects must be reassigned, not dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misbehavior when a <symbol>RowExpr</symbol> or <symbol>XmlExpr</symbol>
- is parse-analyzed twice (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This mistake could be user-visible in contexts such as
- <literal>CREATE TABLE LIKE INCLUDING INDEXES</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve defenses against integer overflow in hashtable sizing
- calculations (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that non-ASCII prompt strings are translated to the correct
- code page on Windows (Alexander Law, Noah Misch)
- </para>
-
- <para>
- This bug affected <application>psql</application> and some other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application>'s <command>\?</command> command
- when not connected to a database (Meng Qingzhong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <application>libpq</application>'s
- <function>PQprintTuples</function> (Xi Wang)
- </para>
-
- <para>
- This ancient function is not used anywhere by
- <productname>PostgreSQL</productname> itself, but it might still be used by some
- client code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange configure's tests for supplied functions so it is not
- fooled by bogus exports from libedit/libreadline (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure Windows build number increases over time (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgxs</application> build executables with the right
- <literal>.exe</literal> suffix when cross-compiling for Windows
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new timezone abbreviation <literal>FET</literal> (Tom Lane)
- </para>
-
- <para>
- This is now used in some eastern-European time zones.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-22">
- <title>Release 8.3.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-12-06</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.21.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.3.X release series in February 2013.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.22</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs associated with <command>CREATE INDEX
- CONCURRENTLY</command> (Andres Freund, Tom Lane)
- </para>
-
- <para>
- Fix <command>CREATE INDEX CONCURRENTLY</command> to use
- in-place updates when changing the state of an index's
- <structname>pg_index</structname> row. This prevents race conditions that could
- cause concurrent sessions to miss updating the target index, thus
- resulting in corrupt concurrently-created indexes.
- </para>
-
- <para>
- Also, fix various other operations to ensure that they ignore
- invalid indexes resulting from a failed <command>CREATE INDEX
- CONCURRENTLY</command> command. The most important of these is
- <command>VACUUM</command>, because an auto-vacuum could easily be launched
- on the table before corrective action can be taken to fix or remove
- the invalid index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corruption of internal hash tables when out of memory
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of non-strict equivalence clauses above outer joins
- (Tom Lane)
- </para>
-
- <para>
- The planner could derive incorrect constraints from a clause equating
- a non-strict construct to something else, for example
- <literal>WHERE COALESCE(foo, 0) = 0</literal>
- when <literal>foo</literal> is coming from the nullable side of an outer join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's ability to prove exclusion constraints from
- equivalence classes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix partial-row matching in hashed subplans to handle cross-type cases
- correctly (Tom Lane)
- </para>
-
- <para>
- This affects multicolumn <literal>NOT IN</literal> subplans, such as
- <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</literal>
- when for instance <literal>b</literal> and <literal>y</literal> are <type>int4</type>
- and <type>int8</type> respectively. This mistake led to wrong answers
- or crashes depending on the specific datatypes involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Acquire buffer lock when re-fetching the old tuple for an
- <literal>AFTER ROW UPDATE/DELETE</literal> trigger (Andres Freund)
- </para>
-
- <para>
- In very unusual circumstances, this oversight could result in passing
- incorrect data to the precheck logic for a foreign-key enforcement
- trigger. That could result in a crash, or in an incorrect decision
- about whether to fire the trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle grants on tablespaces
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore incorrect <structname>pg_attribute</structname> entries for system
- columns for views (Tom Lane)
- </para>
-
- <para>
- Views do not have any system columns. However, we forgot to
- remove such entries when converting a table to a view. That's fixed
- properly for 9.3 and later, but in previous branches we need to defend
- against existing mis-converted views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rule printing to dump <literal>INSERT INTO <replaceable>table</replaceable>
- DEFAULT VALUES</literal> correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against stack overflow when there are too many
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> clauses
- in a query (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent platform-dependent failures when dividing the minimum possible
- integer value by -1 (Xi Wang, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible access past end of string in date parsing
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Produce an understandable error message if the length of the path name
- for a Unix-domain socket exceeds the platform-specific limit
- (Tom Lane, Andrew Dunstan)
- </para>
-
- <para>
- Formerly, this would result in something quite unhelpful, such as
- <quote>Non-recoverable failure in name resolution</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when sending composite column values to the client
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> more robust about reading the
- <filename>postmaster.pid</filename> file (Heikki Linnakangas)
- </para>
-
- <para>
- Fix race conditions and possible file descriptor leakage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application> if incorrectly-encoded data
- is presented and the <varname>client_encoding</varname> setting is a
- client-only encoding, such as SJIS (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in the <filename>restore.sql</filename> script emitted by
- <application>pg_dump</application> in <literal>tar</literal> output format (Tom Lane)
- </para>
-
- <para>
- The script would fail outright on tables whose names include
- upper-case characters. Also, make the script capable of restoring
- data in <option>--inserts</option> mode as well as the regular COPY mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to accept POSIX-conformant
- <literal>tar</literal> files (Brian Weaver, Tom Lane)
- </para>
-
- <para>
- The original coding of <application>pg_dump</application>'s <literal>tar</literal>
- output mode produced files that are not fully conformant with the
- POSIX standard. This has been corrected for version 9.3. This
- patch updates previous branches so that they will accept both the
- incorrect and the corrected formats, in hopes of avoiding
- compatibility problems when 9.3 comes out.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_resetxlog</application> to locate <filename>postmaster.pid</filename>
- correctly when given a relative path to the data directory (Tom Lane)
- </para>
-
- <para>
- This mistake could lead to <application>pg_resetxlog</application> not noticing
- that there is an active postmaster using the data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s <function>lo_import()</function> and
- <function>lo_export()</function> functions to report file I/O errors properly
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of nested structure pointer
- variables (Muhammad Usama)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pageinspect</filename>'s btree page inspection
- functions take buffer locks while examining pages (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> support for building loadable modules on AIX
- (Tom Lane)
- </para>
-
- <para>
- Building modules outside the original source tree didn't work on AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012j
- for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
- Samoa, and portions of Brazil.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-21">
- <title>Release 8.3.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.20.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.3.X release series in February 2013.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.21</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
- Robert Haas, Tom Lane)
- </para>
-
- <para>
- Multi-column GiST indexes might suffer unexpected bloat due to this
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cascading privilege revoke to stop if privileges are still held
- (Tom Lane)
- </para>
-
- <para>
- If we revoke a grant option from some role <replaceable>X</replaceable>, but
- <replaceable>X</replaceable> still holds that option via a grant from someone
- else, we should not recursively revoke the corresponding privilege
- from role(s) <replaceable>Y</replaceable> that <replaceable>X</replaceable> had granted it
- to.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>SIGFPE</literal> when PL/Perl is in use (Andres Freund)
- </para>
-
- <para>
- Perl resets the process's <literal>SIGFPE</literal> handler to
- <literal>SIG_IGN</literal>, which could result in crashes later on. Restore
- the normal Postgres signal handler after initializing PL/Perl.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Perl from crashing if a recursive PL/Perl function is
- redefined while being executed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around possible misoptimization in PL/Perl (Tom Lane)
- </para>
-
- <para>
- Some Linux distributions contain an incorrect version of
- <filename>pthread.h</filename> that results in incorrect compiled code in
- PL/Perl, leading to crashes if a PL/Perl function calls another one
- that throws an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012f
- for DST law changes in Fiji
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-20">
- <title>Release 8.3.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-08-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.19.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.3.X release series in February 2013.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.20</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via XML entity references
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <function>xml_parse()</function> would attempt to fetch external files or
- URLs as needed to resolve DTD and entity references in an XML value,
- thus allowing unprivileged database users to attempt to fetch data
- with the privileges of the database server. While the external data
- wouldn't get returned directly to the user, portions of it could be
- exposed in error messages if the data didn't parse as valid XML; and
- in any case the mere ability to check existence of a file might be
- useful to an attacker. (CVE-2012-3489)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Peter Eisentraut)
- </para>
-
- <para>
- <application>libxslt</application> offers the ability to read and write both
- files and URLs through stylesheet commands, thus allowing
- unprivileged database users to both read and write data with the
- privileges of the database server. Disable that through proper use
- of <application>libxslt</application>'s security options. (CVE-2012-3488)
- </para>
-
- <para>
- Also, remove <function>xslt_process()</function>'s ability to fetch documents
- and stylesheets from external files/URLs. While this was a
- documented <quote>feature</quote>, it was long regarded as a bad idea.
- The fix for CVE-2012-3489 broke that capability, and rather than
- expend effort on trying to fix it, we're just going to summarily
- remove it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent too-early recycling of btree index pages (Noah Misch)
- </para>
-
- <para>
- When we allowed read-only transactions to skip assigning XIDs, we
- introduced the possibility that a deleted btree page could be
- recycled while a read-only transaction was still in flight to it.
- This would result in incorrect index search results. The probability
- of such an error occurring in the field seems very low because of the
- timing requirements, but nonetheless it should be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
- </para>
-
- <para>
- If <command>ALTER SEQUENCE</command> was executed on a freshly created or
- reset sequence, and then precisely one <function>nextval()</function> call
- was made on it, and then the server crashed, WAL replay would restore
- the sequence to a state in which it appeared that no
- <function>nextval()</function> had been done, thus allowing the first
- sequence value to be returned again by the next
- <function>nextval()</function> call. In particular this could manifest for
- <type>serial</type> columns, since creation of a serial column's sequence
- includes an <command>ALTER SEQUENCE OWNED BY</command> step.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the <filename>backup_label</filename> file is fsync'd after
- <function>pg_start_backup()</function> (Dave Kerr)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Back-patch 9.1 improvement to compress the fsync request queue
- (Robert Haas)
- </para>
-
- <para>
- This improves performance during checkpoints. The 9.1 change
- has now seen enough field testing to seem safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only allow autovacuum to be auto-canceled by a directly blocked
- process (Tom Lane)
- </para>
-
- <para>
- The original coding could allow inconsistent behavior in some cases;
- in particular, an autovacuum could get canceled after less than
- <literal>deadlock_timeout</literal> grace period.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve logging of autovacuum cancels (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix log collector so that <literal>log_truncate_on_rotation</literal> works
- during the very first log rotation after server start (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a whole-row reference to a subquery doesn't include any
- extra <literal>GROUP BY</literal> or <literal>ORDER BY</literal> columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow copying whole-row references in <literal>CHECK</literal>
- constraints and index definitions during <command>CREATE TABLE</command>
- (Tom Lane)
- </para>
-
- <para>
- This situation can arise in <command>CREATE TABLE</command> with
- <literal>LIKE</literal> or <literal>INHERITS</literal>. The copied whole-row
- variable was incorrectly labeled with the row type of the original
- table not the new one. Rejecting the case seems reasonable for
- <literal>LIKE</literal>, since the row types might well diverge later. For
- <literal>INHERITS</literal> we should ideally allow it, with an implicit
- coercion to the parent table's row type; but that will require more
- work than seems safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <literal>ARRAY(SELECT ...)</literal> subqueries (Heikki
- Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extraction of common prefixes from regular expressions (Tom Lane)
- </para>
-
- <para>
- The code could get confused by quantified parenthesized
- subexpressions, such as <literal>^(foo)?bar</literal>. This would lead to
- incorrect index optimization of searches for such patterns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report errors properly in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012e
- for DST law changes in Morocco and Tokelau
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-19">
- <title>Release 8.3.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-06-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.18.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.19</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect password transformation in
- <filename>contrib/pgcrypto</filename>'s DES <function>crypt()</function> function
- (Solar Designer)
- </para>
-
- <para>
- If a password string contained the byte value <literal>0x80</literal>, the
- remainder of the password was ignored, causing the password to be much
- weaker than it appeared. With this fix, the rest of the string is
- properly included in the DES hash. Any stored password values that are
- affected by this bug will thus no longer match, so the stored values may
- need to be updated. (CVE-2012-2143)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore <literal>SECURITY DEFINER</literal> and <literal>SET</literal> attributes for
- a procedural language's call handler (Tom Lane)
- </para>
-
- <para>
- Applying such attributes to a call handler could crash the server.
- (CVE-2012-2655)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow numeric timezone offsets in <type>timestamp</type> input to be up to
- 16 hours away from UTC (Tom Lane)
- </para>
-
- <para>
- Some historical time zones have offsets larger than 15 hours, the
- previous limit. This could result in dumped data values being rejected
- during reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timestamp conversion to cope when the given time is exactly the
- last DST transition time for the current timezone (Tom Lane)
- </para>
-
- <para>
- This oversight has been there a long time, but was not noticed
- previously because most DST-using zones are presumed to have an
- indefinite sequence of future DST transitions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>text</type> to <type>name</type> and <type>char</type> to <type>name</type>
- casts to perform string truncation correctly in multibyte encodings
- (Karl Schnaitter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory copying bug in <function>to_tsquery()</function> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow session startup when <structname>pg_attribute</structname> is very large
- (Tom Lane)
- </para>
-
- <para>
- If <structname>pg_attribute</structname> exceeds one-fourth of
- <varname>shared_buffers</varname>, cache rebuilding code that is sometimes
- needed during session start would trigger the synchronized-scan logic,
- causing it to take many times longer than normal. The problem was
- particularly acute if many new sessions were starting at once.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure sequential scans check for query cancel reasonably often (Merlin
- Moncure)
- </para>
-
- <para>
- A scan encountering many consecutive pages that contain no live tuples
- would not respond to interrupts meanwhile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the Windows implementation of <function>PGSemaphoreLock()</function>
- clears <varname>ImmediateInterruptOK</varname> before returning (Tom Lane)
- </para>
-
- <para>
- This oversight meant that a query-cancel interrupt received later
- in the same query could be accepted at an unsafe time, with
- unpredictable but not good consequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show whole-row variables safely when printing views or rules
- (Abbas Butt, Tom Lane)
- </para>
-
- <para>
- Corner cases involving ambiguous names (that is, the name could be
- either a table or column name of the query) were printed in an
- ambiguous way, risking that the view or rule would be interpreted
- differently after dump and reload. Avoid the ambiguous case by
- attaching a no-op cast.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure autovacuum worker processes perform stack depth checking
- properly (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, infinite recursion in a function invoked by
- auto-<command>ANALYZE</command> could crash worker processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to not lose log coherency under high load (Andrew
- Dunstan)
- </para>
-
- <para>
- The collector previously could fail to reassemble large messages if it
- got too busy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to ensure it will restart file rotation
- after receiving <systemitem>SIGHUP</systemitem> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's <command>GET DIAGNOSTICS</command> command when the target
- is the function's first variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several performance problems in <application>pg_dump</application> when
- the database contains many objects (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> could get very slow if the database contained
- many schemas, or if many objects are in dependency loops, or if there
- are many owned sequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s <function>dblink_exec()</function> to not leak
- temporary database connections upon error (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012c
- for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
- Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
- also historical corrections for Canada.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-18">
- <title>Release 8.3.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-02-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.17.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.18</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.3.17,
- see <xref linkend="release-8-3-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Require execute permission on the trigger function for
- <command>CREATE TRIGGER</command> (Robert Haas)
- </para>
-
- <para>
- This missing check could allow another user to execute a trigger
- function with forged input data, by installing it on a table he owns.
- This is only of significance for trigger functions marked
- <literal>SECURITY DEFINER</literal>, since otherwise trigger functions run
- as the table owner anyway. (CVE-2012-0866)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert newlines to spaces in names written in <application>pg_dump</application>
- comments (Robert Haas)
- </para>
-
- <para>
- <application>pg_dump</application> was incautious about sanitizing object names
- that are emitted within SQL comments in its output script. A name
- containing a newline would at least render the script syntactically
- incorrect. Maliciously crafted object names could present a SQL
- injection risk when the script is reloaded. (CVE-2012-0868)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree index corruption from insertions concurrent with vacuuming
- (Tom Lane)
- </para>
-
- <para>
- An index page split caused by an insertion could sometimes cause a
- concurrently-running <command>VACUUM</command> to miss removing index entries
- that it should remove. After the corresponding table rows are removed,
- the dangling index entries would cause errors (such as <quote>could not
- read block N in file ...</quote>) or worse, silently wrong query results
- after unrelated rows are re-inserted at the now-free table locations.
- This bug has been present since release 8.2, but occurs so infrequently
- that it was not diagnosed until now. If you have reason to suspect
- that it has happened in your database, reindexing the affected index
- will fix things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-existent values for some settings in <command>ALTER
- USER/DATABASE SET</command> (Heikki Linnakangas)
- </para>
-
- <para>
- Allow <varname>default_text_search_config</varname>,
- <varname>default_tablespace</varname>, and <varname>temp_tablespaces</varname> to be
- set to names that are not known. This is because they might be known
- in another database where the setting is intended to be used, or for the
- tablespace cases because the tablespace might not be created yet. The
- same issue was previously recognized for <varname>search_path</varname>, and
- these settings now act like that one.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track the OID counter correctly during WAL replay, even when it wraps
- around (Tom Lane)
- </para>
-
- <para>
- Previously the OID counter would remain stuck at a high value until the
- system exited replay mode. The practical consequences of that are
- usually nil, but there are scenarios wherein a standby server that's
- been promoted to master might take a long time to advance the OID
- counter to a reasonable value once values are needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression back-references with <literal>*</literal> attached
- (Tom Lane)
- </para>
-
- <para>
- Rather than enforcing an exact string match, the code would effectively
- accept any string that satisfies the pattern sub-expression referenced
- by the back-reference symbol.
- </para>
-
- <para>
- A similar problem still afflicts back-references that are embedded in a
- larger quantified expression, rather than being the immediate subject
- of the quantifier. This will be addressed in a future
- <productname>PostgreSQL</productname> release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recently-introduced memory leak in processing of
- <type>inet</type>/<type>cidr</type> values (Heikki Linnakangas)
- </para>
-
- <para>
- A patch in the December 2011 releases of <productname>PostgreSQL</productname>
- caused memory leakage in these operations, which could be significant
- in scenarios such as building a btree index on such a column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid double close of file handle in syslogger on Windows (MauMau)
- </para>
-
- <para>
- Ordinarily this error was invisible, but it would cause an exception
- when running on a debug version of Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix I/O-conversion-related memory leaks in plpgsql
- (Andres Freund, Jan Urbanski, Tom Lane)
- </para>
-
- <para>
- Certain operations would leak memory until the end of the current
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s handling of inherited table columns
- (Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> mishandled situations where a child column has
- a different default expression than its parent column. If the default
- is textually identical to the parent's default, but not actually the
- same (for instance, because of schema search path differences) it would
- not be recognized as different, so that after dump and restore the
- child would be allowed to inherit the parent's default. Child columns
- that are <literal>NOT NULL</literal> where their parent is not could also be
- restored subtly incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- INSERT-style table data (Tom Lane)
- </para>
-
- <para>
- Direct-to-database restores from archive files made with
- <option>--inserts</option> or <option>--column-inserts</option> options fail when
- using <application>pg_restore</application> from a release dated September or
- December 2011, as a result of an oversight in a fix for another
- problem. The archive file itself is not at fault, and text-mode
- output is okay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <filename>contrib/intarray</filename>'s <literal>int[] &amp;
- int[]</literal> operator (Guillaume Lelarge)
- </para>
-
- <para>
- If the smallest integer the two input arrays have in common is 1,
- and there are smaller values in either array, then 1 would be
- incorrectly omitted from the result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error detection in <filename>contrib/pgcrypto</filename>'s
- <function>encrypt_iv()</function> and <function>decrypt_iv()</function>
- (Marko Kreen)
- </para>
-
- <para>
- These functions failed to report certain types of invalid-input errors,
- and would instead return random garbage values for incorrect input.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <filename>contrib/test_parser</filename>
- (Paul Guyot)
- </para>
-
- <para>
- The code would try to read one more byte than it should, which would
- crash in corner cases.
- Since <filename>contrib/test_parser</filename> is only example code, this is
- not a security issue in itself, but bad example code is still bad.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <function>__sync_lock_test_and_set()</function> for spinlocks on ARM, if
- available (Martin Pitt)
- </para>
-
- <para>
- This function replaces our previous use of the <literal>SWPB</literal>
- instruction, which is deprecated and not available on ARMv6 and later.
- Reports suggest that the old code doesn't fail in an obvious way on
- recent ARM boards, but simply doesn't interlock concurrent accesses,
- leading to bizarre failures in multiprocess operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fexcess-precision=standard</option> option when building with
- gcc versions that accept it (Andrew Dunstan)
- </para>
-
- <para>
- This prevents assorted scenarios wherein recent versions of gcc will
- produce creative results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow use of threaded Python on FreeBSD (Chris Rees)
- </para>
-
- <para>
- Our configure script previously believed that this combination wouldn't
- work; but FreeBSD fixed the problem, so remove that error check.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-17">
- <title>Release 8.3.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.16.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.17</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- </para>
-
- <para>
- However, a longstanding error was discovered in the definition of the
- <literal>information_schema.referential_constraints</literal> view. If you
- rely on correct results from that view, you should replace its
- definition as explained in the first changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in <literal>information_schema.referential_constraints</literal> view
- (Tom Lane)
- </para>
-
- <para>
- This view was being insufficiently careful about matching the
- foreign-key constraint to the depended-on primary or unique key
- constraint. That could result in failure to show a foreign key
- constraint at all, or showing it multiple times, or claiming that it
- depends on a different constraint than the one it really does.
- </para>
-
- <para>
- Since the view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can (as a superuser) drop the
- <literal>information_schema</literal> schema then re-create it by sourcing
- <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database
- to be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
- SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
- (Tom Lane)
- </para>
-
- <para>
- If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
- attempts to copy its data verbatim to another table could produce
- corrupt results in certain corner cases.
- The problem can only manifest in this precise form in 8.4 and later,
- but we patched earlier versions as well in case there are other code
- paths that could trigger the same bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition during toast table access from stale syscache entries
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was transient errors like <quote>missing chunk
- number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited
- toast table would always belong to a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>DatumGetInetP()</function> unpack inet datums that have a 1-byte
- header, and add a new macro, <function>DatumGetInetPP()</function>, that does
- not (Heikki Linnakangas)
- </para>
-
- <para>
- This change affects no core code, but might prevent crashes in add-on
- code that expects <function>DatumGetInetP()</function> to produce an unpacked
- datum as per usual convention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locale support in <type>money</type> type's input and output
- (Tom Lane)
- </para>
-
- <para>
- Aside from not supporting all standard
- <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
- formatting options, the input and output functions were inconsistent,
- meaning there were locales in which dumped <type>money</type> values could
- not be re-read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't let <link
- linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
- affect <literal>CASE foo WHEN NULL ...</literal> constructs
- (Heikki Linnakangas)
- </para>
-
- <para>
- <varname>transform_null_equals</varname> is only supposed to affect
- <literal>foo = NULL</literal> expressions written directly by the user, not
- equality checks generated internally by this form of <literal>CASE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change foreign-key trigger creation order to better support
- self-referential foreign keys (Tom Lane)
- </para>
-
- <para>
- For a cascading foreign key that references its own table, a row update
- will fire both the <literal>ON UPDATE</literal> trigger and the
- <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
- trigger must execute first, else the <literal>CHECK</literal> will check a
- non-final state of the row and possibly throw an inappropriate error.
- However, the firing order of these triggers is determined by their
- names, which generally sort in creation order since the triggers have
- auto-generated names following the convention
- <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require
- modifying that convention, which we will do in 9.2, but it seems risky
- to change it in existing releases. So this patch just changes the
- creation order of the triggers. Users encountering this type of error
- should drop and re-create the foreign key constraint to get its
- triggers into the right order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid floating-point underflow while tracking buffer allocation rate
- (Greg Matthews)
- </para>
-
- <para>
- While harmless in itself, on certain platforms this would result in
- annoying kernel log messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve blank lines within commands in <application>psql</application>'s command
- history (Robert Haas)
- </para>
-
- <para>
- The former behavior could cause problems if an empty line was removed
- from within a string literal, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts between
- auto-generated types, such as table rowtypes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the preferred version of <application>xsubpp</application> to build PL/Perl,
- not necessarily the operating system's main copy
- (David Wheeler and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect coding in <filename>contrib/dict_int</filename> and
- <filename>contrib/dict_xsyn</filename> (Tom Lane)
- </para>
-
- <para>
- Some functions incorrectly assumed that memory returned by
- <function>palloc()</function> is guaranteed zeroed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor query cancel interrupts promptly in <function>pgstatindex()</function>
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure VPATH builds properly install all server header files
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shorten file names reported in verbose error messages (Peter Eisentraut)
- </para>
-
- <para>
- Regular builds have always reported just the name of the C file
- containing the error message call, but VPATH builds formerly
- reported an absolute path name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interpretation of Windows timezone names for Central America
- (Tom Lane)
- </para>
-
- <para>
- Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not
- <literal>CST6CDT</literal>, because DST is generally not observed anywhere in
- Central America.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011n
- for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
- also historical corrections for Alaska and British East Africa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-16">
- <title>Release 8.3.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-26</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.15.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.16</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
- </para>
-
- <para>
- These bugs could result in index corruption after reindexing a system
- catalog. They are not believed to affect user indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in GiST index page split processing (Heikki
- Linnakangas)
- </para>
-
- <para>
- The probability of occurrence was low, but these could lead to index
- corruption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible buffer overrun in <function>tsvector_concat()</function>
- (Tom Lane)
- </para>
-
- <para>
- The function could underestimate the amount of memory needed for its
- result, leading to server crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <function>xml_recv</function> when processing a
- <quote>standalone</quote> parameter (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly accessing off the end of memory in <command>ANALYZE</command>
- and in SJIS-2004 encoding conversion (Noah Misch)
- </para>
-
- <para>
- This fixes some very-low-probability server crash scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in relcache init file invalidation (Tom Lane)
- </para>
-
- <para>
- There was a window wherein a new backend process could read a stale init
- file but miss the inval messages that would tell it the data is stale.
- The result would be bizarre failures in catalog accesses, typically
- <quote>could not read block 0 in file ...</quote> later during startup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak at end of a GiST index scan (Tom Lane)
- </para>
-
- <para>
- Commands that perform many separate GiST index scans, such as
- verification of a new GiST-based exclusion constraint on a table
- already containing many rows, could transiently require large amounts of
- memory due to this leak.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when constructing a large, lossy bitmap
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array- and path-creating functions to ensure padding bytes are
- zeroes (Tom Lane)
- </para>
-
- <para>
- This avoids some situations where the planner will think that
- semantically-equal constants are not equal, resulting in poor
- optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
- </para>
-
- <para>
- This could lead to loss of committed transactions after a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dump bug for <literal>VALUES</literal> in a view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <literal>SELECT FOR UPDATE/SHARE</literal> on sequences (Tom Lane)
- </para>
-
- <para>
- This operation doesn't work as expected and can lead to failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against integer overflow when computing size of a hash table (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where <command>CLUSTER</command> might attempt to access
- already-removed TOAST data (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability bugs in use of credentials control messages for
- <quote>peer</quote> authentication (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
- Magnus Hagander)
- </para>
-
- <para>
- The typical symptom of this problem was <quote>The function requested is
- not supported</quote> errors during SSPI login.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix typo in <function>pg_srand48</function> seed initialization (Andres Freund)
- </para>
-
- <para>
- This led to failure to use all bits of the provided seed. This function
- is not used on most platforms (only those without <function>srandom</function>),
- and the potential security exposure from a less-random-than-expected
- seed seems minimal in any case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow when the sum of <literal>LIMIT</literal> and
- <literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add overflow checks to <type>int4</type> and <type>int8</type> versions of
- <function>generate_series()</function> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp)
- </para>
-
- <para>
- In a format with <literal>FM</literal> and no digit positions
- after the decimal point, zeroes to the left of the decimal point could
- be removed incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_size_pretty()</function> to avoid overflow for inputs close to
- 2^63 (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application>, support silent mode for service registrations
- on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s counting of script file line numbers during
- <literal>COPY</literal> from a different file (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- <varname>standard_conforming_strings</varname> (Tom Lane)
- </para>
-
- <para>
- <application>pg_restore</application> could emit incorrect commands when restoring
- directly to a database server from an archive file that had been made
- with <varname>standard_conforming_strings</varname> set to <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix write-past-buffer-end and memory leak in <application>libpq</application>'s
- LDAP service lookup code (Albe Laurenz)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, avoid failures when using nonblocking I/O
- and an SSL connection (Martin Pihlak, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve libpq's handling of failures during connection startup
- (Tom Lane)
- </para>
-
- <para>
- In particular, the response to a server report of <function>fork()</function>
- failure during SSL connection startup is now saner.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s error reporting for SSL failures (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> write <type>double</type> values with 15 digits
- precision (Akira Kurosawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpglib</application>, be sure <literal>LC_NUMERIC</literal> setting is
- restored after an error (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
- (Tom Lane)
- </para>
-
- <para>
- <filename>contrib/pg_crypto</filename>'s blowfish encryption code could give
- wrong results on platforms where char is signed (which is most),
- leading to encrypted passwords being weaker than they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/seg</filename> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgstatindex()</function> to give consistent results for empty
- indexes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow building with perl 5.14 (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update configure script's method for probing existence of system
- functions (Tom Lane)
- </para>
-
- <para>
- The version of autoconf we used in 8.3 and 8.2 could be fooled by
- compilers that perform link-time optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted issues with build and install file paths containing spaces
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011i
- for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-15">
- <title>Release 8.3.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-04-18</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.14.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.15</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Disallow including a composite type in itself (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein the server could recurse infinitely
- while processing the composite type. While there are some possible
- uses for such a structure, they don't seem compelling enough to
- justify the effort required to make sure it always works safely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid potential deadlock during catalog cache initialization
- (Nikhil Sontakke)
- </para>
-
- <para>
- In some cases the cache loading code would acquire share lock on a
- system index before locking the index's catalog. This could deadlock
- against processes trying to acquire exclusive locks in the other,
- more standard order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</literal> trigger
- handling when there was a concurrent update to the target tuple
- (Tom Lane)
- </para>
-
- <para>
- This bug has been observed to result in intermittent <quote>cannot
- extract system attribute from virtual tuple</quote> failures while trying to
- do <literal>UPDATE RETURNING ctid</literal>. There is a very small probability
- of more serious errors, such as generating incorrect index entries for
- the updated tuple.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>DROP TABLE</command> when there are pending deferred trigger
- events for the table (Tom Lane)
- </para>
-
- <para>
- Formerly the <command>DROP</command> would go through, leading to
- <quote>could not open relation with OID nnn</quote> errors when the
- triggers were eventually fired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python memory leak involving array slices (Daniel Popowich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to cope with long lines (over 1KB) in
- TOC files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put in more safeguards against crashing due to division-by-zero
- with overly enthusiastic compiler optimization (Aurelien Jarno)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
- </para>
-
- <para>
- There was a hard-wired assumption that this system function was not
- available on MIPS hardware on these systems. Use a compile-time test
- instead, since more recent versions have it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compilation failures on HP-UX (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix version-incompatibility problem with <application>libintl</application> on
- Windows (Hiroshi Inoue)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix usage of <application>xcopy</application> in Windows build scripts to
- work correctly under Windows 7 (Andrew Dunstan)
- </para>
-
- <para>
- This affects the build scripts only, not installation or usage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix path separator used by <application>pg_regress</application> on Cygwin
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011f
- for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
- and Turkey; also historical corrections for South Australia, Alaska,
- and Hawaii.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-14">
- <title>Release 8.3.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.13.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.14</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures when <command>EXPLAIN</command> tries to display a simple-form
- <literal>CASE</literal> expression (Tom Lane)
- </para>
-
- <para>
- If the <literal>CASE</literal>'s test expression was a constant, the planner
- could simplify the <literal>CASE</literal> into a form that confused the
- expression-display code, resulting in <quote>unexpected CASE WHEN
- clause</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assignment to an array slice that is before the existing range
- of subscripts (Tom Lane)
- </para>
-
- <para>
- If there was a gap between the newly added subscripts and the first
- pre-existing subscript, the code miscalculated how many entries needed
- to be copied from the old array's null bitmap, potentially leading to
- data corruption or crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unexpected conversion overflow in planner for very distant date
- values (Tom Lane)
- </para>
-
- <para>
- The <type>date</type> type supports a wider range of dates than can be
- represented by the <type>timestamp</type> types, but the planner assumed it
- could always convert a date to timestamp with impunity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s text output for large objects (BLOBs)
- when <varname>standard_conforming_strings</varname> is on (Tom Lane)
- </para>
-
- <para>
- Although restoring directly to a database worked correctly, string
- escaping was incorrect if <application>pg_restore</application> was asked for
- SQL text output and <varname>standard_conforming_strings</varname> had been
- enabled in the source database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous parsing of <type>tsquery</type> values containing
- <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
- </para>
-
- <para>
- Queries containing this combination of operators were not executed
- correctly. The same error existed in <filename>contrib/intarray</filename>'s
- <type>query_int</type> type and <filename>contrib/ltree</filename>'s
- <type>ltxtquery</type> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in <filename>contrib/intarray</filename>'s input function
- for the <type>query_int</type> type (Apple)
- </para>
-
- <para>
- This bug is a security risk since the function's return address could
- be overwritten. Thanks to Apple Inc's security team for reporting this
- issue and supplying the fix. (CVE-2010-4015)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/seg</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>seg</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update. (This is identical to the bug that was fixed in
- <filename>contrib/cube</filename> in the previous update.)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-13">
- <title>Release 8.3.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-12-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.12.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.13</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force the default
- <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
- to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
- </para>
-
- <para>
- The default on Linux has actually been <literal>fdatasync</literal> for many
- years, but recent kernel changes caused <productname>PostgreSQL</productname> to
- choose <literal>open_datasync</literal> instead. This choice did not result
- in any performance improvement, and caused outright failures on
- certain filesystems, notably <literal>ext4</literal> with the
- <literal>data=journal</literal> mount option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in <quote>bad buffer id: 0</quote> failures or
- corruption of index contents during replication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recovery from base backup when the starting checkpoint WAL record
- is not in the same WAL segment as its redo point (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix persistent slowdown of autovacuum workers when multiple workers
- remain active for a long time (Tom Lane)
- </para>
-
- <para>
- The effective <varname>vacuum_cost_limit</varname> for an autovacuum worker
- could drop to nearly zero if it processed enough tables, causing it
- to run extremely slowly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for detecting register-stack overrun on <literal>IA64</literal>
- (Tom Lane)
- </para>
-
- <para>
- The <literal>IA64</literal> architecture has two hardware stacks. Full
- prevention of stack-overrun failures requires checking both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a check for stack overflow in <function>copyObject()</function> (Tom Lane)
- </para>
-
- <para>
- Certain code paths could crash due to stack overflow given a
- sufficiently complex query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of page splits in temporary GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- It is possible to have a <quote>concurrent</quote> page split in a
- temporary index, if for example there is an open cursor scanning the
- index when an insertion is done. GiST failed to detect this case and
- hence could deliver wrong results when execution of the cursor
- continued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage while <command>ANALYZE</command>'ing complex index
- expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an index that uses a whole-row Var still depends on its table
- (Tom Lane)
- </para>
-
- <para>
- An index declared like <literal>create index i on t (foo(t.*))</literal>
- would not automatically get dropped when its table was dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
- parameters (Tom Lane)
- </para>
-
- <para>
- This avoids a possible crash due to loss of information about the
- expected result rowtype.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Behave correctly if <literal>ORDER BY</literal>, <literal>LIMIT</literal>,
- <literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the
- <literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane)
- </para>
-
- <para>
- The planner would sometimes attempt to evaluate sub-expressions that
- in fact could never be reached, possibly leading to unexpected errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster crash when connection acceptance
- (<function>accept()</function> or one of the calls made immediately after it)
- fails, and the postmaster was compiled with GSSAPI support (Alexander
- Chernikov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed unlink of temporary files when <varname>log_temp_files</varname>
- is active (Tom Lane)
- </para>
-
- <para>
- If an error occurred while attempting to emit the log message, the
- unlink was not done, resulting in accumulation of temp files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
- </para>
-
- <para>
- This avoids a failure when <varname>debug_print_parse</varname> is enabled
- and certain types of query are executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of distance from a point to a horizontal
- line segment (Tom Lane)
- </para>
-
- <para>
- This bug affected several different geometric distance-measurement
- operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote>
- expressions to not fail in recursion or error-recovery cases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application>'s handling of set-returning functions
- (Jan Urbanski)
- </para>
-
- <para>
- Attempts to call SPI functions within the iterator generating a set
- result would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>cube</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't emit <quote>identifier will be truncated</quote> notices in
- <filename>contrib/dblink</filename> except when creating new connections
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential coredump on missing public key in
- <filename>contrib/pgcrypto</filename> (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010o
- for DST law changes in Fiji and Samoa;
- also historical corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-12">
- <title>Release 8.3.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.11.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.12</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</literal>) as non-fatal on
- Windows (Magnus Hagander)
- </para>
-
- <para>
- Under high load, Windows processes will sometimes fail at startup with
- this error code. Formerly the postmaster treated this as a panic
- condition and restarted the whole database, but that seems to be
- an overreaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect usage of non-strict OR joinclauses in Append indexscans
- (Tom Lane)
- </para>
-
- <para>
- This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
- This corrects an error introduced in 8.3.8 that could cause incorrect
- results for outer joins when the inner relation is an inheritance tree
- or <literal>UNION ALL</literal> subquery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate scans of <literal>UNION ALL</literal> member relations
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to mark cached plans as transient (Tom Lane)
- </para>
-
- <para>
- If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</command> is
- in progress for one of the referenced tables, it is supposed to be
- re-planned once the index is ready for use. This was not happening
- reliably.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
- and provide additional detail in the resulting error messages
- (Tom Lane)
- </para>
-
- <para>
- This should improve the system's robustness with corrupted indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent show_session_authorization() from crashing within autovacuum
- processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against functions returning setof record where not all the
- returned rows are actually of the same rowtype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when hashing a pass-by-reference function result
- (Tao Ma, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve merge join's handling of NULLs in the join columns (Tom Lane)
- </para>
-
- <para>
- A merge join can now stop entirely upon reaching the first NULL,
- if the sort order is such that NULLs sort high.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid recursion while assigning XIDs to heavily-nested
- subtransactions (Andres Freund, Robert Haas)
- </para>
-
- <para>
- The original coding could result in a crash if there was limited
- stack space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid holding open old WAL segments in the walwriter process
- (Magnus Hagander, Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding would prevent removal of no-longer-needed segments.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
- which could produce junk early in backend startup (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible data corruption in <command>ALTER TABLE ... SET
- TABLESPACE</command> when archiving is enabled (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
- TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle operator classes and families
- (Asko Tiidumaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible core dump when comparing two empty <type>tsquery</type> values
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>LIKE</literal>'s handling of patterns containing <literal>%</literal>
- followed by <literal>_</literal> (Tom Lane)
- </para>
-
- <para>
- We've fixed this before, but there were still some incorrectly-handled
- cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Python, defend against null pointer results from
- <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make psql recognize <command>DISCARD ALL</command> as a command that should
- not be encased in a transaction block in autocommit-off mode
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to process data from <literal>RETURNING</literal>
- clauses correctly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle connection names longer than
- 62 bytes correctly (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>hstore(text, text)</function>
- function to <filename>contrib/hstore</filename> (Robert Haas)
- </para>
-
- <para>
- This function is the recommended substitute for the now-deprecated
- <literal>=&gt;</literal> operator. It was back-patched so that future-proofed
- code can be used with older server versions. Note that the patch will
- be effective only after <filename>contrib/hstore</filename> is installed or
- reinstalled in a particular database. Users might prefer to execute
- the <command>CREATE FUNCTION</command> command by hand, instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010l
- for DST law changes in Egypt and Palestine; also historical corrections
- for Finland.
- </para>
-
- <para>
- This change also adds new names for two Micronesian timezones:
- Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
- abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
- Pacific/Ponape.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make Windows' <quote>N. Central Asia Standard Time</quote> timezone map to
- Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
- </para>
-
- <para>
- Microsoft changed the DST behavior of this zone in the timezone update
- from KB976098. Asia/Novosibirsk is a better match to its new behavior.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-11">
- <title>Release 8.3.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.10.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.11</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash if a cache reset message is received during
- rebuild of a relcache entry (Heikki)
- </para>
-
- <para>
- This error was introduced in 8.3.10 while fixing a related failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply per-function GUC settings while running the language validator
- for the function (Itagaki Takahiro)
- </para>
-
- <para>
- This avoids failures if the function's code is invalid without the
- setting; an example is that SQL functions may not parse if the
- <varname>search_path</varname> is not correct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the archiver process responds to changes in
- <varname>archive_command</varname> as soon as possible (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite recursion in <application>psql</application> when expanding
- a variable that refers to itself (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\copy</literal> to not add spaces around
- a dot within <literal>\copy (select ...)</literal> (Tom)
- </para>
-
- <para>
- Addition of spaces around the decimal point in a numeric literal would
- result in a syntax error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary <quote>GIN indexes do not support whole-index scans</quote>
- errors for unsatisfiable queries using <filename>contrib/intarray</filename>
- operators (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crashes in syslogger process on Windows (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deal more robustly with incomplete time zone information in the
- Windows registry (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the set of known Windows time zone names (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010j
- for DST law changes in Argentina, Australian Antarctic, Bangladesh,
- Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
- also historical corrections for Taiwan.
- </para>
-
- <para>
- Also, add <literal>PKST</literal> (Pakistan Summer Time) to the default set of
- timezone abbreviations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-10">
- <title>Release 8.3.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.9.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.10</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during backend startup (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes due to not handling errors during relcache reload
- cleanly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to use of dangling pointer to a cached plan
- (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when trying to recover from a failure in
- subtransaction start (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix server memory leak associated with use of savepoints and a client
- encoding different from server's encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
- index page split (Yoichi Hirai)
- </para>
-
- <para>
- This would result in index corruption, or even more likely an error
- during WAL replay, if we were unlucky enough to crash during
- end-of-recovery cleanup after having completed an incomplete GIST
- insertion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-to-bit-string conversions to handle the first fractional
- byte correctly when the output bit width is wider than the given
- integer by something other than a multiple of 8 bits (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <type>xml</type> processing caused by sloppy
- memory management (Tom)
- </para>
-
- <para>
- This is a back-patch of changes first applied in 8.4. The 8.3 code
- was known buggy, but the new code was sufficiently different to not
- want to back-patch it until it had gotten some field testing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with trying to update a field of an element of a
- composite-type array column (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
- report the next WAL segment's name when the end location is exactly at a
- segment boundary (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more cases of temporary-file leakage (Heikki)
- </para>
-
- <para>
- This corrects a problem introduced in the previous minor release.
- One case that failed is when a plpgsql function returning set is
- called within another function's exception handler.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve constraint exclusion processing of boolean-variable cases,
- in particular make it possible to exclude a partition that has a
- <quote>bool_column = false</quote> constraint (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible infinite loop if <function>SSL_read</function> or
- <function>SSL_write</function> fails without setting <varname>errno</varname> (Tom)
- </para>
-
- <para>
- This is reportedly possible with some Windows versions of
- <application>OpenSSL</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <acronym>GSSAPI</acronym> authentication on local connections,
- since it requires a hostname to function correctly (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> report the proper SQLSTATE if the connection
- disappears (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>numericlocale</literal> option to not
- format strings it shouldn't in latex and troff output formats (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>psql</application> return the correct exit status (3) when
- <literal>ON_ERROR_STOP</literal> and <literal>--single-transaction</literal> are
- both specified and an error occurs during the implied <command>COMMIT</command>
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix plpgsql failure in one case where a composite column is set to NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when calling PL/Perl functions from PL/PerlU
- or vice versa (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>volatile</literal> markings in PL/Python to avoid possible
- compiler-specific misbehavior (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow zero-dimensional arrays in <filename>contrib/ltree</filename> operations
- (Tom)
- </para>
-
- <para>
- This case was formerly rejected as an error, but it's more convenient to
- treat it the same as a zero-element array. In particular this avoids
- unnecessary failures when an <type>ltree</type> operation is applied to the
- result of <literal>ARRAY(SELECT ...)</literal> and the sub-select returns no
- rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
- memory management (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make building of <filename>contrib/xml2</filename> more robust on Windows
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in Windows signal handling (Radu Ilie)
- </para>
-
- <para>
- One known symptom of this bug is that rows in <structname>pg_listener</structname>
- could be dropped under heavy load.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010e
- for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-9">
- <title>Release 8.3.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.8.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.9</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.8,
- see <xref linkend="release-8-3-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash on empty thesaurus dictionary (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that shared tuple-level locks held by prepared transactions are
- not ignored (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature drop of temporary files used for a cursor that is accessed
- within a subtransaction (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in syslogger process when rotating to a new CSV logfile
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows permission-downgrade logic (Jesse Morris)
- </para>
-
- <para>
- This fixes some cases where the database failed to start on Windows,
- often with misleading error messages such as <quote>could not locate
- matching postgres executable</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect logic for GiST index page splits, when the split depends
- on a non-first column of the index (Paul Ramsey)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't error out if recycling or removing an old WAL file fails at the
- end of checkpoint (Heikki)
- </para>
-
- <para>
- It's better to treat the problem as non-fatal and allow the checkpoint
- to complete. Future checkpoints will retry the removal. Such problems
- are not expected in normal operation, but have been seen to be
- caused by misdesigned Windows anti-virus and backup software.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure WAL files aren't repeatedly archived on Windows (Heikki)
- </para>
-
- <para>
- This is another symptom that could happen if some other process
- interfered with deletion of a no-longer-needed file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
- and SSPI authentication methods (Ian Turner)
- </para>
-
- <para>
- While the old 2000-byte limit was more than enough for Unix Kerberos
- implementations, tickets issued by Windows Domain Controllers can be
- much larger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-enable collection of access statistics for sequences (Akira Kurosawa)
- </para>
-
- <para>
- This used to work but was broken in 8.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of ownership dependencies during <literal>CREATE OR
- REPLACE FUNCTION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of <literal>WHERE</literal>
- <replaceable>x</replaceable>=<replaceable>x</replaceable> conditions (Tom)
- </para>
-
- <para>
- In some cases these could get ignored as redundant, but they aren't
- &mdash; they're equivalent to <replaceable>x</replaceable> <literal>IS NOT NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make text search parser accept underscores in XML attributes (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix encoding handling in <type>xml</type> binary input (Heikki)
- </para>
-
- <para>
- If the XML header doesn't specify an encoding, we now assume UTF-8 by
- default; the previous handling was inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with calling <literal>plperl</literal> from <literal>plperlu</literal> or vice
- versa (Tom)
- </para>
-
- <para>
- An error exit from the inner function could result in crashes due to
- failure to re-select the correct Perl interpreter for the outer function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leak when a PL/Perl function is redefined
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that Perl arrays are properly converted to
- <productname>PostgreSQL</productname> arrays when returned by a set-returning
- PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
- </para>
-
- <para>
- This worked correctly already for non-set-returning functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash in exception processing in PL/Python (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pg_standby</filename>, disable triggering failover with a
- signal on Windows (Fujii Masao)
- </para>
-
- <para>
- This never did anything useful, because Windows doesn't have Unix-style
- signals, but recent changes made it actually crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>psql</application>'s flex module is compiled with the correct
- system header definitions (Tom)
- </para>
-
- <para>
- This fixes build failures on platforms where
- <literal>--enable-largefile</literal> causes incompatible changes in the
- generated code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the timezone abbreviation files to match current reality (Joachim
- Wieland)
- </para>
-
- <para>
- This includes adding <literal>IDT</literal> and <literal>SGT</literal> to the default
- timezone abbreviation set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009s
- for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
- Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
- corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-8">
- <title>Release 8.3.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.7.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.8</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you have any hash indexes on <type>interval</type> columns,
- you must <command>REINDEX</command> them after updating to 8.3.8.
- Also, if you are upgrading from a version earlier than 8.3.5,
- see <xref linkend="release-8-3-5"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
- </para>
-
- <para>
- This bug led to the often-reported <quote>could not reattach
- to shared memory</quote> error message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force WAL segment switch during <function>pg_start_backup()</function>
- (Heikki)
- </para>
-
- <para>
- This avoids corner cases that could render a base backup unusable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>LOAD</command> of an already-loaded loadable module
- into a no-op (Tom)
- </para>
-
- <para>
- Formerly, <command>LOAD</command> would attempt to unload and re-load the
- module, but this is unsafe and not all that useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords during LDAP authentication (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of sub-SELECTs appearing in the arguments of
- an outer-level aggregate function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs associated with fetching a whole-row value from the
- output of a Sort or Materialize plan node (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <varname>synchronize_seqscans</varname> from changing the results of
- scrollable and <literal>WITH HOLD</literal> cursors (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Revert planner change that disabled partial-index and constraint
- exclusion optimizations when there were more than 100 clauses in
- an AND or OR list (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash calculation for data type <type>interval</type> (Tom)
- </para>
-
- <para>
- This corrects wrong results for hash joins on interval values.
- It also changes the contents of hash indexes on interval columns.
- If you have any such indexes, you must <command>REINDEX</command> them
- after updating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
- suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
- </para>
-
- <para>
- It was previously handled as <literal>'th'</literal> (lowercase).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix calculation of distance between a point and a line segment (Tom)
- </para>
-
- <para>
- This led to incorrect results from a number of geometric operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>money</type> data type to work in locales where currency
- amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>LIKE</literal> for case where pattern contains <literal>%_</literal>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly round datetime input like
- <literal>00:12:57.9999999999999999999999999999</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks in XML operations (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix poor choice of page split point in GiST R-tree operator classes
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a <quote>fast shutdown</quote> request will forcibly terminate
- open sessions, even if a <quote>smart shutdown</quote> was already in progress
- (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid performance degradation in bulk inserts into GIN indexes
- when the input values are (nearly) in sorted order (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly enforce NOT NULL domain constraints in some contexts in
- PL/pgSQL (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability issues in plperl initialization (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to not go into an infinite loop if
- <filename>postgresql.conf</filename> is empty (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s efficiency when there are
- many large objects (Tamas Vincze)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>SIGUSR1</literal>, not <literal>SIGQUIT</literal>, as the
- failover signal for <application>pg_standby</application> (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_standby</application>'s <literal>maxretries</literal> option
- behave as documented (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/hstore</filename> throw an error when a key or
- value is too long to fit in its data structure, rather than
- silently truncating it (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
- properly handle the maximum number of parameters (twenty) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009l
- for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
- Argentina/San_Luis, Cuba, Jordan (historical correction only),
- Mauritius, Morocco, Palestine, Syria, Tunisia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-7">
- <title>Release 8.3.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-03-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.6.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.7</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.5,
- see <xref linkend="release-8-3-5"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent error recursion crashes when encoding conversion fails (Tom)
- </para>
-
- <para>
- This change extends fixes made in the last two minor releases for
- related failure scenarios. The previous fixes were narrowly tailored
- for the original problem reports, but we have now recognized that
- <emphasis>any</emphasis> error thrown by an encoding conversion function could
- potentially lead to infinite recursion while trying to report the
- error. The solution therefore is to disable translation and encoding
- conversion and report the plain-ASCII form of any error message,
- if we find we have gotten into a recursive error reporting situation.
- (CVE-2009-0922)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>CREATE CONVERSION</command> with the wrong encodings
- for the specified conversion function (Heikki)
- </para>
-
- <para>
- This prevents one possible scenario for encoding conversion failure.
- The previous change is a backstop to guard against other kinds of
- failures in the same area.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>xpath()</function> to not modify the path expression unless
- necessary, and to make a saner attempt at it when necessary (Andrew)
- </para>
-
- <para>
- The SQL standard suggests that <function>xpath</function> should work on data
- that is a document fragment, but <application>libxml</application> doesn't support
- that, and indeed it's not clear that this is sensible according to the
- XPath standard. <function>xpath</function> attempted to work around this
- mismatch by modifying both the data and the path expression, but the
- modification was buggy and could cause valid searches to fail. Now,
- <function>xpath</function> checks whether the data is in fact a well-formed
- document, and if so invokes <application>libxml</application> with no change to the
- data or path expression. Otherwise, a different modification method
- that is somewhat less likely to fail is used.
- </para>
-
- <note>
- <para>
- The new modification method is still not 100% satisfactory, and it
- seems likely that no real solution is possible. This patch should
- therefore be viewed as a band-aid to keep from breaking existing
- applications unnecessarily. It is likely that
- <productname>PostgreSQL</productname> 8.4 will simply reject use of
- <function>xpath</function> on data that is not a well-formed document.
- </para>
- </note>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump when <function>to_char()</function> is given format codes that
- are inappropriate for the type of the data argument (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure in text search when C locale is used with
- a multi-byte encoding (Teodor)
- </para>
-
- <para>
- Crashes were possible on platforms where <type>wchar_t</type> is narrower
- than <type>int</type>; Windows in particular.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extreme inefficiency in text search parser's handling of an
- email-like string containing multiple <literal>@</literal> characters (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner problem with sub-<command>SELECT</command> in the output list
- of a larger subquery (Tom)
- </para>
-
- <para>
- The known symptom of this bug is a <quote>failed to locate grouping
- columns</quote> error that is dependent on the datatype involved;
- but there could be other issues as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix decompilation of <literal>CASE WHEN</literal> with an implicit coercion
- (Tom)
- </para>
-
- <para>
- This mistake could lead to Assert failures in an Assert-enabled build,
- or an <quote>unexpected CASE WHEN clause</quote> error message in other
- cases, when trying to examine or dump a view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
- </para>
-
- <para>
- If <command>CLUSTER</command> or a rewriting variant of <command>ALTER TABLE</command>
- were executed by someone other than the table owner, the
- <structname>pg_type</structname> entry for the table's TOAST table would end up
- marked as owned by that someone. This caused no immediate problems,
- since the permissions on the TOAST rowtype aren't examined by any
- ordinary database operation. However, it could lead to unexpected
- failures if one later tried to drop the role that issued the command
- (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</quote>
- warnings from <application>pg_dump</application> after having done so (in 8.3).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>UNLISTEN</command> to exit quickly if the current session has
- never executed any <command>LISTEN</command> command (Tom)
- </para>
-
- <para>
- Most of the time this is not a particularly useful optimization, but
- since <command>DISCARD ALL</command> invokes <command>UNLISTEN</command>, the previous
- coding caused a substantial performance problem for applications that
- made heavy use of <command>DISCARD ALL</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to not treat <literal>INTO</literal> after <command>INSERT</command> as
- an INTO-variables clause anywhere in the string, not only at the start;
- in particular, don't fail for <command>INSERT INTO</command> within
- <command>CREATE RULE</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up PL/pgSQL error status variables fully at block exit
- (Ashesh Vashi and Dave Page)
- </para>
-
- <para>
- This is not a problem for PL/pgSQL itself, but the omission could cause
- the PL/pgSQL Debugger to crash while examining the state of a function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Retry failed calls to <function>CallNamedPipe()</function> on Windows
- (Steve Marshall, Magnus)
- </para>
-
- <para>
- It appears that this function can sometimes fail transiently;
- we previously treated any failure as a hard error, which could
- confuse <command>LISTEN</command>/<command>NOTIFY</command> as well as other
- operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
- of known timezone abbreviations (Xavier Bugaud)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-6">
- <title>Release 8.3.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-02-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.5.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.6</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.5,
- see <xref linkend="release-8-3-5"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>DISCARD ALL</command> release advisory locks, in addition
- to everything it already did (Tom)
- </para>
-
- <para>
- This was decided to be the most appropriate behavior. This could
- affect existing applications, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix whole-index GiST scans to work correctly (Teodor)
- </para>
-
- <para>
- This error could cause rows to be lost if a table is clustered
- on a GiST index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash of <literal>xmlconcat(NULL)</literal> (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <literal>ispell</literal> dictionary if high-bit-set
- characters are used as flags (Teodor)
- </para>
-
- <para>
- This is known to be done by one widely available Norwegian dictionary,
- and the same condition may exist in others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misordering of <application>pg_dump</application> output for composite types
- (Tom)
- </para>
-
- <para>
- The most likely problem was for user-defined operator classes to
- be dumped after indexes or views that needed them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of URLs in <function>headline()</function> function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of overlength headlines in <function>headline()</function>
- function (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible Assert failure or misconversion if an encoding
- conversion is created with the wrong conversion function for the
- specified pair of encodings (Tom, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible Assert failure if a statement executed in PL/pgSQL is
- rewritten into another kind of statement, for example if an
- <command>INSERT</command> is rewritten into an <command>UPDATE</command> (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a snapshot is available to datatype input functions (Tom)
- </para>
-
- <para>
- This primarily affects domains that are declared with <literal>CHECK</literal>
- constraints involving user-defined stable or immutable functions. Such
- functions typically fail if no snapshot has been set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make it safer for SPI-using functions to be used within datatype I/O;
- in particular, to be used in domain check constraints (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary locking of small tables in <command>VACUUM</command>
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
- RULE</command> from being recognized by active sessions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a problem that made <literal>UPDATE RETURNING tableoid</literal>
- return zero instead of the correct OID (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow functions declared as taking <type>ANYARRAY</type> to work on
- the <structname>pg_statistic</structname> columns of that type (Tom)
- </para>
-
- <para>
- This used to work, but was unintentionally broken in 8.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner misestimation of selectivity when transitive equality
- is applied to an outer-join clause (Tom)
- </para>
-
- <para>
- This could result in bad plans for queries like
- <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's handling of long <literal>IN</literal> lists (Tom)
- </para>
-
- <para>
- This change avoids wasting large amounts of time on such lists
- when constraint exclusion is enabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent synchronous scan during GIN index build (Tom)
- </para>
-
- <para>
- Because GIN is optimized for inserting tuples in increasing TID order,
- choosing to use a synchronous scan could slow the build by a factor of
- three or more.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the contents of a holdable cursor don't depend on the
- contents of TOAST tables (Tom)
- </para>
-
- <para>
- Previously, large field values in a cursor result might be represented
- as TOAST pointers, which would fail if the referenced table got dropped
- before the cursor is read, or if the large value is deleted and then
- vacuumed away. This cannot happen with an ordinary cursor,
- but it could with a cursor that is held past its creating transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when a set-returning function is terminated without
- reading its whole result (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix encoding conversion problems in XML functions when the database
- encoding isn't UTF-8 (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s
- <function>dblink_get_result(text,bool)</function> function (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible garbage output from <filename>contrib/sslinfo</filename> functions
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behavior of <filename>contrib/tsearch2</filename> compatibility
- trigger when it's fired more than once in a command (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mis-signaling in autovacuum (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support running as a service on Windows 7 beta (Dave and Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s handling of varchar structs (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application> script to properly report failure when
- unable to obtain linkage information for PL/Perl (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make all documentation reference <literal>pgsql-bugs</literal> and/or
- <literal>pgsql-hackers</literal> as appropriate, instead of the
- now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
- mailing lists (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009a (for
- Kathmandu and historical DST corrections in Switzerland, Cuba)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-5">
- <title>Release 8.3.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-11-03</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.4.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.5</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.1,
- see <xref linkend="release-8-3-1"/>. Also, if you were running a previous
- 8.3.X release, it is recommended to <command>REINDEX</command> all GiST
- indexes after the upgrade.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix GiST index corruption due to marking the wrong index entry
- <quote>dead</quote> after a deletion (Teodor)
- </para>
-
- <para>
- This would result in index searches failing to find rows they
- should have found. Corrupted indexes can be fixed with
- <command>REINDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix backend crash when the client encoding cannot represent a localized
- error message (Tom)
- </para>
-
- <para>
- We have addressed similar issues before, but it would still fail if
- the <quote>character has no equivalent</quote> message itself couldn't
- be converted. The fix is to disable localization and send the plain
- ASCII error message when we detect such a situation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <type>bytea</type>-to-XML mapping (Michael McMaster)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when deeply nested functions are invoked from
- a trigger (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimization of <replaceable>expression</replaceable> <literal>IN</literal>
- (<replaceable>expression-list</replaceable>) queries (Tom, per an idea from Robert
- Haas)
- </para>
-
- <para>
- Cases in which there are query variables on the right-hand side had been
- handled less efficiently in 8.2.x and 8.3.x than in prior versions.
- The fix restores 8.1 behavior for such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-expansion of rule queries when a sub-<literal>SELECT</literal> appears
- in a function call in <literal>FROM</literal>, a multi-row <literal>VALUES</literal>
- list, or a <literal>RETURNING</literal> list (Tom)
- </para>
-
- <para>
- The usual symptom of this problem is an <quote>unrecognized node type</quote>
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Assert failure during rescan of an <literal>IS NULL</literal>
- search of a GiST index (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak during rescan of a hashed aggregation plan (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an error is reported when a newly-defined PL/pgSQL trigger
- function is invoked as a normal function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force a checkpoint before <command>CREATE DATABASE</command> starts to copy
- files (Heikki)
- </para>
-
- <para>
- This prevents a possible failure if files had recently been deleted
- in the source database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible collision of <structfield>relfilenode</structfield> numbers
- when moving a table to another tablespace with <command>ALTER SET
- TABLESPACE</command> (Heikki)
- </para>
-
- <para>
- The command tried to re-use the existing filename, instead of
- picking one that is known unused in the destination directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect text search headline generation when single query
- item matches first word of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper display of fractional seconds in interval values when
- using a non-ISO datestyle in an <option>--enable-integer-datetimes</option>
- build (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>ILIKE</literal> compare characters case-insensitively
- even when they're escaped (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <command>DISCARD</command> is handled properly by statement logging (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect logging of last-completed-transaction time during
- PITR recovery (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
- behave correctly when the passed tuple and tuple descriptor have
- different numbers of columns (Tom)
- </para>
-
- <para>
- This situation is normal when a table has had columns added or removed,
- but these two functions didn't handle it properly.
- The only likely consequence is an incorrect error indication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Mark <varname>SessionReplicationRole</varname> as <literal>PGDLLIMPORT</literal>
- so it can be used by <application>Slony</application> on Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix small memory leak when using <application>libpq</application>'s
- <literal>gsslib</literal> parameter (Magnus)
- </para>
-
- <para>
- The space used by the parameter string was not freed at connection
- close.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>libgssapi</application> is linked into <application>libpq</application>
- if needed (Markus Schaaf)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s parsing of <command>CREATE ROLE</command> (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <filename>pg_control</filename> is opened in binary mode
- (Itagaki Takahiro)
- </para>
-
- <para>
- <application>pg_controldata</application> and <application>pg_resetxlog</application>
- did this incorrectly, and so could fail on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008i (for
- DST law changes in Argentina, Brazil, Mauritius, Syria)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-4">
- <title>Release 8.3.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-09-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.3.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.4</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.1,
- see <xref linkend="release-8-3-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bug in btree WAL recovery code (Heikki)
- </para>
-
- <para>
- Recovery failed if the WAL ended partway through a page split operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
- </para>
-
- <para>
- This error created a risk of corruption in system
- catalogs that are consulted by <command>VACUUM</command>: dead tuple versions
- might be removed too soon. The impact of this on actual database
- operations would be minimal, since the system doesn't follow MVCC
- rules while examining catalogs, but it might result in transiently
- wrong output from <application>pg_dump</application> or other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential miscalculation of <structfield>datfrozenxid</structfield> (Alvaro)
- </para>
-
- <para>
- This error may explain some recent reports of failure to remove old
- <structname>pg_clog</structname> data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect HOT updates after <structname>pg_class</structname> is reindexed
- (Tom)
- </para>
-
- <para>
- Corruption of <structname>pg_class</structname> could occur if <literal>REINDEX
- TABLE pg_class</literal> was followed in the same session by an <literal>ALTER
- TABLE RENAME</literal> or <literal>ALTER TABLE SET SCHEMA</literal> command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed <quote>combo cid</quote> case (Karl Schnaitter)
- </para>
-
- <para>
- This error made rows incorrectly invisible to a transaction in which they
- had been deleted by multiple subtransactions that all aborted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from crashing if the table it's currently
- checking is deleted at just the wrong time (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen local lock counters from 32 to 64 bits (Tom)
- </para>
-
- <para>
- This responds to reports that the counters could overflow in
- sufficiently long transactions, leading to unexpected <quote>lock is
- already held</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate output of tuples during a GiST index scan (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Regenerate foreign key checking queries from scratch when either
- table is modified (Tom)
- </para>
-
- <para>
- Previously, 8.3 would attempt to replan the query, but would work from
- previously generated query text. This led to failures if a
- table or column was renamed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed permissions checks when a view contains a simple
- <literal>UNION ALL</literal> construct (Heikki)
- </para>
-
- <para>
- Permissions for the referenced tables were checked properly, but not
- permissions for the view itself.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add checks in executor startup to ensure that the tuples produced by an
- <command>INSERT</command> or <command>UPDATE</command> will match the target table's
- current rowtype (Tom)
- </para>
-
- <para>
- This situation is believed to be impossible in 8.3, but it can happen in
- prior releases, so a check seems prudent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible repeated drops during <command>DROP OWNED</command> (Tom)
- </para>
-
- <para>
- This would typically result in strange errors such as <quote>cache
- lookup failed for relation NNN</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several memory leaks in XML operations (Kris Jurka, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>xmlserialize()</function> to raise error properly for
- unacceptable target data type (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a couple of places that mis-handled multibyte characters in text
- search configuration file parsing (Tom)
- </para>
-
- <para>
- Certain characters occurring in configuration files would always cause
- <quote>invalid byte sequence for encoding</quote> failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide file name and line number location for all errors reported
- in text search configuration files (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>AT TIME ZONE</literal> to first try to interpret its timezone
- argument as a timezone abbreviation, and only try it as a full timezone
- name if that fails, rather than the other way around as formerly (Tom)
- </para>
-
- <para>
- The timestamp input functions have always resolved ambiguous zone names
- in this order. Making <literal>AT TIME ZONE</literal> do so as well improves
- consistency, and fixes a compatibility bug introduced in 8.1:
- in ambiguous cases we now behave the same as 8.0 and before did,
- since in the older versions <literal>AT TIME ZONE</literal> accepted
- <emphasis>only</emphasis> abbreviations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix datetime input functions to correctly detect integer overflow when
- running on a 64-bit platform (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent integer overflows during units conversion when displaying a
- configuration parameter that has units (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of writing very long log messages to syslog (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow spaces in the suffix part of an LDAP URL in
- <filename>pg_hba.conf</filename> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
- ON</literal> query (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner bug that could improperly push down <literal>IS NULL</literal>
- tests below an outer join (Tom)
- </para>
-
- <para>
- This was triggered by occurrence of <literal>IS NULL</literal> tests for
- the same relation in all arms of an upper <literal>OR</literal> clause.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner bug with nested sub-select expressions (Tom)
- </para>
-
- <para>
- If the outer sub-select has no direct dependency on the parent query,
- but the inner one does, the outer value might not get recalculated
- for new parent query rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
- boolean results always result in two groups, regardless of the
- expressions' contents (Tom)
- </para>
-
- <para>
- This is very substantially more accurate than the regular <literal>GROUP
- BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
- <literal>IS NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to not fail when a <literal>FOR</literal> loop's target variable
- is a record containing composite-type fields (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
- about the encoding of data sent to or from Tcl (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <function>PQescapeBytea()</function> (Rudolf Leitgeb)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, work around a Microsoft bug by preventing
- <application>libpq</application> from trying to send more than 64kB per system call
- (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle variables properly in <command>SET</command>
- commands (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- error reporting after failure to send a SQL command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to properly preserve postmaster
- command-line arguments across a <literal>restart</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous WAL file cutoff point calculation in
- <application>pg_standby</application> (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008f (for
- DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
- Pakistan, Palestine, and Paraguay)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-3">
- <title>Release 8.3.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-06-12</para>
- </formalpara>
-
- <para>
- This release contains one serious and one minor bug fix over 8.3.2.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.3</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.1,
- see <xref linkend="release-8-3-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
- </para>
-
- <para>
- Before this fix, a negative constant in a view or rule might be dumped
- as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
- be <literal>(-42)::integer</literal> due to operator precedence rules.
- Usually this would make little difference, but it could interact with
- another recent patch to cause
- <productname>PostgreSQL</productname> to reject what had been a valid
- <command>SELECT DISTINCT</command> view query. Since this could result in
- <application>pg_dump</application> output failing to reload, it is being treated
- as a high-priority fix. The only released versions in which dump
- output is actually incorrect are 8.3.1 and 8.2.7.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER AGGREGATE ... OWNER TO</command> update
- <structname>pg_shdepend</structname> (Tom)
- </para>
-
- <para>
- This oversight could lead to problems if the aggregate was later
- involved in a <command>DROP OWNED</command> or <command>REASSIGN OWNED</command>
- operation.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-2">
- <title>Release 8.3.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>never released</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.1.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.2</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, if you are upgrading from a version earlier than 8.3.1,
- see <xref linkend="release-8-3-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
- occurred on Windows when using UTF-8 database encoding and a different
- client encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect archive truncation point calculation for the
- <literal>%r</literal> macro in <varname>restore_command</varname> parameters
- (Simon)
- </para>
-
- <para>
- This could lead to data loss if a warm-standby script relied on
- <literal>%r</literal> to decide when to throw away WAL segment files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new
- column is correctly checked to see if it's been initialized to all
- non-nulls (Brendan Jurd)
- </para>
-
- <para>
- Previous versions neglected to check this requirement at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> so that it works on procedural
- languages too (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problems with <command>SELECT FOR UPDATE/SHARE</command> occurring as a
- subquery in a query with a non-<command>SELECT</command> top-level operation
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <command>CREATE TABLE</command> failure when inheriting the
- <quote>same</quote> constraint from multiple parent relations that
- inherited that constraint from a common ancestor (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to show the alias, if any, attached
- to the target table of an <command>UPDATE</command> or <command>DELETE</command>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore the pre-8.3 behavior that an out-of-range block number in a
- TID being used in a TidScan plan results in silently not matching any
- rows (Tom)
- </para>
-
- <para>
- 8.3.0 and 8.3.1 threw an error instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GIN bug that could result in a <literal>too many LWLocks
- taken</literal> failure (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix broken GiST comparison function for <type>tsquery</type> (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>tsvector_update_trigger()</function> and <function>ts_stat()</function>
- to accept domains over the types they expect to work with (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to support enum data types as foreign keys (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash when decompressing corrupted data
- (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions between delayed unlinks and <command>DROP
- DATABASE</command> (Heikki)
- </para>
-
- <para>
- In the worst case this could result in deleting a newly created table
- in a new database that happened to get the same OID as the
- recently-dropped one; but of course that is an extremely
- low-probability scenario.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair two places where SIGTERM exit of a backend could leave corrupted
- state in shared memory (Tom)
- </para>
-
- <para>
- Neither case is very important if SIGTERM is used to shut down the
- whole database cluster together, but there was a problem if someone
- tried to SIGTERM individual backends.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to incorrect plan generated for an
- <literal><replaceable>x</replaceable> IN (SELECT <replaceable>y</replaceable>
- FROM ...)</literal> clause when <replaceable>x</replaceable> and <replaceable>y</replaceable>
- have different data types; and make sure the behavior is semantically
- correct when the conversion from <replaceable>y</replaceable>'s type to
- <replaceable>x</replaceable>'s type is lossy (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix oversight that prevented the planner from substituting known Param
- values as if they were constants (Tom)
- </para>
-
- <para>
- This mistake partially disabled optimization of unnamed
- extended-Query statements in 8.3.0 and 8.3.1: in particular the
- LIKE-to-indexscan optimization would never be applied if the LIKE
- pattern was passed as a parameter, and constraint exclusion
- depending on a parameter value didn't work either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure when an indexable <function>MIN</function> or
- <function>MAX</function> aggregate is used with <literal>DISTINCT</literal> or
- <literal>ORDER BY</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to ensure it never uses a <quote>physical tlist</quote> for a
- plan node that is feeding a Sort node (Tom)
- </para>
-
- <para>
- This led to the sort having to push around more data than it really
- needed to, since unused column values were included in the sorted
- data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary copying of query strings (Tom)
- </para>
-
- <para>
- This fixes a performance problem introduced in 8.3.0 when a very large
- number of commands are submitted as a single query string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>TransactionIdIsCurrentTransactionId()</function> use binary
- search instead of linear search when checking child-transaction XIDs
- (Heikki)
- </para>
-
- <para>
- This fixes some cases in which 8.3.0 was significantly
- slower than earlier releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix conversions between ISO-8859-5 and other encodings to handle
- Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
- two dots) (Sergey Burladyan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several datatype input functions, notably <function>array_in()</function>,
- that were allowing unused bytes in their results to contain
- uninitialized, unpredictable values (Tom)
- </para>
-
- <para>
- This could lead to failures in which two apparently identical literal
- values were not seen as equal, resulting in the parser complaining
- about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal>
- expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case in regular-expression substring matching
- (<literal>substring(<replaceable>string</replaceable> from
- <replaceable>pattern</replaceable>)</literal>) (Tom)
- </para>
-
- <para>
- The problem occurs when there is a match to the pattern overall but
- the user has specified a parenthesized subexpression and that
- subexpression hasn't got a match. An example is
- <literal>substring('foo' from 'foo(bar)?')</literal>.
- This should return NULL, since <literal>(bar)</literal> isn't matched, but
- it was mistakenly returning the whole-pattern match instead (ie,
- <literal>foo</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent cancellation of an auto-vacuum that was launched to prevent
- XID wraparound (Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>ANALYZE</command>'s handling of in-doubt tuples (those
- inserted or deleted by a not-yet-committed transaction) so that the
- counts it reports to the stats collector are more likely to be correct
- (Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>initdb</application> to reject a relative path for its
- <literal>--xlogdir</literal> (<literal>-X</literal>) option (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>psql</application> print tab characters as an appropriate
- number of spaces, rather than <literal>\x09</literal> as was done in
- 8.3.0 and 8.3.1 (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008c (for
- DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
- Argentina/San_Luis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>ECPGget_PGconn()</function> function to
- <application>ecpglib</application> (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect result from <application>ecpg</application>'s
- <function>PGTYPEStimestamp_sub()</function> function (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of continuation line markers in <application>ecpg</application>
- (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes in <filename>contrib/cube</filename> functions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <filename>contrib/xml2</filename>'s
- <function>xpath_table()</function> function when the input query returns a
- NULL value (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s makefile to not override
- <literal>CFLAGS</literal>, and make it auto-configure properly for
- <application>libxslt</application> present or not (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3-1">
- <title>Release 8.3.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-03-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.3.0.
- For information about new features in the 8.3 major release, see
- <xref linkend="release-8-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.3.1</title>
-
- <para>
- A dump/restore is not required for those running 8.3.X.
- However, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the Windows locale
- issue described below.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix character string comparison for Windows locales that consider
- different character combinations as equal (Tom)
- </para>
-
- <para>
- This fix applies only on Windows and only when using UTF-8
- database encoding. The same fix was made for all other cases
- over two years ago, but Windows with UTF-8 uses a separate code
- path that was not updated. If you are using a locale that
- considers some non-identical strings as equal, you may need to
- <command>REINDEX</command> to fix existing indexes on textual columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair corner-case bugs in <command>VACUUM FULL</command> (Tom)
- </para>
-
- <para>
- A potential deadlock between concurrent <command>VACUUM FULL</command>
- operations on different system catalogs was introduced in 8.2.
- This has now been corrected. 8.3 made this worse because the
- deadlock could occur within a critical code section, making it
- a PANIC rather than just ERROR condition.
- </para>
-
- <para>
- Also, a <command>VACUUM FULL</command> that failed partway through
- vacuuming a system catalog could result in cache corruption in
- concurrent database sessions.
- </para>
-
- <para>
- Another <command>VACUUM FULL</command> bug introduced in 8.3 could
- result in a crash or out-of-memory report when dealing with
- pages containing no live tuples.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of foreign key checks involving <type>character</type>
- or <type>bit</type> columns (Tom)
- </para>
-
- <para>
- If the referencing column were of a different but compatible type
- (for instance <type>varchar</type>), the constraint was enforced incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid needless deadlock failures in no-op foreign-key checks (Stephan
- Szabo, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible core dump when re-planning a prepared query (Tom)
- </para>
-
- <para>
- This bug affected only protocol-level prepare operations, not
- SQL <command>PREPARE</command>, and so tended to be seen only with
- JDBC, DBI, and other client-side drivers that use prepared
- statements heavily.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when re-planning a query that calls an SPI-using
- function (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure in row-wise comparisons involving columns of different
- datatypes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
- race condition (Tom)
- </para>
-
- <para>
- In rare cases a session that had just executed a
- <command>LISTEN</command> might not get a notification, even though
- one would be expected because the concurrent transaction executing
- <command>NOTIFY</command> was observed to commit later.
- </para>
-
- <para>
- A side effect of the fix is that a transaction that has executed
- a not-yet-committed <command>LISTEN</command> command will not see any
- row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
- should it choose to look; formerly it would have. This behavior
- was never documented one way or the other, but it is possible that
- some applications depend on the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>LISTEN</command> and <command>UNLISTEN</command> within a
- prepared transaction (Tom)
- </para>
-
- <para>
- This was formerly allowed but trying to do it had various unpleasant
- consequences, notably that the originating backend could not exit
- as long as an <command>UNLISTEN</command> remained uncommitted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow dropping a temporary table within a
- prepared transaction (Heikki)
- </para>
-
- <para>
- This was correctly disallowed by 8.1, but the check was inadvertently
- broken in 8.2 and 8.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash when an error occurs during a query using a hash index
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect comparison of <type>tsquery</type> values (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behavior of <literal>LIKE</literal> with non-ASCII characters
- in single-byte encodings (Rolf Jentsch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable <function>xmlvalidate</function> (Tom)
- </para>
-
- <para>
- This function should have been removed before 8.3 release, but
- was inadvertently left in the source code. It poses a small
- security risk since unprivileged users could use it to read the
- first few characters of any file accessible to the server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks in certain usages of set-returning functions (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>encode(<replaceable>bytea</replaceable>, 'escape')</function> convert all
- high-bit-set byte values into <literal>\</literal><replaceable>nnn</replaceable> octal
- escape sequences (Tom)
- </para>
-
- <para>
- This is necessary to avoid encoding problems when the database
- encoding is multi-byte. This change could pose compatibility issues
- for applications that are expecting specific results from
- <function>encode</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix input of datetime values for February 29 in years BC (Tom)
- </para>
-
- <para>
- The former coding was mistaken about which years were leap years.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unrecognized node type</quote> error in some variants of
- <command>ALTER OWNER</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
- INCLUDING INDEXES</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structname>pg_stat_activity</structname>.<structfield>waiting</structfield> flag
- is cleared when a lock wait is aborted (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of process permissions on Windows Vista (Dave, Magnus)
- </para>
-
- <para>
- In particular, this fix allows starting the server as the Administrator
- user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2008a
- (in particular, recent Chile changes); adjust timezone abbreviation
- <literal>VET</literal> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> problems with arrays (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to correctly extract the postmaster's port
- number from command-line options (Itagaki Takahiro, Tom)
- </para>
-
- <para>
- Previously, <literal>pg_ctl start -w</literal> could try to contact the
- postmaster on the wrong port, leading to bogus reports of startup
- failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fwrapv</option> to defend against possible misoptimization
- in recent <application>gcc</application> versions (Tom)
- </para>
-
- <para>
- This is known to be necessary when building <productname>PostgreSQL</productname>
- with <application>gcc</application> 4.3 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable building <filename>contrib/uuid-ossp</filename> with MSVC (Hiroshi Saito)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-3">
- <title>Release 8.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-02-04</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- With significant new functionality and performance enhancements,
- this release represents a major leap forward for
- <productname>PostgreSQL</productname>. This was made possible by a growing
- community that has dramatically accelerated the pace of
- development. This release adds the following major features:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Full text search is integrated into the core database system
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for the SQL/XML standard, including new operators and an
- <type>XML</type> data type
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enumerated data types (<type>ENUM</type>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Arrays of composite types
- </para>
- </listitem>
-
- <listitem>
- <para>
- Universally Unique Identifier (<type>UUID</type>) data type
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add control over whether <literal>NULL</literal>s sort first or last
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updatable cursors
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameters can now be set on a per-function
- basis
- </para>
- </listitem>
-
- <listitem>
- <para>
- User-defined types can now have type modifiers
- </para>
- </listitem>
-
- <listitem>
- <para>
- Automatically re-plan cached queries when table
- definitions change or statistics are updated
- </para>
- </listitem>
-
- <listitem>
- <para>
- Numerous improvements in logging and statistics collection
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Security Service Provider Interface (<acronym>SSPI</acronym>) for
- authentication on Windows
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multiple concurrent autovacuum processes, and other
- autovacuum improvements
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the whole <productname>PostgreSQL</productname> distribution to be compiled
- with <productname>Microsoft Visual C++</productname>
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- Major performance improvements are listed below. Most of
- these enhancements are automatic and do not require user changes or
- tuning:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Asynchronous commit delays writes to WAL during transaction commit
- </para>
- </listitem>
-
- <listitem>
- <para>
- Checkpoint writes can be spread over a longer time period to smooth
- the I/O spike during each checkpoint
- </para>
- </listitem>
-
- <listitem>
- <para>
- Heap-Only Tuples (<acronym>HOT</acronym>) accelerate space reuse for
- most <command>UPDATE</command>s and <command>DELETE</command>s
- </para>
- </listitem>
-
- <listitem>
- <para>
- Just-in-time background writer strategy improves disk write
- efficiency
- </para>
- </listitem>
-
- <listitem>
- <para>
- Using non-persistent transaction IDs for read-only transactions
- reduces overhead and <command>VACUUM</command> requirements
- </para>
- </listitem>
-
- <listitem>
- <para>
- Per-field and per-row storage overhead has been reduced
- </para>
- </listitem>
-
- <listitem>
- <para>
- Large sequential scans no longer force out frequently used
- cached pages
- </para>
- </listitem>
-
- <listitem>
- <para>
- Concurrent large sequential scans can now share disk reads
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ORDER BY ... LIMIT</literal> can be done without sorting
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Migration to Version 8.3</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is
- required for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>General</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Non-character data types are no longer automatically cast to
- <type>TEXT</type> (Peter, Tom)
- </para>
-
- <para>
- Previously, if a non-character value was supplied to an operator or
- function that requires <type>text</type> input, it was automatically
- cast to <type>text</type>, for most (though not all) built-in data types.
- This no longer happens: an explicit cast to <type>text</type> is now
- required for all non-character-string types. For example, these
- expressions formerly worked:
-
-<programlisting>
-substr(current_date, 1, 4)
-23 LIKE '2%'
-</programlisting>
-
- but will now draw <quote>function does not exist</quote> and <quote>operator
- does not exist</quote> errors respectively. Use an explicit cast instead:
-
-<programlisting>
-substr(current_date::text, 1, 4)
-23::text LIKE '2%'
-</programlisting>
-
- (Of course, you can use the more verbose <literal>CAST()</literal> syntax too.)
- The reason for the change is that these automatic casts too often caused
- surprising behavior. An example is that in previous releases, this
- expression was accepted but did not do what was expected:
-
-<programlisting>
-current_date &lt; 2017-11-17
-</programlisting>
-
- This is actually comparing a date to an integer, which should be
- (and now is) rejected &mdash; but in the presence of automatic
- casts both sides were cast to <type>text</type> and a textual comparison
- was done, because the <literal>text &lt; text</literal> operator was able
- to match the expression when no other <literal>&lt;</literal> operator could.
- </para>
-
- <para>
- Types <type>char(<replaceable>n</replaceable>)</type> and
- <type>varchar(<replaceable>n</replaceable>)</type> still cast to <type>text</type>
- automatically. Also, automatic casting to <type>text</type> still works for
- inputs to the concatenation (<literal>||</literal>) operator, so long as least
- one input is a character-string type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full text search features from <filename>contrib/tsearch2</filename> have
- been moved into the core server, with some minor syntax changes
- </para>
-
- <para>
- <filename>contrib/tsearch2</filename> now contains a compatibility
- interface.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</command>
- returns no rows, now returns an empty array, rather than NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The array type name for a base data type is no longer always the base
- type's name with an underscore prefix
- </para>
-
- <para>
- The old naming convention is still honored when possible, but
- application code should no longer depend on it. Instead
- use the new <literal>pg_type.typarray</literal> column to
- identify the array data type associated with a given type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ORDER BY ... USING</literal> <replaceable>operator</replaceable> must now
- use a less-than or greater-than <replaceable>operator</replaceable> that is
- defined in a btree operator class
- </para>
-
- <para>
- This restriction was added to prevent inconsistent results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>SET LOCAL</command> changes now persist until
- the end of the outermost transaction, unless rolled back (Tom)
- </para>
-
- <para>
- Previously <command>SET LOCAL</command>'s effects were lost
- after subtransaction commit (<command>RELEASE SAVEPOINT</command>
- or exit from a PL/pgSQL exception block).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Commands rejected in transaction blocks are now also rejected in
- multiple-statement query strings (Tom)
- </para>
-
- <para>
- For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</literal> will now be
- rejected even if submitted as a single query message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>ROLLBACK</command> outside a transaction block now
- issues <literal>NOTICE</literal> instead of <literal>WARNING</literal> (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
- from accepting schema-qualified names (Bruce)
- </para>
-
- <para>
- Formerly, these commands accepted <literal>schema.relation</literal> but
- ignored the schema part, which was confusing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>ALTER SEQUENCE</command> no longer affects the sequence's
- <function>currval()</function> state (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Foreign keys now must match indexable conditions for
- cross-data-type references (Tom)
- </para>
-
- <para>
- This improves semantic consistency and helps avoid
- performance problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restrict object size functions to users who have reasonable
- permissions to view such information (Tom)
- </para>
-
- <para>
- For example, <function>pg_database_size()</function> now requires
- <literal>CONNECT</literal> permission, which is granted to everyone by
- default. <function>pg_tablespace_size()</function> requires
- <literal>CREATE</literal> permission in the tablespace, or is allowed if
- the tablespace is the default tablespace for the database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the undocumented <literal>!!=</literal> (not in) operator (Tom)
- </para>
-
- <para>
- <literal>NOT IN (SELECT ...)</literal> is the proper way to
- perform this operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Internal hashing functions are now more uniformly-distributed (Tom)
- </para>
-
- <para>
- If application code was computing and storing hash values using
- internal <productname>PostgreSQL</productname> hashing functions, the hash
- values must be regenerated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- C-code conventions for handling variable-length data values
- have changed (Greg Stark, Tom)
- </para>
-
- <para>
- The new <function>SET_VARSIZE()</function> macro <emphasis>must</emphasis> be used
- to set the length of generated <type>varlena</type> values. Also, it
- might be necessary to expand (<quote>de-TOAST</quote>) input values
- in more cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Continuous archiving no longer reports each successful archive
- operation to the server logs unless <literal>DEBUG</literal> level is used
- (Simon)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Configuration Parameters</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Numerous changes in administrative server parameters
- </para>
-
- <para>
- <varname>bgwriter_lru_percent</varname>,
- <varname>bgwriter_all_percent</varname>,
- <varname>bgwriter_all_maxpages</varname>,
- <varname>stats_start_collector</varname>, and
- <varname>stats_reset_on_server_start</varname> are removed.
- <varname>redirect_stderr</varname> is renamed to
- <varname>logging_collector</varname>.
- <varname>stats_command_string</varname> is renamed to
- <varname>track_activities</varname>.
- <varname>stats_block_level</varname> and <varname>stats_row_level</varname>
- are merged into <varname>track_counts</varname>.
- A new boolean configuration parameter, <varname>archive_mode</varname>,
- controls archiving. Autovacuum's default settings have changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>stats_start_collector</varname> parameter (Tom)
- </para>
-
- <para>
- We now always start the collector process, unless <acronym>UDP</acronym>
- socket creation fails.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
- </para>
-
- <para>
- This was removed because <function>pg_stat_reset()</function>
- can be used for this purpose.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Commenting out a parameter in <filename>postgresql.conf</filename> now
- causes it to revert to its default value (Joachim Wieland)
- </para>
-
- <para>
- Previously, commenting out an entry left the parameter's value unchanged
- until the next server restart.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
-
- <sect3>
- <title>Character Encodings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add more checks for invalidly-encoded data (Andrew)
- </para>
-
- <para>
- This change plugs some holes that existed in literal backslash
- escape string processing and <command>COPY</command> escape
- processing. Now the de-escaped string is rechecked to see if the
- result created an invalid multi-byte character.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow database encodings that are inconsistent with the server's
- locale setting (Tom)
- </para>
-
- <para>
- On most platforms, <literal>C</literal> locale is the only locale that
- will work with any database encoding. Other locale settings imply
- a specific encoding and will misbehave if the database encoding
- is something different. (Typical symptoms include bogus textual
- sort order and wrong results from <function>upper()</function> or
- <function>lower()</function>.) The server now rejects attempts to create
- databases that have an incompatible encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <function>chr()</function> cannot create
- invalidly-encoded values (Andrew)
- </para>
-
- <para>
- In UTF8-encoded databases the argument of <function>chr()</function> is
- now treated as a Unicode code point. In other multi-byte encodings
- <function>chr()</function>'s argument must designate a 7-bit ASCII
- character. Zero is no longer accepted.
- <function>ascii()</function> has been adjusted to match.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <function>convert()</function> behavior to ensure encoding
- validity (Andrew)
- </para>
-
- <para>
- The two argument form of <function>convert()</function> has been
- removed. The three argument form now takes a <type>bytea</type>
- first argument and returns a <type>bytea</type>. To cover the
- loss of functionality, three new functions have been added:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- <function>convert_from(bytea, name)</function> returns
- <type>text</type> &mdash; converts the first argument from the named
- encoding to the database encoding
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>convert_to(text, name)</function> returns
- <type>bytea</type> &mdash; converts the first argument from the
- database encoding to the named encoding
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>length(bytea, name)</function> returns
- <type>integer</type> &mdash; gives the length of the first
- argument in characters in the named encoding
- </para>
- </listitem>
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>convert(argument USING conversion_name)</literal>
- (Andrew)
- </para>
-
- <para>
- Its behavior did not match the SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make JOHAB encoding client-only (Tatsuo)
- </para>
-
- <para>
- JOHAB is not safe as a server-side encoding.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the
- changes between <productname>PostgreSQL</productname> 8.3 and
- the previous major release.
- </para>
-
- <sect3>
- <title>Performance</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Asynchronous commit delays writes to WAL during transaction commit
- (Simon)
- </para>
-
- <para>
- This feature dramatically increases performance for short data-modifying
- transactions. The disadvantage is that because disk writes are delayed,
- if the database or operating system crashes before data is written to
- the disk, committed data will be lost. This feature is useful for
- applications that can accept some data loss. Unlike turning off
- <varname>fsync</varname>, using asynchronous commit does not put
- database consistency at risk; the worst case is that after a crash the
- last few reportedly-committed transactions might not be committed after
- all.
- This feature is enabled by turning off <varname>synchronous_commit</varname>
- (which can be done per-session or per-transaction, if some transactions
- are critical and others are not).
- <varname>wal_writer_delay</varname> can be adjusted to control the maximum
- delay before transactions actually reach disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Checkpoint writes can be spread over a longer time period to smooth
- the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
- Linnakangas)
- </para>
-
- <para>
- Previously all modified buffers were forced to disk as quickly as
- possible during a
- checkpoint, causing an I/O spike that decreased server performance.
- This new approach spreads out disk writes during checkpoints,
- reducing peak I/O usage. (User-requested and shutdown checkpoints
- are still written as quickly as possible.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Heap-Only Tuples (<acronym>HOT</acronym>) accelerate space reuse for most
- <command>UPDATE</command>s and <command>DELETE</command>s (Pavan Deolasee, with
- ideas from many others)
- </para>
-
- <para>
- <command>UPDATE</command>s and <command>DELETE</command>s leave dead tuples
- behind, as do failed <command>INSERT</command>s. Previously only
- <command>VACUUM</command> could reclaim space taken by dead tuples. With
- <acronym>HOT</acronym> dead tuple space can be automatically reclaimed at
- the time of <command>INSERT</command> or <command>UPDATE</command> if no changes
- are made to indexed columns. This allows for more consistent
- performance. Also, <acronym>HOT</acronym> avoids adding duplicate index
- entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Just-in-time background writer strategy improves disk write
- efficiency (Greg Smith, Itagaki Takahiro)
- </para>
-
- <para>
- This greatly reduces the need for manual tuning of the background
- writer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Per-field and per-row storage overhead have been reduced
- (Greg Stark, Heikki Linnakangas)
- </para>
-
- <para>
- Variable-length data types with data values less than 128 bytes long
- will see a storage decrease of 3 to 6 bytes. For example, two adjacent
- <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
- are also 4 bytes shorter than before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Using non-persistent transaction IDs for read-only transactions
- reduces overhead and <command>VACUUM</command> requirements (Florian Pflug)
- </para>
-
- <para>
- Non-persistent transaction IDs do not increment the global
- transaction counter. Therefore, they reduce the load on
- <structname>pg_clog</structname> and increase the time between forced
- vacuums to prevent transaction ID wraparound.
- Other performance
- improvements were also made that should improve concurrency.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid incrementing the command counter after a read-only command (Tom)
- </para>
-
- <para>
- There was formerly a hard limit of 2<superscript>32</superscript>
- (4 billion) commands per transaction. Now only commands that
- actually changed the database count, so while this limit still
- exists, it should be significantly less annoying.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a dedicated <acronym>WAL</acronym> writer process to off-load
- work from backends (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip unnecessary WAL writes for <command>CLUSTER</command> and
- <command>COPY</command> (Simon)
- </para>
-
- <para>
- Unless WAL archiving is enabled, the system now avoids WAL writes
- for <command>CLUSTER</command> and just <function>fsync()</function>s the
- table at the end of the command. It also does the same for
- <command>COPY</command> if the table was created in the same
- transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Large sequential scans no longer force out frequently used
- cached pages (Simon, Heikki, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Concurrent large sequential scans can now share disk reads (Jeff Davis)
- </para>
-
- <para>
- This is accomplished by starting the new sequential scan in the
- middle of the table (where another sequential scan is already
- in-progress) and wrapping around to the beginning to finish. This
- can affect the order of returned rows in a query that does not
- specify <literal>ORDER BY</literal>. The <varname>synchronize_seqscans</varname>
- configuration parameter can be used to disable this if necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ORDER BY ... LIMIT</literal> can be done without sorting
- (Greg Stark)
- </para>
-
- <para>
- This is done by sequentially scanning the table and tracking just
- the <quote>top N</quote> candidate rows, rather than performing a
- full sort of the entire table. This is useful when there is no
- matching index and the <literal>LIMIT</literal> is not large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put a rate limit on messages sent to the statistics
- collector by backends
- (Tom)
- </para>
-
- <para>
- This reduces overhead for short transactions, but might sometimes
- increase the delay before statistics are tallied.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve hash join performance for cases with many NULLs (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up operator lookup for cases with non-exact datatype matches (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Autovacuum is now enabled by default (Alvaro)
- </para>
-
- <para>
- Several changes were made to eliminate disadvantages of having
- autovacuum enabled, thereby justifying the change in default.
- Several other autovacuum parameter defaults were also modified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multiple concurrent autovacuum processes (Alvaro, Itagaki
- Takahiro)
- </para>
-
- <para>
- This allows multiple vacuums to run concurrently. This prevents
- vacuuming of a large table from delaying vacuuming of smaller tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Automatically re-plan cached queries when table
- definitions change or statistics are updated (Tom)
- </para>
-
- <para>
- Previously PL/pgSQL functions that referenced temporary tables
- would fail if the temporary table was dropped and recreated
- between function invocations, unless <literal>EXECUTE</literal> was
- used. This improvement fixes that problem and many related issues.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <varname>temp_tablespaces</varname> parameter to control
- the tablespaces for temporary tables and files (Jaime Casanova,
- Albert Cervera, Bernd Helmle)
- </para>
-
- <para>
- This parameter defines a list of tablespaces to be used. This
- enables spreading the I/O load across multiple tablespaces. A random
- tablespace is chosen each time a temporary object is created.
- Temporary files are no longer stored in per-database
- <filename>pgsql_tmp/</filename> directories but in per-tablespace
- directories.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Place temporary tables' TOAST tables in special schemas named
- <literal>pg_toast_temp_<replaceable>nnn</replaceable></literal> (Tom)
- </para>
-
- <para>
- This allows low-level code to recognize these tables as temporary,
- which enables various optimizations such as not WAL-logging changes
- and using local rather than shared buffers for access. This also
- fixes a bug wherein backends unexpectedly held open file references
- to temporary TOAST tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problem that a constant flow of new connection requests could
- indefinitely delay the postmaster from completing a shutdown or
- a crash restart (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against a very-low-probability data loss scenario by preventing
- re-use of a deleted table's relfilenode until after the next
- checkpoint (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE CONSTRAINT TRIGGER</command>
- to convert old-style foreign key trigger definitions into regular
- foreign key constraints (Tom)
- </para>
-
- <para>
- This will ease porting of foreign key constraints carried forward from
- pre-7.3 databases, if they were never converted using
- <filename>contrib/adddepend</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>DEFAULT NULL</literal> to override inherited defaults (Tom)
- </para>
-
- <para>
- <literal>DEFAULT NULL</literal> was formerly considered a noise phrase, but it
- should (and now does) override non-null defaults that would otherwise
- be inherited from a parent table or domain.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
- </para>
-
- <para>
- These new encodings can be converted to and from UTF-8.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change server startup log message from <quote>database system is
- ready</quote> to <quote>database system is ready to accept
- connections</quote>, and adjust its timing
- </para>
-
- <para>
- The message now appears only when the postmaster is really ready
- to accept connections.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Monitoring</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <varname>log_autovacuum_min_duration</varname> parameter to
- support configurable logging of autovacuum activity (Simon, Alvaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>log_lock_waits</varname> parameter to log lock waiting
- (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>log_temp_files</varname> parameter to log temporary
- file usage (Bill Moran)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>log_checkpoints</varname> parameter to improve logging
- of checkpoints (Greg Smith, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>log_line_prefix</varname> now supports
- <literal>%s</literal> and <literal>%c</literal> escapes in all
- processes (Andrew)
- </para>
-
- <para>
- Previously these escapes worked only for user sessions, not for
- background database processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>log_restartpoints</varname> to control logging of
- point-in-time recovery restart points (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Last transaction end time is now logged at end of recovery and at
- each logged restart point (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Autovacuum now reports its activity start time in
- <literal>pg_stat_activity</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow server log output in comma-separated value (CSV) format (Arul
- Shaji, Greg Smith, Andrew Dunstan)
- </para>
-
- <para>
- CSV-format log files can easily be loaded into a database table for
- subsequent analysis.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use PostgreSQL-supplied timezone support for formatting timestamps
- displayed in the server log (Tom)
- </para>
-
- <para>
- This avoids Windows-specific problems with localized time zone
- names that are in the wrong encoding. There is a new
- <varname>log_timezone</varname> parameter that controls the timezone
- used in log messages, independently of the client-visible
- <varname>timezone</varname> parameter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New system view <literal>pg_stat_bgwriter</literal> displays
- statistics about background writer activity (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new columns for database-wide tuple statistics to
- <literal>pg_stat_database</literal> (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an <literal>xact_start</literal> (transaction start time) column to
- <literal>pg_stat_activity</literal> (Neil)
- </para>
-
- <para>
- This makes it easier to identify long-running transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>n_live_tuples</literal> and <literal>n_dead_tuples</literal> columns
- to <literal>pg_stat_all_tables</literal> and related views (Glen
- Parker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merge <varname>stats_block_level</varname> and <varname>stats_row_level</varname>
- parameters into a single parameter <varname>track_counts</varname>, which
- controls all messages sent to the statistics collector process
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename <varname>stats_command_string</varname> parameter to
- <varname>track_activities</varname> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistical counting of live and dead tuples to recognize that
- committed and aborted transactions have different effects (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Authentication</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support Security Service Provider Interface (<acronym>SSPI</acronym>) for
- authentication on Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support GSSAPI authentication (Henry Hotz, Magnus)
- </para>
-
- <para>
- This should be preferred to native Kerberos authentication because
- GSSAPI is an industry standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support a global SSL configuration file (Victor Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>ssl_ciphers</varname> parameter to control accepted SSL ciphers
- (Victor Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a Kerberos realm parameter, <varname>krb_realm</varname> (Magnus)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Write-Ahead Log (<acronym>WAL</acronym>) and Continuous Archiving</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Change the timestamps recorded in transaction WAL records from
- time_t to TimestampTz representation (Tom)
- </para>
-
- <para>
- This provides sub-second resolution in WAL, which can be useful for
- point-in-time recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce WAL disk space needed by warm standby servers (Simon)
- </para>
-
- <para>
- This change allows a warm standby server to pass the name of the earliest
- still-needed WAL file to the recovery script, allowing automatic removal
- of no-longer-needed WAL files. This is done using <literal>%r</literal> in
- the <varname>restore_command</varname> parameter of
- <filename>recovery.conf</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New boolean configuration parameter, <varname>archive_mode</varname>,
- controls archiving (Simon)
- </para>
-
- <para>
- Previously setting <varname>archive_command</varname> to an empty string
- turned off archiving. Now <varname>archive_mode</varname> turns archiving
- on and off, independently of <varname>archive_command</varname>. This is
- useful for stopping archiving temporarily.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Full text search is integrated into the core database
- system (Teodor, Oleg)
- </para>
-
- <para>
- Text search has been improved, moved into the core code, and is now
- installed by default. <filename>contrib/tsearch2</filename> now contains
- a compatibility interface.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add control over whether <literal>NULL</literal>s sort first or last (Teodor, Tom)
- </para>
-
- <para>
- The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow per-column ascending/descending (<literal>ASC</literal>/<literal>DESC</literal>)
- ordering options for indexes (Teodor, Tom)
- </para>
-
- <para>
- Previously a query using <literal>ORDER BY</literal> with mixed
- <literal>ASC</literal>/<literal>DESC</literal> specifiers could not fully use
- an index. Now an index can be fully used in such cases if the
- index was created with matching
- <literal>ASC</literal>/<literal>DESC</literal> specifications.
- <literal>NULL</literal> sort order within an index can be controlled, too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>col IS NULL</literal> to use an index (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updatable cursors (Arul Shaji, Tom)
- </para>
-
- <para>
- This eliminates the need to reference a primary key to
- <command>UPDATE</command> or <command>DELETE</command> rows returned by a cursor.
- The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a general mechanism that supports casts to and from the
- standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
- <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
- invoking the datatype's I/O functions (Tom)
- </para>
-
- <para>
- Previously, such casts were available only for types that had
- specialized function(s) for the purpose.
- These new casts are assignment-only in the to-string direction,
- explicit-only in the other direction, and therefore should create no
- surprising behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>UNION</literal> and related constructs to return a domain
- type, when all inputs are of that domain type (Tom)
- </para>
-
- <para>
- Formerly, the output would be considered to be of the domain's base
- type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow limited hashing when using two different data types (Tom)
- </para>
-
- <para>
- This allows hash joins, hash indexes, hashed subplans, and hash
- aggregation to be used in situations involving cross-data-type
- comparisons, if the data types have compatible hash functions.
- Currently, cross-data-type hashing support exists for
- <type>smallint</type>/<type>integer</type>/<type>bigint</type>,
- and for <type>float4</type>/<type>float8</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer logic for detecting when variables are equal
- in a <literal>WHERE</literal> clause (Tom)
- </para>
-
- <para>
- This allows mergejoins to work with descending sort orders, and
- improves recognition of redundant sort columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance when planning large inheritance trees in
- cases where most tables are excluded by constraints (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
- <itemizedlist>
-
- <listitem>
-
- <para>
- Arrays of composite types (David Fetter, Andrew, Tom)
- </para>
-
- <para>
- In addition to arrays of explicitly-declared composite types,
- arrays of the rowtypes of regular tables and views are now
- supported, except for rowtypes of system catalogs, sequences, and TOAST
- tables.
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- Server configuration parameters can now be set on a per-function
- basis (Tom)
- </para>
-
- <para>
- For example, functions can now set their own
- <varname>search_path</varname> to prevent unexpected behavior if a
- different <varname>search_path</varname> exists at run-time. Security
- definer functions should set <varname>search_path</varname> to
- avoid security loopholes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>CREATE/ALTER FUNCTION</command> now supports
- <literal>COST</literal> and <literal>ROWS</literal> options (Tom)
- </para>
-
- <para>
- <literal>COST</literal> allows specification of the cost of a
- function call. <literal>ROWS</literal> allows specification of
- the average number or rows returned by a set-returning function.
- These values are used by the optimizer in choosing the best plan.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <command>CREATE TABLE LIKE ... INCLUDING
- INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
- transactions in other databases (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
- SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
- </para>
-
- <para>
- Previously this could only be done via <command>ALTER TABLE ...
- RENAME TO</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE/DROP/RENAME DATABASE</command> wait briefly for
- conflicting backends to exit before failing (Tom)
- </para>
-
- <para>
- This increases the likelihood that these commands will succeed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow triggers and rules to be deactivated in groups using a
- configuration parameter, for replication purposes (Jan)
- </para>
-
- <para>
- This allows replication systems to disable triggers and rewrite
- rules as a group without modifying the system catalogs directly.
- The behavior is controlled by <command>ALTER TABLE</command> and a new
- parameter <varname>session_replication_role</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- User-defined types can now have type modifiers (Teodor, Tom)
- </para>
-
- <para>
- This allows a user-defined type to take a modifier, like
- <type>ssnum(7)</type>. Previously only built-in
- data types could have modifiers.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Non-superuser database owners now are able to add trusted procedural
- languages to their databases by default (Jeremy Drake)
- </para>
-
- <para>
- While this is reasonably safe, some administrators might wish to
- revoke the privilege. It is controlled by
- <structname>pg_pltemplate</structname>.<structfield>tmpldbacreate</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a session's current parameter setting to be used as the
- default for future sessions (Tom)
- </para>
-
- <para>
- This is done with <literal>SET ... FROM CURRENT</literal> in
- <command>CREATE/ALTER FUNCTION</command>, <command>ALTER
- DATABASE</command>, or <command>ALTER ROLE</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement new commands <command>DISCARD ALL</command>,
- <command>DISCARD PLANS</command>, <command>DISCARD
- TEMPORARY</command>, <command>CLOSE ALL</command>, and
- <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
- </para>
-
- <para>
- These commands simplify resetting a database session to its initial
- state, and are particularly useful for connection-pooling software.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
- </para>
-
- <para>
- Formerly, <command>CLUSTER</command> would discard all tuples
- that were committed dead, even if there were still transactions
- that should be able to see them under MVCC visibility rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
- <replaceable>table</replaceable> USING <replaceable>index</replaceable></literal>
- (Holger Schurig)
- </para>
-
- <para>
- The old <command>CLUSTER</command> syntax is still supported, but
- the new form is considered more logical.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> so it can show complex plans
- more accurately (Tom)
- </para>
-
- <para>
- References to subplan outputs are now always shown correctly,
- instead of using <literal>?column<replaceable>N</replaceable>?</literal>
- for complicated cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the amount of information reported when a user is dropped
- (Alvaro)
- </para>
-
- <para>
- Previously, dropping (or attempting to drop) a user who owned many
- objects could result in large <literal>NOTICE</literal> or
- <literal>ERROR</literal> messages listing all these objects; this
- caused problems for some client applications. The length of the
- message is now limited, although a full list is still sent to the
- server log.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support for the SQL/XML standard, including new operators and an
- <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
- </para>
-
- <para>
- This feature provides convenient support for fields that have a
- small, fixed set of allowed values. An example of creating an
- <literal>ENUM</literal> type is
- <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Universally Unique Identifier (<type>UUID</type>) data type (Gevik
- Babakhani, Neil)
- </para>
-
- <para>
- This closely matches <acronym>RFC</acronym> 4122.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
- </para>
-
- <para>
- This greatly increases the range of supported <type>MONEY</type>
- values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>float4</type>/<type>float8</type> to handle
- <literal>Infinity</literal> and <literal>NAN</literal> (Not A Number)
- consistently (Bruce)
- </para>
-
- <para>
- The code formerly was not consistent about distinguishing
- <literal>Infinity</literal> from overflow conditions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow leading and trailing whitespace during input of
- <type>boolean</type> values (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>COPY</command> from using digits and lowercase letters as
- delimiters (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add new regular expression functions
- <function>regexp_matches()</function>,
- <function>regexp_split_to_array()</function>, and
- <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
- </para>
-
- <para>
- These functions provide extraction of regular expression
- subexpressions and allow splitting a string using a POSIX regular
- expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>lo_truncate()</function> for large object truncation
- (Kris Jurka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <function>width_bucket()</function> for the <type>float8</type>
- data type (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_stat_clear_snapshot()</function> to discard
- statistics snapshots collected during the current transaction
- (Tom)
- </para>
-
- <para>
- The first request for statistics in a transaction takes a statistics
- snapshot that does not change during the transaction. This function
- allows the snapshot to be discarded and a new snapshot loaded during
- the next statistics query. This is particularly useful for PL/pgSQL
- functions, which are confined to a single transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>isodow</literal> option to <function>EXTRACT()</function> and
- <function>date_part()</function> (Bruce)
- </para>
-
- <para>
- This returns the day of the week, with Sunday as seven.
- (<literal>dow</literal> returns Sunday as zero.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>ID</literal> (ISO day of week) and <literal>IDDD</literal> (ISO
- day of year) format codes for <function>to_char()</function>,
- <function>to_date()</function>, and <function>to_timestamp()</function> (Brendan
- Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>to_timestamp()</function> and <function>to_date()</function>
- assume <literal>TM</literal> (trim) option for potentially
- variable-width fields (Bruce)
- </para>
-
- <para>
- This matches <productname>Oracle</productname>'s behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one conversion error in
- <function>to_date()</function>/<function>to_timestamp()</function>
- <literal>D</literal> (non-ISO day of week) fields (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>setseed()</function> return void, rather than a
- useless integer value (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a hash function for <type>NUMERIC</type> (Neil)
- </para>
-
- <para>
- This allows hash indexes and hash-based plans to be used with
- <type>NUMERIC</type> columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve efficiency of
- <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
- multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>currtid()</function> functions require
- <literal>SELECT</literal> privileges on the target table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add several <function>txid_*()</function> functions to query
- active transaction IDs (Jan)
- </para>
-
- <para>
- This is useful for various replication solutions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/pgSQL Server-Side Language</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add scrollable cursor support, including directional control in
- <command>FETCH</command> (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>IN</literal> as an alternative to
- <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
- statement, for consistency with the backend's
- <command>FETCH</command> command (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
- Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
- </para>
-
- <para>
- This adds convenient syntax for PL/pgSQL set-returning functions
- that want to return the result of a query. <command>RETURN QUERY</command>
- is easier and more efficient than a loop
- around <command>RETURN NEXT</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow function parameter names to be qualified with the
- function's name (Tom)
- </para>
-
- <para>
- For example, <literal>myfunc.myvar</literal>. This is particularly
- useful for specifying variables in a query where the variable
- name might match a column name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make qualification of variables with block labels work properly (Tom)
- </para>
-
- <para>
- Formerly, outer-level block labels could unexpectedly interfere with
- recognition of inner-level record or row references.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten requirements for <literal>FOR</literal> loop
- <literal>STEP</literal> values (Tom)
- </para>
-
- <para>
- Prevent non-positive <literal>STEP</literal> values, and handle
- loop overflows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve accuracy when reporting syntax error locations (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Server-Side Languages</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow type-name arguments to PL/Perl
- <function>spi_prepare()</function> to be data type aliases in
- addition to names found in <literal>pg_type</literal> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow type-name arguments to PL/Python
- <function>plpy.prepare()</function> to be data type aliases in
- addition to names found in <literal>pg_type</literal> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow type-name arguments to PL/Tcl <function>spi_prepare</function> to
- be data type aliases in addition to names found in
- <literal>pg_type</literal> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support a true PL/Python boolean type in compatible Python versions
- (Python 2.3 and later) (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl problems with thread-enabled <filename>libtcl</filename> spawning
- multiple threads within the backend (Steve Marshall, Paul Bayer,
- Doug Knight)
- </para>
-
- <para>
- This caused all sorts of unpleasantness.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="app-psql"><application>psql</application></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- List disabled triggers separately in <literal>\d</literal> output
- (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>\d</literal> patterns, always match <literal>$</literal>
- literally (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show aggregate return types in <literal>\da</literal> output
- (Greg Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the function's volatility status to the output of
- <literal>\df+</literal> (Neil)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>\prompt</literal> capability (Chad Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>\pset</literal>, <literal>\t</literal>, and
- <literal>\x</literal> to specify <literal>on</literal> or <literal>off</literal>,
- rather than just toggling (Chad Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>\sleep</literal> capability (Jan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable <literal>\timing</literal> output for <literal>\copy</literal> (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <literal>\timing</literal> resolution on Windows
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Flush <literal>\o</literal> output after each backslash command (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect and report errors while reading a <literal>-f</literal>
- input file (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>-u</literal> option (this option has long been deprecated)
- (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>--tablespaces-only</literal> and <literal>--roles-only</literal>
- options to <application>pg_dumpall</application> (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an output file option to
- <application>pg_dumpall</application> (Dave Page)
- </para>
-
- <para>
- This is primarily useful on Windows, where output redirection of
- child <application>pg_dump</application> processes does not work.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dumpall</application> to accept an initial-connection
- database name rather than the default
- <literal>template1</literal> (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>-n</literal> and <literal>-t</literal> switches, always match
- <literal>$</literal> literally (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance when a database has thousands of objects (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>-u</literal> option (this option has long been deprecated)
- (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Client Applications</title>
- <itemizedlist>
-
- <listitem>
- <para>
- In <application>initdb</application>, allow the location of the
- <filename>pg_xlog</filename> directory to be specified
- (Euler Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable server core dump generation in <application>pg_regress</application>
- on supported operating systems (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <literal>-t</literal> (timeout) parameter to <application>pg_ctl</application>
- (Bruce)
- </para>
-
- <para>
- This controls how long <application>pg_ctl</application> will wait when waiting
- for server startup or shutdown. Formerly the timeout was hard-wired
- as 60 seconds.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <application>pg_ctl</application> option to control generation
- of server core dumps (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Control-C to cancel <application>clusterdb</application>,
- <application>reindexdb</application>, and <application>vacuumdb</application> (Itagaki
- Takahiro, Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress command tag output for <application>createdb</application>,
- <application>createuser</application>, <application>dropdb</application>, and
- <application>dropuser</application> (Peter)
- </para>
-
- <para>
- The <literal>--quiet</literal> option is ignored and will be removed in 8.4.
- Progress messages when acting on all databases now go to stdout
- instead of stderr because they are not actually errors.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="libpq"><application>libpq</application></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Interpret the <literal>dbName</literal> parameter of
- <function>PQsetdbLogin()</function> as a <literal>conninfo</literal> string if
- it contains an equals sign (Andrew)
- </para>
-
- <para>
- This allows use of <literal>conninfo</literal> strings in client
- programs that still use <literal>PQsetdbLogin()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support a global <acronym>SSL</acronym> configuration file (Victor
- Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add environment variable <varname>PGSSLKEY</varname> to control
- <acronym>SSL</acronym> hardware keys (Victor Wagner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>lo_truncate()</function> for large object
- truncation (Kris Jurka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>PQconnectionNeedsPassword()</function> that returns
- true if the server required a password but none was supplied
- (Joe Conway, Tom)
- </para>
-
- <para>
- If this returns true after a failed connection attempt, a client
- application should prompt the user for a password. In the past
- applications have had to check for a specific error message string to
- decide whether a password is needed; that approach is now
- deprecated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>PQconnectionUsedPassword()</function> that returns
- true if the supplied password was actually used
- (Joe Conway, Tom)
- </para>
-
- <para>
- This is useful in some security contexts where it is important
- to know whether a user-supplied password is actually valid.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="ecpg"><application>ecpg</application></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Use V3 frontend/backend protocol (Michael)
- </para>
-
- <para>
- This adds support for server-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use native threads, instead of pthreads, on Windows (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve thread-safety of ecpglib (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the ecpg libraries export only necessary API symbols (Michael)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><application>Windows</application> Port</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the whole <productname>PostgreSQL</productname> distribution to be compiled
- with <productname>Microsoft Visual C++</productname> (Magnus and others)
- </para>
-
- <para>
- This allows Windows-based developers to use familiar development
- and debugging tools.
- Windows executables made with Visual C++ might also have better
- stability and performance than those made with other tool sets.
- The client-only Visual C++ build scripts have been removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Drastically reduce postmaster's memory usage when it has many child
- processes (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow regression tests to be started by an administrative
- user (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add native shared memory implementation (Magnus)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server Programming Interface (<acronym>SPI</acronym>)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add cursor-related functionality in SPI (Pavel Stehule)
- </para>
-
- <para>
- Allow access to the cursor-related planning options, and add
- <command>FETCH</command>/<command>MOVE</command> routines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow execution of cursor commands through
- <function>SPI_execute</function> (Tom)
- </para>
-
- <para>
- The macro <literal>SPI_ERROR_CURSOR</literal> still exists but will
- never be returned.
- </para>
- </listitem>
-
- <listitem>
- <para>
- SPI plan pointers are now declared as <literal>SPIPlanPtr</literal> instead of
- <literal>void *</literal> (Tom)
- </para>
-
- <para>
- This does not break application code, but switching is
- recommended to help catch simple programming mistakes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Build Options</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>configure</application> option <literal>--enable-profiling</literal>
- to enable code profiling (works only with <application>gcc</application>)
- (Korry Douglas and Nikhil Sontakke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>configure</application> option <literal>--with-system-tzdata</literal>
- to use the operating system's time zone database (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <acronym>PGXS</acronym> so extensions can be built against PostgreSQL
- installations whose <application>pg_config</application> program does not
- appear first in the <varname>PATH</varname> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <command>gmake draft</command> when building the
- <acronym>SGML</acronym> documentation (Bruce)
- </para>
-
- <para>
- Unless <literal>draft</literal> is used, the documentation build will
- now be repeated if necessary to ensure the index is up-to-date.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Rename macro <literal>DLLIMPORT</literal> to <literal>PGDLLIMPORT</literal> to
- avoid conflicting with third party includes (like Tcl) that
- define <literal>DLLIMPORT</literal> (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create <quote>operator families</quote> to improve planning of
- queries involving cross-data-type comparisons (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update GIN <function>extractQuery()</function> API to allow signalling
- that nothing can satisfy the query (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move <literal>NAMEDATALEN</literal> definition from
- <filename>postgres_ext.h</filename> to <filename>pg_config_manual.h</filename>
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide <function>strlcpy()</function> and
- <function>strlcat()</function> on all platforms, and replace
- error-prone uses of <function>strncpy()</function>,
- <function>strncat()</function>, etc (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create hooks to let an external plugin monitor (or even replace) the
- planner and create plans for hypothetical situations (Gurjeet
- Singh, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a function variable <literal>join_search_hook</literal> to let plugins
- override the join search order portion of the planner (Julius
- Stroffek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>tas()</function> support for Renesas' M32R processor
- (Kazuhiro Inaoka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>quote_identifier()</function> and
- <application>pg_dump</application> no longer quote keywords that are
- unreserved according to the grammar (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the on-disk representation of the <type>NUMERIC</type>
- data type so that the <structfield>sign_dscale</structfield> word comes
- before the weight (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <acronym>SYSV</acronym> semaphores rather than POSIX on Darwin
- &gt;= 6.0, i.e., macOS 10.2 and up (Chris Marcellino)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="acronyms">acronym</link> and <link
- linkend="creating-cluster-nfs">NFS</link> documentation
- sections (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- "Postgres" is now documented as an accepted alias for
- "PostgreSQL" (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add documentation about preventing database server spoofing when
- the server is down (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Contrib</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Move <filename>contrib</filename> <filename>README</filename> content into the
- main <productname>PostgreSQL</productname> documentation (Albert Cervera i
- Areny)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/pageinspect</filename> module for low-level
- page inspection (Simon, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/pg_standby</filename> module for controlling
- warm standby operation (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/uuid-ossp</filename> module for generating
- <type>UUID</type> values using the OSSP UUID library (Peter)
- </para>
-
- <para>
- Use <application>configure</application>
- <literal>--with-ossp-uuid</literal> to activate. This takes
- advantage of the new <type>UUID</type> builtin type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/dict_int</filename>,
- <filename>contrib/dict_xsyn</filename>, and
- <filename>contrib/test_parser</filename> modules to provide
- sample add-on text search dictionary templates and parsers
- (Sergey Karpov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>contrib/pgbench</application> to set the fillfactor (Pavan
- Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add timestamps to <application>contrib/pgbench</application> <literal>-l</literal>
- (Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add usage count statistics to
- <filename>contrib/pgbuffercache</filename> (Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add GIN support for <filename>contrib/hstore</filename> (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add GIN support for <filename>contrib/pg_trgm</filename> (Guillaume Smet, Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update OS/X startup scripts in
- <filename>contrib/start-scripts</filename> (Mark Cotner, David
- Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restrict <function>pgrowlocks()</function> and
- <function>dblink_get_pkey()</function> to users who have
- <literal>SELECT</literal> privilege on the target table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restrict <filename>contrib/pgstattuple</filename> functions to
- superusers (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>contrib/xml2</filename> is deprecated and planned for
- removal in 8.4 (Peter)
- </para>
-
- <para>
- The new XML support in core PostgreSQL supersedes this module.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml
deleted file mode 100644
index 934f7203872..00000000000
--- a/doc/src/sgml/release-8.4.sgml
+++ /dev/null
@@ -1,10080 +0,0 @@
-<!-- doc/src/sgml/release-8.4.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-8-4-22">
- <title>Release 8.4.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.21.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 8.4.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.22</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, this release corrects an index corruption problem in some GiST
- indexes. See the first changelog entry below to find out whether your
- installation has been affected and what steps you should take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.4.19,
- see <xref linkend="release-8-4-19"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-21">
- <title>Release 8.4.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.20.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.4.X release series in July 2014.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.21</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.19,
- see <xref linkend="release-8-4-19"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-20">
- <title>Release 8.4.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.19.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 8.4.X release series in July 2014.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.20</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.19,
- see <xref linkend="release-8-4-19"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-19">
- <title>Release 8.4.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.18.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.19</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, this release corrects a potential data corruption
- issue. See the first changelog entry below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.4.17,
- see <xref linkend="release-8-4-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. Users
- upgrading from release 8.4.8 or earlier are not affected, but all later
- versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-18">
- <title>Release 8.4.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.17.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.18</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.17,
- see <xref linkend="release-8-4-17"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent corruption of multi-byte characters when attempting to
- case-fold identifiers (Andrew Dunstan)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> case-folds non-ASCII characters only
- when using a single-byte server encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory overcommit bug when <varname>work_mem</varname> is using more
- than 24GB of memory (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly compute row estimates for boolean columns containing many NULL
- values (Andrew Gierth)
- </para>
-
- <para>
- Previously tests like <literal>col IS NOT TRUE</literal> and <literal>col IS
- NOT FALSE</literal> did not properly factor in NULL values when estimating
- plan costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent pushing down <literal>WHERE</literal> clauses into unsafe
- <literal>UNION/INTERSECT</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Subqueries of a <literal>UNION</literal> or <literal>INTERSECT</literal> that
- contain set-returning functions or volatile functions in their
- <literal>SELECT</literal> lists could be improperly optimized, leading to
- run-time errors or incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare case of <quote>failed to locate grouping columns</quote>
- planner failure (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view dumping code's handling of dropped columns in referenced
- tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during concurrent <command>CREATE INDEX
- CONCURRENTLY</command> operations (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>regexp_matches()</function> handling of zero-length matches
- (Jeevan Chalke)
- </para>
-
- <para>
- Previously, zero-length matches like '^' could return too many matches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash for overly-complex regular expressions (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression match failures for back references combined with
- non-greedy quantifiers (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgp_pub_decrypt()</function> so it works for secret keys with
- passwords (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible failure when performing transaction control commands (e.g
- <command>ROLLBACK</command>) in prepared queries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that floating-point data input accepts standard spellings
- of <quote>infinity</quote> on all platforms (Tom Lane)
- </para>
-
- <para>
- The C99 standard says that allowable spellings are <literal>inf</literal>,
- <literal>+inf</literal>, <literal>-inf</literal>, <literal>infinity</literal>,
- <literal>+infinity</literal>, and <literal>-infinity</literal>. Make sure we
- recognize these even if the platform's <function>strtod</function> function
- doesn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Expand ability to compare rows to records and arrays (Rafal Rzepecki,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013d
- for DST law changes in Israel, Morocco, Palestine, and Paraguay.
- Also, historical zone data corrections for Macquarie Island.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-17">
- <title>Release 8.4.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-04-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.16.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.17</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, this release corrects several errors in management of GiST
- indexes. After installing this update, it is advisable to
- <command>REINDEX</command> any GiST indexes that meet one or more of the
- conditions described below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Reset OpenSSL randomness state in each postmaster child process
- (Marko Kreen)
- </para>
-
- <para>
- This avoids a scenario wherein random numbers generated by
- <filename>contrib/pgcrypto</filename> functions might be relatively easy for
- another database user to guess. The risk is only significant when
- the postmaster is configured with <varname>ssl</varname> = <literal>on</literal>
- but most connections don't use SSL encryption. (CVE-2013-1900)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GiST indexes to not use <quote>fuzzy</quote> geometric comparisons when
- it's not appropriate to do so (Alexander Korotkov)
- </para>
-
- <para>
- The core geometric types perform comparisons using <quote>fuzzy</quote>
- equality, but <function>gist_box_same</function> must do exact comparisons,
- else GiST indexes using it might become inconsistent. After installing
- this update, users should <command>REINDEX</command> any GiST indexes on
- <type>box</type>, <type>polygon</type>, <type>circle</type>, or <type>point</type>
- columns, since all of these use <function>gist_box_same</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous range-union and penalty logic in GiST indexes that use
- <filename>contrib/btree_gist</filename> for variable-width data types, that is
- <type>text</type>, <type>bytea</type>, <type>bit</type>, and <type>numeric</type>
- columns (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in useless
- index bloat. Users are advised to <command>REINDEX</command> such indexes
- after installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in GiST page splitting code for multi-column indexes
- (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in indexes
- that are unnecessarily inefficient to search. Users are advised to
- <command>REINDEX</command> multi-column GiST indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite-loop risk in regular expression compilation (Tom Lane,
- Don Porter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential null-pointer dereference in regular expression compilation
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> to use ASCII-only case-folding rules where
- appropriate (Tom Lane)
- </para>
-
- <para>
- This fixes misbehavior of some template patterns that should be
- locale-independent, but mishandled <quote><literal>I</literal></quote> and
- <quote><literal>i</literal></quote> in Turkish locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove useless <quote>picksplit doesn't support secondary split</quote> log
- messages (Josh Hansen, Tom Lane)
- </para>
-
- <para>
- This message seems to have been added in expectation of code that was
- never written, and probably never will be, since GiST's default
- handling of secondary splits is actually pretty good. So stop nagging
- end users about it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to send a session's last few transaction
- commit/abort counts to the statistics collector (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Eliminate memory leaks in PL/Perl's <function>spi_prepare()</function> function
- (Alex Hunsaker, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to handle database names containing
- <quote><literal>=</literal></quote> correctly (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <application>pg_dump</application> when an incorrect connection
- string is given (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore invalid indexes in <application>pg_dump</application> (Michael Paquier)
- </para>
-
- <para>
- Dumping invalid indexes can cause problems at restore time, for example
- if the reason the index creation failed was because it tried to enforce
- a uniqueness condition not satisfied by the table's data. Also, if the
- index creation is in fact still in progress, it seems reasonable to
- consider it to be an uncommitted DDL change, which
- <application>pg_dump</application> wouldn't be expected to dump anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s <function>similarity()</function> function
- to return zero for trigram-less strings (Tom Lane)
- </para>
-
- <para>
- Previously it returned <literal>NaN</literal> due to internal division by zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013b
- for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
- Russian areas. Also, historical zone data corrections for numerous
- places.
- </para>
-
- <para>
- Also, update the time zone abbreviation files for recent changes in
- Russia and elsewhere: <literal>CHOT</literal>, <literal>GET</literal>,
- <literal>IRKT</literal>, <literal>KGT</literal>, <literal>KRAT</literal>, <literal>MAGT</literal>,
- <literal>MAWT</literal>, <literal>MSK</literal>, <literal>NOVT</literal>, <literal>OMST</literal>,
- <literal>TKT</literal>, <literal>VLAT</literal>, <literal>WST</literal>, <literal>YAKT</literal>,
- <literal>YEKT</literal> now follow their current meanings, and
- <literal>VOLT</literal> (Europe/Volgograd) and <literal>MIST</literal>
- (Antarctica/Macquarie) are added to the default abbreviations list.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-16">
- <title>Release 8.4.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-02-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.15.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.16</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent execution of <function>enum_recv</function> from SQL (Tom Lane)
- </para>
-
- <para>
- The function was misdeclared, allowing a simple SQL command to crash the
- server. In principle an attacker might be able to use it to examine the
- contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP)
- for reporting this issue. (CVE-2013-0255)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update minimum recovery point when truncating a relation file (Heikki
- Linnakangas)
- </para>
-
- <para>
- Once data has been discarded, it's no longer safe to stop recovery at
- an earlier point in the timeline.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL grammar to allow subscripting or field selection from a
- sub-SELECT result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against race conditions when scanning
- <structname>pg_tablespace</structname> (Stephen Frost, Tom Lane)
- </para>
-
- <para>
- <command>CREATE DATABASE</command> and <command>DROP DATABASE</command> could
- misbehave if there were concurrent updates of
- <structname>pg_tablespace</structname> entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>DROP OWNED</command> from trying to drop whole databases or
- tablespaces (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- For safety, ownership of these objects must be reassigned, not dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- implementation (Andres Freund)
- </para>
-
- <para>
- In installations that have existed for more than <link
- linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</varname></link>
- transactions, this mistake prevented autovacuum from using partial-table
- scans, so that a full-table scan would always happen instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misbehavior when a <symbol>RowExpr</symbol> or <symbol>XmlExpr</symbol>
- is parse-analyzed twice (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This mistake could be user-visible in contexts such as
- <literal>CREATE TABLE LIKE INCLUDING INDEXES</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve defenses against integer overflow in hashtable sizing
- calculations (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range dates in <function>to_date()</function> (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that non-ASCII prompt strings are translated to the correct
- code page on Windows (Alexander Law, Noah Misch)
- </para>
-
- <para>
- This bug affected <application>psql</application> and some other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application>'s <command>\?</command> command
- when not connected to a database (Meng Qingzhong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <application>libpq</application>'s
- <function>PQprintTuples</function> (Xi Wang)
- </para>
-
- <para>
- This ancient function is not used anywhere by
- <productname>PostgreSQL</productname> itself, but it might still be used by some
- client code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> use translated messages properly
- (Chen Huajun)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly install <application>ecpg_compat</application> and
- <application>pgtypes</application> libraries on MSVC (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange configure's tests for supplied functions so it is not
- fooled by bogus exports from libedit/libreadline (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure Windows build number increases over time (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgxs</application> build executables with the right
- <literal>.exe</literal> suffix when cross-compiling for Windows
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new timezone abbreviation <literal>FET</literal> (Tom Lane)
- </para>
-
- <para>
- This is now used in some eastern-European time zones.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-15">
- <title>Release 8.4.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-12-06</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.14.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.15</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs associated with <command>CREATE INDEX
- CONCURRENTLY</command> (Andres Freund, Tom Lane)
- </para>
-
- <para>
- Fix <command>CREATE INDEX CONCURRENTLY</command> to use
- in-place updates when changing the state of an index's
- <structname>pg_index</structname> row. This prevents race conditions that could
- cause concurrent sessions to miss updating the target index, thus
- resulting in corrupt concurrently-created indexes.
- </para>
-
- <para>
- Also, fix various other operations to ensure that they ignore
- invalid indexes resulting from a failed <command>CREATE INDEX
- CONCURRENTLY</command> command. The most important of these is
- <command>VACUUM</command>, because an auto-vacuum could easily be launched
- on the table before corrective action can be taken to fix or remove
- the invalid index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corruption of internal hash tables when out of memory
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of non-strict equivalence clauses above outer joins
- (Tom Lane)
- </para>
-
- <para>
- The planner could derive incorrect constraints from a clause equating
- a non-strict construct to something else, for example
- <literal>WHERE COALESCE(foo, 0) = 0</literal>
- when <literal>foo</literal> is coming from the nullable side of an outer join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's ability to prove exclusion constraints from
- equivalence classes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix partial-row matching in hashed subplans to handle cross-type cases
- correctly (Tom Lane)
- </para>
-
- <para>
- This affects multicolumn <literal>NOT IN</literal> subplans, such as
- <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</literal>
- when for instance <literal>b</literal> and <literal>y</literal> are <type>int4</type>
- and <type>int8</type> respectively. This mistake led to wrong answers
- or crashes depending on the specific datatypes involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Acquire buffer lock when re-fetching the old tuple for an
- <literal>AFTER ROW UPDATE/DELETE</literal> trigger (Andres Freund)
- </para>
-
- <para>
- In very unusual circumstances, this oversight could result in passing
- incorrect data to the precheck logic for a foreign-key enforcement
- trigger. That could result in a crash, or in an incorrect decision
- about whether to fire the trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to handle inherited check
- constraints properly (Pavan Deolasee)
- </para>
-
- <para>
- This worked correctly in pre-8.4 releases, and now works correctly
- in 8.4 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle grants on tablespaces
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore incorrect <structname>pg_attribute</structname> entries for system
- columns for views (Tom Lane)
- </para>
-
- <para>
- Views do not have any system columns. However, we forgot to
- remove such entries when converting a table to a view. That's fixed
- properly for 9.3 and later, but in previous branches we need to defend
- against existing mis-converted views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rule printing to dump <literal>INSERT INTO <replaceable>table</replaceable>
- DEFAULT VALUES</literal> correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against stack overflow when there are too many
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> clauses
- in a query (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent platform-dependent failures when dividing the minimum possible
- integer value by -1 (Xi Wang, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible access past end of string in date parsing
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Produce an understandable error message if the length of the path name
- for a Unix-domain socket exceeds the platform-specific limit
- (Tom Lane, Andrew Dunstan)
- </para>
-
- <para>
- Formerly, this would result in something quite unhelpful, such as
- <quote>Non-recoverable failure in name resolution</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when sending composite column values to the client
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> more robust about reading the
- <filename>postmaster.pid</filename> file (Heikki Linnakangas)
- </para>
-
- <para>
- Fix race conditions and possible file descriptor leakage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application> if incorrectly-encoded data
- is presented and the <varname>client_encoding</varname> setting is a
- client-only encoding, such as SJIS (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in the <filename>restore.sql</filename> script emitted by
- <application>pg_dump</application> in <literal>tar</literal> output format (Tom Lane)
- </para>
-
- <para>
- The script would fail outright on tables whose names include
- upper-case characters. Also, make the script capable of restoring
- data in <option>--inserts</option> mode as well as the regular COPY mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to accept POSIX-conformant
- <literal>tar</literal> files (Brian Weaver, Tom Lane)
- </para>
-
- <para>
- The original coding of <application>pg_dump</application>'s <literal>tar</literal>
- output mode produced files that are not fully conformant with the
- POSIX standard. This has been corrected for version 9.3. This
- patch updates previous branches so that they will accept both the
- incorrect and the corrected formats, in hopes of avoiding
- compatibility problems when 9.3 comes out.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_resetxlog</application> to locate <filename>postmaster.pid</filename>
- correctly when given a relative path to the data directory (Tom Lane)
- </para>
-
- <para>
- This mistake could lead to <application>pg_resetxlog</application> not noticing
- that there is an active postmaster using the data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s <function>lo_import()</function> and
- <function>lo_export()</function> functions to report file I/O errors properly
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of nested structure pointer
- variables (Muhammad Usama)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pageinspect</filename>'s btree page inspection
- functions take buffer locks while examining pages (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> support for building loadable modules on AIX
- (Tom Lane)
- </para>
-
- <para>
- Building modules outside the original source tree didn't work on AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012j
- for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
- Samoa, and portions of Brazil.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-14">
- <title>Release 8.4.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.13.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.14</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix planner's assignment of executor parameters, and fix executor's
- rescan logic for CTE plan nodes (Tom Lane)
- </para>
-
- <para>
- These errors could result in wrong answers from queries that scan the
- same <literal>WITH</literal> subquery multiple times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
- Robert Haas, Tom Lane)
- </para>
-
- <para>
- Multi-column GiST indexes might suffer unexpected bloat due to this
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cascading privilege revoke to stop if privileges are still held
- (Tom Lane)
- </para>
-
- <para>
- If we revoke a grant option from some role <replaceable>X</replaceable>, but
- <replaceable>X</replaceable> still holds that option via a grant from someone
- else, we should not recursively revoke the corresponding privilege
- from role(s) <replaceable>Y</replaceable> that <replaceable>X</replaceable> had granted it
- to.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>SIGFPE</literal> when PL/Perl is in use (Andres Freund)
- </para>
-
- <para>
- Perl resets the process's <literal>SIGFPE</literal> handler to
- <literal>SIG_IGN</literal>, which could result in crashes later on. Restore
- the normal Postgres signal handler after initializing PL/Perl.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Perl from crashing if a recursive PL/Perl function is
- redefined while being executed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around possible misoptimization in PL/Perl (Tom Lane)
- </para>
-
- <para>
- Some Linux distributions contain an incorrect version of
- <filename>pthread.h</filename> that results in incorrect compiled code in
- PL/Perl, leading to crashes if a PL/Perl function calls another one
- that throws an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012f
- for DST law changes in Fiji
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-13">
- <title>Release 8.4.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-08-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.12.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.13</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via XML entity references
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <function>xml_parse()</function> would attempt to fetch external files or
- URLs as needed to resolve DTD and entity references in an XML value,
- thus allowing unprivileged database users to attempt to fetch data
- with the privileges of the database server. While the external data
- wouldn't get returned directly to the user, portions of it could be
- exposed in error messages if the data didn't parse as valid XML; and
- in any case the mere ability to check existence of a file might be
- useful to an attacker. (CVE-2012-3489)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Peter Eisentraut)
- </para>
-
- <para>
- <application>libxslt</application> offers the ability to read and write both
- files and URLs through stylesheet commands, thus allowing
- unprivileged database users to both read and write data with the
- privileges of the database server. Disable that through proper use
- of <application>libxslt</application>'s security options. (CVE-2012-3488)
- </para>
-
- <para>
- Also, remove <function>xslt_process()</function>'s ability to fetch documents
- and stylesheets from external files/URLs. While this was a
- documented <quote>feature</quote>, it was long regarded as a bad idea.
- The fix for CVE-2012-3489 broke that capability, and rather than
- expend effort on trying to fix it, we're just going to summarily
- remove it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent too-early recycling of btree index pages (Noah Misch)
- </para>
-
- <para>
- When we allowed read-only transactions to skip assigning XIDs, we
- introduced the possibility that a deleted btree page could be
- recycled while a read-only transaction was still in flight to it.
- This would result in incorrect index search results. The probability
- of such an error occurring in the field seems very low because of the
- timing requirements, but nonetheless it should be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
- </para>
-
- <para>
- If <command>ALTER SEQUENCE</command> was executed on a freshly created or
- reset sequence, and then precisely one <function>nextval()</function> call
- was made on it, and then the server crashed, WAL replay would restore
- the sequence to a state in which it appeared that no
- <function>nextval()</function> had been done, thus allowing the first
- sequence value to be returned again by the next
- <function>nextval()</function> call. In particular this could manifest for
- <type>serial</type> columns, since creation of a serial column's sequence
- includes an <command>ALTER SEQUENCE OWNED BY</command> step.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the <filename>backup_label</filename> file is fsync'd after
- <function>pg_start_backup()</function> (Dave Kerr)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Back-patch 9.1 improvement to compress the fsync request queue
- (Robert Haas)
- </para>
-
- <para>
- This improves performance during checkpoints. The 9.1 change
- has now seen enough field testing to seem safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only allow autovacuum to be auto-canceled by a directly blocked
- process (Tom Lane)
- </para>
-
- <para>
- The original coding could allow inconsistent behavior in some cases;
- in particular, an autovacuum could get canceled after less than
- <literal>deadlock_timeout</literal> grace period.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve logging of autovacuum cancels (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix log collector so that <literal>log_truncate_on_rotation</literal> works
- during the very first log rotation after server start (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>WITH</literal> attached to a nested set operation
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a whole-row reference to a subquery doesn't include any
- extra <literal>GROUP BY</literal> or <literal>ORDER BY</literal> columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow copying whole-row references in <literal>CHECK</literal>
- constraints and index definitions during <command>CREATE TABLE</command>
- (Tom Lane)
- </para>
-
- <para>
- This situation can arise in <command>CREATE TABLE</command> with
- <literal>LIKE</literal> or <literal>INHERITS</literal>. The copied whole-row
- variable was incorrectly labeled with the row type of the original
- table not the new one. Rejecting the case seems reasonable for
- <literal>LIKE</literal>, since the row types might well diverge later. For
- <literal>INHERITS</literal> we should ideally allow it, with an implicit
- coercion to the parent table's row type; but that will require more
- work than seems safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <literal>ARRAY(SELECT ...)</literal> subqueries (Heikki
- Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extraction of common prefixes from regular expressions (Tom Lane)
- </para>
-
- <para>
- The code could get confused by quantified parenthesized
- subexpressions, such as <literal>^(foo)?bar</literal>. This would lead to
- incorrect index optimization of searches for such patterns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs with parsing signed
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable> and
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable><literal>:</literal><replaceable>ss</replaceable>
- fields in <type>interval</type> constants (Amit Kapila, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report errors properly in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012e
- for DST law changes in Morocco and Tokelau
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-12">
- <title>Release 8.4.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-06-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.11.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.12</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect password transformation in
- <filename>contrib/pgcrypto</filename>'s DES <function>crypt()</function> function
- (Solar Designer)
- </para>
-
- <para>
- If a password string contained the byte value <literal>0x80</literal>, the
- remainder of the password was ignored, causing the password to be much
- weaker than it appeared. With this fix, the rest of the string is
- properly included in the DES hash. Any stored password values that are
- affected by this bug will thus no longer match, so the stored values may
- need to be updated. (CVE-2012-2143)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore <literal>SECURITY DEFINER</literal> and <literal>SET</literal> attributes for
- a procedural language's call handler (Tom Lane)
- </para>
-
- <para>
- Applying such attributes to a call handler could crash the server.
- (CVE-2012-2655)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow numeric timezone offsets in <type>timestamp</type> input to be up to
- 16 hours away from UTC (Tom Lane)
- </para>
-
- <para>
- Some historical time zones have offsets larger than 15 hours, the
- previous limit. This could result in dumped data values being rejected
- during reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timestamp conversion to cope when the given time is exactly the
- last DST transition time for the current timezone (Tom Lane)
- </para>
-
- <para>
- This oversight has been there a long time, but was not noticed
- previously because most DST-using zones are presumed to have an
- indefinite sequence of future DST transitions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>text</type> to <type>name</type> and <type>char</type> to <type>name</type>
- casts to perform string truncation correctly in multibyte encodings
- (Karl Schnaitter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory copying bug in <function>to_tsquery()</function> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's handling of outer PlaceHolderVars within subqueries (Tom
- Lane)
- </para>
-
- <para>
- This bug concerns sub-SELECTs that reference variables coming from the
- nullable side of an outer join of the surrounding query.
- In 9.1, queries affected by this bug would fail with <quote>ERROR:
- Upper-level PlaceHolderVar found where not expected</quote>. But in 9.0 and
- 8.4, you'd silently get possibly-wrong answers, since the value
- transmitted into the subquery wouldn't go to null when it should.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow session startup when <structname>pg_attribute</structname> is very large
- (Tom Lane)
- </para>
-
- <para>
- If <structname>pg_attribute</structname> exceeds one-fourth of
- <varname>shared_buffers</varname>, cache rebuilding code that is sometimes
- needed during session start would trigger the synchronized-scan logic,
- causing it to take many times longer than normal. The problem was
- particularly acute if many new sessions were starting at once.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure sequential scans check for query cancel reasonably often (Merlin
- Moncure)
- </para>
-
- <para>
- A scan encountering many consecutive pages that contain no live tuples
- would not respond to interrupts meanwhile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the Windows implementation of <function>PGSemaphoreLock()</function>
- clears <varname>ImmediateInterruptOK</varname> before returning (Tom Lane)
- </para>
-
- <para>
- This oversight meant that a query-cancel interrupt received later
- in the same query could be accepted at an unsafe time, with
- unpredictable but not good consequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show whole-row variables safely when printing views or rules
- (Abbas Butt, Tom Lane)
- </para>
-
- <para>
- Corner cases involving ambiguous names (that is, the name could be
- either a table or column name of the query) were printed in an
- ambiguous way, risking that the view or rule would be interpreted
- differently after dump and reload. Avoid the ambiguous case by
- attaching a no-op cast.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>COPY FROM</command> to properly handle null marker strings that
- correspond to invalid encoding (Tom Lane)
- </para>
-
- <para>
- A null marker string such as <literal>E'\\0'</literal> should work, and did
- work in the past, but the case got broken in 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure autovacuum worker processes perform stack depth checking
- properly (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, infinite recursion in a function invoked by
- auto-<command>ANALYZE</command> could crash worker processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to not lose log coherency under high load (Andrew
- Dunstan)
- </para>
-
- <para>
- The collector previously could fail to reassemble large messages if it
- got too busy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to ensure it will restart file rotation
- after receiving <systemitem>SIGHUP</systemitem> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL replay logic for GIN indexes to not fail if the index was
- subsequently dropped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in PL/pgSQL's <command>RETURN NEXT</command> command (Joe
- Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's <command>GET DIAGNOSTICS</command> command when the target
- is the function's first variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential access off the end of memory in <application>psql</application>'s
- expanded display (<command>\x</command>) mode (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several performance problems in <application>pg_dump</application> when
- the database contains many objects (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> could get very slow if the database contained
- many schemas, or if many objects are in dependency loops, or if there
- are many owned sequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s <function>dblink_exec()</function> to not leak
- temporary database connections upon error (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to report the correct connection name in
- error messages (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012c
- for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
- Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
- also historical corrections for Canada.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-11">
- <title>Release 8.4.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-02-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.10.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.11</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.10,
- see <xref linkend="release-8-4-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Require execute permission on the trigger function for
- <command>CREATE TRIGGER</command> (Robert Haas)
- </para>
-
- <para>
- This missing check could allow another user to execute a trigger
- function with forged input data, by installing it on a table he owns.
- This is only of significance for trigger functions marked
- <literal>SECURITY DEFINER</literal>, since otherwise trigger functions run
- as the table owner anyway. (CVE-2012-0866)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove arbitrary limitation on length of common name in SSL
- certificates (Heikki Linnakangas)
- </para>
-
- <para>
- Both <application>libpq</application> and the server truncated the common name
- extracted from an SSL certificate at 32 bytes. Normally this would
- cause nothing worse than an unexpected verification failure, but there
- are some rather-implausible scenarios in which it might allow one
- certificate holder to impersonate another. The victim would have to
- have a common name exactly 32 bytes long, and the attacker would have
- to persuade a trusted CA to issue a certificate in which the common
- name has that string as a prefix. Impersonating a server would also
- require some additional exploit to redirect client connections.
- (CVE-2012-0867)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert newlines to spaces in names written in <application>pg_dump</application>
- comments (Robert Haas)
- </para>
-
- <para>
- <application>pg_dump</application> was incautious about sanitizing object names
- that are emitted within SQL comments in its output script. A name
- containing a newline would at least render the script syntactically
- incorrect. Maliciously crafted object names could present a SQL
- injection risk when the script is reloaded. (CVE-2012-0868)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree index corruption from insertions concurrent with vacuuming
- (Tom Lane)
- </para>
-
- <para>
- An index page split caused by an insertion could sometimes cause a
- concurrently-running <command>VACUUM</command> to miss removing index entries
- that it should remove. After the corresponding table rows are removed,
- the dangling index entries would cause errors (such as <quote>could not
- read block N in file ...</quote>) or worse, silently wrong query results
- after unrelated rows are re-inserted at the now-free table locations.
- This bug has been present since release 8.2, but occurs so infrequently
- that it was not diagnosed until now. If you have reason to suspect
- that it has happened in your database, reindexing the affected index
- will fix things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update per-column permissions, not only per-table permissions, when
- changing table owner (Tom Lane)
- </para>
-
- <para>
- Failure to do this meant that any previously granted column permissions
- were still shown as having been granted by the old owner. This meant
- that neither the new owner nor a superuser could revoke the
- now-untraceable-to-table-owner permissions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-existent values for some settings in <command>ALTER
- USER/DATABASE SET</command> (Heikki Linnakangas)
- </para>
-
- <para>
- Allow <varname>default_text_search_config</varname>,
- <varname>default_tablespace</varname>, and <varname>temp_tablespaces</varname> to be
- set to names that are not known. This is because they might be known
- in another database where the setting is intended to be used, or for the
- tablespace cases because the tablespace might not be created yet. The
- same issue was previously recognized for <varname>search_path</varname>, and
- these settings now act like that one.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing when we have problems deleting table files post-commit
- (Tom Lane)
- </para>
-
- <para>
- Dropping a table should lead to deleting the underlying disk files only
- after the transaction commits. In event of failure then (for instance,
- because of wrong file permissions) the code is supposed to just emit a
- warning message and go on, since it's too late to abort the
- transaction. This logic got broken as of release 8.4, causing such
- situations to result in a PANIC and an unrestartable database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track the OID counter correctly during WAL replay, even when it wraps
- around (Tom Lane)
- </para>
-
- <para>
- Previously the OID counter would remain stuck at a high value until the
- system exited replay mode. The practical consequences of that are
- usually nil, but there are scenarios wherein a standby server that's
- been promoted to master might take a long time to advance the OID
- counter to a reasonable value once values are needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression back-references with <literal>*</literal> attached
- (Tom Lane)
- </para>
-
- <para>
- Rather than enforcing an exact string match, the code would effectively
- accept any string that satisfies the pattern sub-expression referenced
- by the back-reference symbol.
- </para>
-
- <para>
- A similar problem still afflicts back-references that are embedded in a
- larger quantified expression, rather than being the immediate subject
- of the quantifier. This will be addressed in a future
- <productname>PostgreSQL</productname> release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recently-introduced memory leak in processing of
- <type>inet</type>/<type>cidr</type> values (Heikki Linnakangas)
- </para>
-
- <para>
- A patch in the December 2011 releases of <productname>PostgreSQL</productname>
- caused memory leakage in these operations, which could be significant
- in scenarios such as building a btree index on such a column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling pointer after <command>CREATE TABLE AS</command>/<command>SELECT
- INTO</command> in a SQL-language function (Tom Lane)
- </para>
-
- <para>
- In most cases this only led to an assertion failure in assert-enabled
- builds, but worse consequences seem possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid double close of file handle in syslogger on Windows (MauMau)
- </para>
-
- <para>
- Ordinarily this error was invisible, but it would cause an exception
- when running on a debug version of Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix I/O-conversion-related memory leaks in plpgsql
- (Andres Freund, Jan Urbanski, Tom Lane)
- </para>
-
- <para>
- Certain operations would leak memory until the end of the current
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s handling of inherited table columns
- (Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> mishandled situations where a child column has
- a different default expression than its parent column. If the default
- is textually identical to the parent's default, but not actually the
- same (for instance, because of schema search path differences) it would
- not be recognized as different, so that after dump and restore the
- child would be allowed to inherit the parent's default. Child columns
- that are <literal>NOT NULL</literal> where their parent is not could also be
- restored subtly incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- INSERT-style table data (Tom Lane)
- </para>
-
- <para>
- Direct-to-database restores from archive files made with
- <option>--inserts</option> or <option>--column-inserts</option> options fail when
- using <application>pg_restore</application> from a release dated September or
- December 2011, as a result of an oversight in a fix for another
- problem. The archive file itself is not at fault, and text-mode
- output is okay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>AT</literal> option in <application>ecpg</application>
- <literal>DEALLOCATE</literal> statements (Michael Meskes)
- </para>
-
- <para>
- The infrastructure to support this has been there for awhile, but
- through an oversight there was still an error check rejecting the case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <filename>contrib/intarray</filename>'s <literal>int[] &amp;
- int[]</literal> operator (Guillaume Lelarge)
- </para>
-
- <para>
- If the smallest integer the two input arrays have in common is 1,
- and there are smaller values in either array, then 1 would be
- incorrectly omitted from the result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error detection in <filename>contrib/pgcrypto</filename>'s
- <function>encrypt_iv()</function> and <function>decrypt_iv()</function>
- (Marko Kreen)
- </para>
-
- <para>
- These functions failed to report certain types of invalid-input errors,
- and would instead return random garbage values for incorrect input.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <filename>contrib/test_parser</filename>
- (Paul Guyot)
- </para>
-
- <para>
- The code would try to read one more byte than it should, which would
- crash in corner cases.
- Since <filename>contrib/test_parser</filename> is only example code, this is
- not a security issue in itself, but bad example code is still bad.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <function>__sync_lock_test_and_set()</function> for spinlocks on ARM, if
- available (Martin Pitt)
- </para>
-
- <para>
- This function replaces our previous use of the <literal>SWPB</literal>
- instruction, which is deprecated and not available on ARMv6 and later.
- Reports suggest that the old code doesn't fail in an obvious way on
- recent ARM boards, but simply doesn't interlock concurrent accesses,
- leading to bizarre failures in multiprocess operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fexcess-precision=standard</option> option when building with
- gcc versions that accept it (Andrew Dunstan)
- </para>
-
- <para>
- This prevents assorted scenarios wherein recent versions of gcc will
- produce creative results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow use of threaded Python on FreeBSD (Chris Rees)
- </para>
-
- <para>
- Our configure script previously believed that this combination wouldn't
- work; but FreeBSD fixed the problem, so remove that error check.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-10">
- <title>Release 8.4.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.9.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.10</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, a longstanding error was discovered in the definition of the
- <literal>information_schema.referential_constraints</literal> view. If you
- rely on correct results from that view, you should replace its
- definition as explained in the first changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.4.8,
- see <xref linkend="release-8-4-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in <literal>information_schema.referential_constraints</literal> view
- (Tom Lane)
- </para>
-
- <para>
- This view was being insufficiently careful about matching the
- foreign-key constraint to the depended-on primary or unique key
- constraint. That could result in failure to show a foreign key
- constraint at all, or showing it multiple times, or claiming that it
- depends on a different constraint than the one it really does.
- </para>
-
- <para>
- Since the view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can (as a superuser) drop the
- <literal>information_schema</literal> schema then re-create it by sourcing
- <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database
- to be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect replay of WAL records for GIN index updates
- (Tom Lane)
- </para>
-
- <para>
- This could result in transiently failing to find index entries after
- a crash, or on a hot-standby server. The problem would be repaired
- by the next <command>VACUUM</command> of the index, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
- SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
- (Tom Lane)
- </para>
-
- <para>
- If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
- attempts to copy its data verbatim to another table could produce
- corrupt results in certain corner cases.
- The problem can only manifest in this precise form in 8.4 and later,
- but we patched earlier versions as well in case there are other code
- paths that could trigger the same bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition during toast table access from stale syscache entries
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was transient errors like <quote>missing chunk
- number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited
- toast table would always belong to a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track dependencies of functions on items used in parameter default
- expressions (Tom Lane)
- </para>
-
- <para>
- Previously, a referenced object could be dropped without having dropped
- or modified the function, leading to misbehavior when the function was
- used. Note that merely installing this update will not fix the missing
- dependency entries; to do that, you'd need to <command>CREATE OR
- REPLACE</command> each such function afterwards. If you have functions whose
- defaults depend on non-built-in objects, doing so is recommended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow inlining of set-returning SQL functions with multiple OUT
- parameters (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>DatumGetInetP()</function> unpack inet datums that have a 1-byte
- header, and add a new macro, <function>DatumGetInetPP()</function>, that does
- not (Heikki Linnakangas)
- </para>
-
- <para>
- This change affects no core code, but might prevent crashes in add-on
- code that expects <function>DatumGetInetP()</function> to produce an unpacked
- datum as per usual convention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locale support in <type>money</type> type's input and output
- (Tom Lane)
- </para>
-
- <para>
- Aside from not supporting all standard
- <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
- formatting options, the input and output functions were inconsistent,
- meaning there were locales in which dumped <type>money</type> values could
- not be re-read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't let <link
- linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
- affect <literal>CASE foo WHEN NULL ...</literal> constructs
- (Heikki Linnakangas)
- </para>
-
- <para>
- <varname>transform_null_equals</varname> is only supposed to affect
- <literal>foo = NULL</literal> expressions written directly by the user, not
- equality checks generated internally by this form of <literal>CASE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change foreign-key trigger creation order to better support
- self-referential foreign keys (Tom Lane)
- </para>
-
- <para>
- For a cascading foreign key that references its own table, a row update
- will fire both the <literal>ON UPDATE</literal> trigger and the
- <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
- trigger must execute first, else the <literal>CHECK</literal> will check a
- non-final state of the row and possibly throw an inappropriate error.
- However, the firing order of these triggers is determined by their
- names, which generally sort in creation order since the triggers have
- auto-generated names following the convention
- <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require
- modifying that convention, which we will do in 9.2, but it seems risky
- to change it in existing releases. So this patch just changes the
- creation order of the triggers. Users encountering this type of error
- should drop and re-create the foreign key constraint to get its
- triggers into the right order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid floating-point underflow while tracking buffer allocation rate
- (Greg Matthews)
- </para>
-
- <para>
- While harmless in itself, on certain platforms this would result in
- annoying kernel log messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve configuration file name and line number values when starting
- child processes under Windows (Tom Lane)
- </para>
-
- <para>
- Formerly, these would not be displayed correctly in the
- <structname>pg_settings</structname> view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve blank lines within commands in <application>psql</application>'s command
- history (Robert Haas)
- </para>
-
- <para>
- The former behavior could cause problems if an empty line was removed
- from within a string literal, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts between
- auto-generated types, such as table rowtypes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the preferred version of <application>xsubpp</application> to build PL/Perl,
- not necessarily the operating system's main copy
- (David Wheeler and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect coding in <filename>contrib/dict_int</filename> and
- <filename>contrib/dict_xsyn</filename> (Tom Lane)
- </para>
-
- <para>
- Some functions incorrectly assumed that memory returned by
- <function>palloc()</function> is guaranteed zeroed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor query cancel interrupts promptly in <function>pgstatindex()</function>
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure VPATH builds properly install all server header files
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shorten file names reported in verbose error messages (Peter Eisentraut)
- </para>
-
- <para>
- Regular builds have always reported just the name of the C file
- containing the error message call, but VPATH builds formerly
- reported an absolute path name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interpretation of Windows timezone names for Central America
- (Tom Lane)
- </para>
-
- <para>
- Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not
- <literal>CST6CDT</literal>, because DST is generally not observed anywhere in
- Central America.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011n
- for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
- also historical corrections for Alaska and British East Africa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-9">
- <title>Release 8.4.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-26</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.8.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.9</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 8.4.8,
- see <xref linkend="release-8-4-8"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
- </para>
-
- <para>
- These bugs could result in index corruption after reindexing a system
- catalog. They are not believed to affect user indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in GiST index page split processing (Heikki
- Linnakangas)
- </para>
-
- <para>
- The probability of occurrence was low, but these could lead to index
- corruption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible buffer overrun in <function>tsvector_concat()</function>
- (Tom Lane)
- </para>
-
- <para>
- The function could underestimate the amount of memory needed for its
- result, leading to server crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <function>xml_recv</function> when processing a
- <quote>standalone</quote> parameter (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_options_to_table</function> return NULL for an option with no
- value (Tom Lane)
- </para>
-
- <para>
- Previously such cases would result in a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly accessing off the end of memory in <command>ANALYZE</command>
- and in SJIS-2004 encoding conversion (Noah Misch)
- </para>
-
- <para>
- This fixes some very-low-probability server crash scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intermittent hang in interactions of startup process with
- bgwriter process (Simon Riggs)
- </para>
-
- <para>
- This affected recovery in non-hot-standby cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in relcache init file invalidation (Tom Lane)
- </para>
-
- <para>
- There was a window wherein a new backend process could read a stale init
- file but miss the inval messages that would tell it the data is stale.
- The result would be bizarre failures in catalog accesses, typically
- <quote>could not read block 0 in file ...</quote> later during startup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak at end of a GiST index scan (Tom Lane)
- </para>
-
- <para>
- Commands that perform many separate GiST index scans, such as
- verification of a new GiST-based exclusion constraint on a table
- already containing many rows, could transiently require large amounts of
- memory due to this leak.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect memory accounting (leading to possible memory bloat) in
- tuplestores supporting holdable cursors and plpgsql's <literal>RETURN
- NEXT</literal> command (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when constructing a large, lossy bitmap
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix join selectivity estimation for unique columns (Tom Lane)
- </para>
-
- <para>
- This fixes an erroneous planner heuristic that could lead to poor
- estimates of the result size of a join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix nested PlaceHolderVar expressions that appear only in sub-select
- target lists (Tom Lane)
- </para>
-
- <para>
- This mistake could result in outputs of an outer join incorrectly
- appearing as NULL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow nested <literal>EXISTS</literal> queries to be optimized properly (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array- and path-creating functions to ensure padding bytes are
- zeroes (Tom Lane)
- </para>
-
- <para>
- This avoids some situations where the planner will think that
- semantically-equal constants are not equal, resulting in poor
- optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to handle gating Result nodes within
- inner-indexscan subplans (Tom Lane)
- </para>
-
- <para>
- The usual symptom of this oversight was <quote>bogus varno</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
- </para>
-
- <para>
- This could lead to loss of committed transactions after a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dump bug for <literal>VALUES</literal> in a view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <literal>SELECT FOR UPDATE/SHARE</literal> on sequences (Tom Lane)
- </para>
-
- <para>
- This operation doesn't work as expected and can lead to failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> so that it always updates
- <literal>pg_class</literal>.<literal>reltuples</literal>/<literal>relpages</literal> (Tom
- Lane)
- </para>
-
- <para>
- This fixes some scenarios where autovacuum could make increasingly poor
- decisions about when to vacuum tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against integer overflow when computing size of a hash table (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where <command>CLUSTER</command> might attempt to access
- already-removed TOAST data (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability bugs in use of credentials control messages for
- <quote>peer</quote> authentication (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
- Magnus Hagander)
- </para>
-
- <para>
- The typical symptom of this problem was <quote>The function requested is
- not supported</quote> errors during SSPI login.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw an error if <filename>pg_hba.conf</filename> contains <literal>hostssl</literal>
- but SSL is disabled (Tom Lane)
- </para>
-
- <para>
- This was concluded to be more user-friendly than the previous behavior
- of silently ignoring such lines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix typo in <function>pg_srand48</function> seed initialization (Andres Freund)
- </para>
-
- <para>
- This led to failure to use all bits of the provided seed. This function
- is not used on most platforms (only those without <function>srandom</function>),
- and the potential security exposure from a less-random-than-expected
- seed seems minimal in any case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow when the sum of <literal>LIMIT</literal> and
- <literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add overflow checks to <type>int4</type> and <type>int8</type> versions of
- <function>generate_series()</function> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp)
- </para>
-
- <para>
- In a format with <literal>FM</literal> and no digit positions
- after the decimal point, zeroes to the left of the decimal point could
- be removed incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_size_pretty()</function> to avoid overflow for inputs close to
- 2^63 (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Weaken plpgsql's check for typmod matching in record values (Tom Lane)
- </para>
-
- <para>
- An overly enthusiastic check could lead to discarding length modifiers
- that should have been kept.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle quotes in locale names during <application>initdb</application>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The case can arise with some Windows locales, such as <quote>People's
- Republic of China</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to preserve toast tables' relfrozenxids
- during an upgrade from 8.3 (Bruce Momjian)
- </para>
-
- <para>
- Failure to do this could lead to <filename>pg_clog</filename> files being
- removed too soon after the upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application>, support silent mode for service registrations
- on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s counting of script file line numbers during
- <literal>COPY</literal> from a different file (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- <varname>standard_conforming_strings</varname> (Tom Lane)
- </para>
-
- <para>
- <application>pg_restore</application> could emit incorrect commands when restoring
- directly to a database server from an archive file that had been made
- with <varname>standard_conforming_strings</varname> set to <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more user-friendly about unsupported cases for parallel
- <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- This change ensures that such cases are detected and reported before
- any restore actions have been taken.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix write-past-buffer-end and memory leak in <application>libpq</application>'s
- LDAP service lookup code (Albe Laurenz)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, avoid failures when using nonblocking I/O
- and an SSL connection (Martin Pihlak, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve libpq's handling of failures during connection startup
- (Tom Lane)
- </para>
-
- <para>
- In particular, the response to a server report of <function>fork()</function>
- failure during SSL connection startup is now saner.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s error reporting for SSL failures (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>PQsetvalue()</function> to avoid possible crash when adding a new
- tuple to a <structname>PGresult</structname> originally obtained from a server
- query (Andrew Chernow)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> write <type>double</type> values with 15 digits
- precision (Akira Kurosawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpglib</application>, be sure <literal>LC_NUMERIC</literal> setting is
- restored after an error (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
- (Tom Lane)
- </para>
-
- <para>
- <filename>contrib/pg_crypto</filename>'s blowfish encryption code could give
- wrong results on platforms where char is signed (which is most),
- leading to encrypted passwords being weaker than they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/seg</filename> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgstatindex()</function> to give consistent results for empty
- indexes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow building with perl 5.14 (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update configure script's method for probing existence of system
- functions (Tom Lane)
- </para>
-
- <para>
- The version of autoconf we used in 8.3 and 8.2 could be fooled by
- compilers that perform link-time optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted issues with build and install file paths containing spaces
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011i
- for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-8">
- <title>Release 8.4.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-04-18</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.7.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.8</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- <para>
- However, if your installation was upgraded from a previous major
- release by running <application>pg_upgrade</application>, you should take
- action to prevent possible data loss due to a now-fixed bug in
- <application>pg_upgrade</application>. The recommended solution is to run
- <command>VACUUM FREEZE</command> on all TOAST tables.
- More information is available at <ulink
- url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix">
- http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s handling of TOAST tables
- (Bruce Momjian)
- </para>
-
- <para>
- The <structname>pg_class</structname>.<structfield>relfrozenxid</structfield> value for
- TOAST tables was not correctly copied into the new installation
- during <application>pg_upgrade</application>. This could later result in
- <literal>pg_clog</literal> files being discarded while they were still
- needed to validate tuples in the TOAST tables, leading to
- <quote>could not access status of transaction</quote> failures.
- </para>
-
- <para>
- This error poses a significant risk of data loss for installations
- that have been upgraded with <application>pg_upgrade</application>. This patch
- corrects the problem for future uses of <application>pg_upgrade</application>,
- but does not in itself cure the issue in installations that have been
- processed with a buggy version of <application>pg_upgrade</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</quote>
- warning (Heikki Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> would sometimes issue this warning in cases that
- are actually valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow including a composite type in itself (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein the server could recurse infinitely
- while processing the composite type. While there are some possible
- uses for such a structure, they don't seem compelling enough to
- justify the effort required to make sure it always works safely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid potential deadlock during catalog cache initialization
- (Nikhil Sontakke)
- </para>
-
- <para>
- In some cases the cache loading code would acquire share lock on a
- system index before locking the index's catalog. This could deadlock
- against processes trying to acquire exclusive locks in the other,
- more standard order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</literal> trigger
- handling when there was a concurrent update to the target tuple
- (Tom Lane)
- </para>
-
- <para>
- This bug has been observed to result in intermittent <quote>cannot
- extract system attribute from virtual tuple</quote> failures while trying to
- do <literal>UPDATE RETURNING ctid</literal>. There is a very small probability
- of more serious errors, such as generating incorrect index entries for
- the updated tuple.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>DROP TABLE</command> when there are pending deferred trigger
- events for the table (Tom Lane)
- </para>
-
- <para>
- Formerly the <command>DROP</command> would go through, leading to
- <quote>could not open relation with OID nnn</quote> errors when the
- triggers were eventually fired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash triggered by constant-false WHERE conditions during
- GEQO optimization (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's handling of semi-join and anti-join cases
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selectivity estimation for text search to account for NULLs
- (Jesper Krogh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve PL/pgSQL's ability to handle row types with dropped columns
- (Pavel Stehule)
- </para>
-
- <para>
- This is a back-patch of fixes previously made in 9.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python memory leak involving array slices (Daniel Popowich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to cope with long lines (over 1KB) in
- TOC files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put in more safeguards against crashing due to division-by-zero
- with overly enthusiastic compiler optimization (Aurelien Jarno)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
- </para>
-
- <para>
- There was a hard-wired assumption that this system function was not
- available on MIPS hardware on these systems. Use a compile-time test
- instead, since more recent versions have it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compilation failures on HP-UX (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix version-incompatibility problem with <application>libintl</application> on
- Windows (Hiroshi Inoue)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix usage of <application>xcopy</application> in Windows build scripts to
- work correctly under Windows 7 (Andrew Dunstan)
- </para>
-
- <para>
- This affects the build scripts only, not installation or usage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix path separator used by <application>pg_regress</application> on Cygwin
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011f
- for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
- and Turkey; also historical corrections for South Australia, Alaska,
- and Hawaii.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-7">
- <title>Release 8.4.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.6.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.7</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures when <command>EXPLAIN</command> tries to display a simple-form
- <literal>CASE</literal> expression (Tom Lane)
- </para>
-
- <para>
- If the <literal>CASE</literal>'s test expression was a constant, the planner
- could simplify the <literal>CASE</literal> into a form that confused the
- expression-display code, resulting in <quote>unexpected CASE WHEN
- clause</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assignment to an array slice that is before the existing range
- of subscripts (Tom Lane)
- </para>
-
- <para>
- If there was a gap between the newly added subscripts and the first
- pre-existing subscript, the code miscalculated how many entries needed
- to be copied from the old array's null bitmap, potentially leading to
- data corruption or crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unexpected conversion overflow in planner for very distant date
- values (Tom Lane)
- </para>
-
- <para>
- The <type>date</type> type supports a wider range of dates than can be
- represented by the <type>timestamp</type> types, but the planner assumed it
- could always convert a date to timestamp with impunity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s text output for large objects (BLOBs)
- when <varname>standard_conforming_strings</varname> is on (Tom Lane)
- </para>
-
- <para>
- Although restoring directly to a database worked correctly, string
- escaping was incorrect if <application>pg_restore</application> was asked for
- SQL text output and <varname>standard_conforming_strings</varname> had been
- enabled in the source database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous parsing of <type>tsquery</type> values containing
- <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
- </para>
-
- <para>
- Queries containing this combination of operators were not executed
- correctly. The same error existed in <filename>contrib/intarray</filename>'s
- <type>query_int</type> type and <filename>contrib/ltree</filename>'s
- <type>ltxtquery</type> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in <filename>contrib/intarray</filename>'s input function
- for the <type>query_int</type> type (Apple)
- </para>
-
- <para>
- This bug is a security risk since the function's return address could
- be overwritten. Thanks to Apple Inc's security team for reporting this
- issue and supplying the fix. (CVE-2010-4015)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/seg</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>seg</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update. (This is identical to the bug that was fixed in
- <filename>contrib/cube</filename> in the previous update.)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-6">
- <title>Release 8.4.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-12-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.5.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.6</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force the default
- <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
- to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
- </para>
-
- <para>
- The default on Linux has actually been <literal>fdatasync</literal> for many
- years, but recent kernel changes caused <productname>PostgreSQL</productname> to
- choose <literal>open_datasync</literal> instead. This choice did not result
- in any performance improvement, and caused outright failures on
- certain filesystems, notably <literal>ext4</literal> with the
- <literal>data=journal</literal> mount option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in <quote>bad buffer id: 0</quote> failures or
- corruption of index contents during replication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recovery from base backup when the starting checkpoint WAL record
- is not in the same WAL segment as its redo point (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix persistent slowdown of autovacuum workers when multiple workers
- remain active for a long time (Tom Lane)
- </para>
-
- <para>
- The effective <varname>vacuum_cost_limit</varname> for an autovacuum worker
- could drop to nearly zero if it processed enough tables, causing it
- to run extremely slowly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for detecting register-stack overrun on <literal>IA64</literal>
- (Tom Lane)
- </para>
-
- <para>
- The <literal>IA64</literal> architecture has two hardware stacks. Full
- prevention of stack-overrun failures requires checking both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a check for stack overflow in <function>copyObject()</function> (Tom Lane)
- </para>
-
- <para>
- Certain code paths could crash due to stack overflow given a
- sufficiently complex query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of page splits in temporary GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- It is possible to have a <quote>concurrent</quote> page split in a
- temporary index, if for example there is an open cursor scanning the
- index when an insertion is done. GiST failed to detect this case and
- hence could deliver wrong results when execution of the cursor
- continued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error checking during early connection processing (Tom Lane)
- </para>
-
- <para>
- The check for too many child processes was skipped in some cases,
- possibly leading to postmaster crash when attempting to add the new
- child process to fixed-size arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve efficiency of window functions (Tom Lane)
- </para>
-
- <para>
- Certain cases where a large number of tuples needed to be read in
- advance, but <varname>work_mem</varname> was large enough to allow them all
- to be held in memory, were unexpectedly slow.
- <function>percent_rank()</function>, <function>cume_dist()</function> and
- <function>ntile()</function> in particular were subject to this problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage while <command>ANALYZE</command>'ing complex index
- expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an index that uses a whole-row Var still depends on its table
- (Tom Lane)
- </para>
-
- <para>
- An index declared like <literal>create index i on t (foo(t.*))</literal>
- would not automatically get dropped when its table was dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
- parameters (Tom Lane)
- </para>
-
- <para>
- This avoids a possible crash due to loss of information about the
- expected result rowtype.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Behave correctly if <literal>ORDER BY</literal>, <literal>LIMIT</literal>,
- <literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the
- <literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane)
- </para>
-
- <para>
- The planner would sometimes attempt to evaluate sub-expressions that
- in fact could never be reached, possibly leading to unexpected errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster crash when connection acceptance
- (<function>accept()</function> or one of the calls made immediately after it)
- fails, and the postmaster was compiled with GSSAPI support (Alexander
- Chernikov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed unlink of temporary files when <varname>log_temp_files</varname>
- is active (Tom Lane)
- </para>
-
- <para>
- If an error occurred while attempting to emit the log message, the
- unlink was not done, resulting in accumulation of temp files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
- </para>
-
- <para>
- This avoids a failure when <varname>debug_print_parse</varname> is enabled
- and certain types of query are executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of distance from a point to a horizontal
- line segment (Tom Lane)
- </para>
-
- <para>
- This bug affected several different geometric distance-measurement
- operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of transaction status in
- <application>ecpg</application> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote>
- expressions to not fail in recursion or error-recovery cases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application>'s handling of set-returning functions
- (Jan Urbanski)
- </para>
-
- <para>
- Attempts to call SPI functions within the iterator generating a set
- result would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>cube</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't emit <quote>identifier will be truncated</quote> notices in
- <filename>contrib/dblink</filename> except when creating new connections
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential coredump on missing public key in
- <filename>contrib/pgcrypto</filename> (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010o
- for DST law changes in Fiji and Samoa;
- also historical corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-5">
- <title>Release 8.4.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.4.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.5</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
- it from being called with an argument that is not one of the system
- catalog columns it's intended to be used with
- (Heikki Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</literal>) as non-fatal on
- Windows (Magnus Hagander)
- </para>
-
- <para>
- Under high load, Windows processes will sometimes fail at startup with
- this error code. Formerly the postmaster treated this as a panic
- condition and restarted the whole database, but that seems to be
- an overreaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect placement of placeholder evaluation (Tom Lane)
- </para>
-
- <para>
- This bug could result in query outputs being non-null when they
- should be null, in cases where the inner side of an outer join
- is a sub-select with non-strict expressions in its output list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate scans of <literal>UNION ALL</literal> member relations
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
- </para>
-
- <para>
- This occurred when a sub-select contains a join alias reference that
- expands into an expression containing another sub-select.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of whole-row Vars that reference a view or sub-select
- and appear within a nested sub-select (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of cross-type <literal>IN</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- This could result in failures if the planner tried to implement an
- <literal>IN</literal> join with a sort-then-unique-then-plain-join plan.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix computation of <command>ANALYZE</command> statistics for <type>tsvector</type>
- columns (Jan Urbanski)
- </para>
-
- <para>
- The original coding could produce incorrect statistics, leading to
- poor plan choices later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's estimate of memory used by <function>array_agg()</function>,
- <function>string_agg()</function>, and similar aggregate functions
- (Hitoshi Harada)
- </para>
-
- <para>
- The previous drastic underestimate could lead to out-of-memory failures
- due to inappropriate choice of a hash-aggregation plan.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to mark cached plans as transient (Tom Lane)
- </para>
-
- <para>
- If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</command> is
- in progress for one of the referenced tables, it is supposed to be
- re-planned once the index is ready for use. This was not happening
- reliably.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
- and provide additional detail in the resulting error messages
- (Tom Lane)
- </para>
-
- <para>
- This should improve the system's robustness with corrupted indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect search logic for partial-match queries with GIN indexes
- (Tom Lane)
- </para>
-
- <para>
- Cases involving AND/OR combination of several GIN index conditions
- didn't always give the right answer, and were sometimes much slower
- than necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent show_session_authorization() from crashing within autovacuum
- processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against functions returning setof record where not all the
- returned rows are actually of the same rowtype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of pending trigger event lists during
- subtransaction rollback (Tom Lane)
- </para>
-
- <para>
- This could lead to a crash or incorrect firing of triggers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when hashing a pass-by-reference function result
- (Tao Ma, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve merge join's handling of NULLs in the join columns (Tom Lane)
- </para>
-
- <para>
- A merge join can now stop entirely upon reaching the first NULL,
- if the sort order is such that NULLs sort high.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Take care to fsync the contents of lockfiles (both
- <filename>postmaster.pid</filename> and the socket lockfile) while writing them
- (Tom Lane)
- </para>
-
- <para>
- This omission could result in corrupted lockfile contents if the
- machine crashes shortly after postmaster start. That could in turn
- prevent subsequent attempts to start the postmaster from succeeding,
- until the lockfile is manually removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid recursion while assigning XIDs to heavily-nested
- subtransactions (Andres Freund, Robert Haas)
- </para>
-
- <para>
- The original coding could result in a crash if there was limited
- stack space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid holding open old WAL segments in the walwriter process
- (Magnus Hagander, Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding would prevent removal of no-longer-needed segments.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
- which could produce junk early in backend startup (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misinterpretation of partially-specified relation options
- for TOAST tables (Itagaki Takahiro)
- </para>
-
- <para>
- In particular, <literal>fillfactor</literal> would be read as zero if any
- other reloption had been set for the table, leading to serious bloat.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inheritance count tracking in <command>ALTER TABLE ... ADD
- CONSTRAINT</command> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible data corruption in <command>ALTER TABLE ... SET
- TABLESPACE</command> when archiving is enabled (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
- TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>CREATE INDEX</command>'s checking of whether proposed index
- expressions are immutable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle operator classes and families
- (Asko Tiidumaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible core dump when comparing two empty <type>tsquery</type> values
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>LIKE</literal>'s handling of patterns containing <literal>%</literal>
- followed by <literal>_</literal> (Tom Lane)
- </para>
-
- <para>
- We've fixed this before, but there were still some incorrectly-handled
- cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
- </para>
-
- <para>
- Input such as <literal>'J100000'::date</literal> worked before 8.4,
- but was unintentionally broken by added error-checking.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within
- a <literal>FOR</literal> loop that is iterating over that cursor
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Python, defend against null pointer results from
- <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, fix full SSL certificate verification for the
- case where both <literal>host</literal> and <literal>hostaddr</literal> are specified
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make psql recognize <command>DISCARD ALL</command> as a command that should
- not be encased in a transaction block in autocommit-off mode
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some issues in <application>pg_dump</application>'s handling of SQL/MED objects
- (Tom Lane)
- </para>
-
- <para>
- Notably, <application>pg_dump</application> would always fail if run by a
- non-superuser, which was not intended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application> and <application>pg_restore</application>'s
- handling of non-seekable archive files (Tom Lane, Robert Haas)
- </para>
-
- <para>
- This is important for proper functioning of parallel restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve parallel pg_restore's ability to cope with selective restore
- (<literal>-L</literal> option) (Tom Lane)
- </para>
-
- <para>
- The original code tended to fail if the <literal>-L</literal> file commanded
- a non-default restore ordering.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to process data from <literal>RETURNING</literal>
- clauses correctly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some memory leaks in <application>ecpg</application> (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of tables containing
- dropped columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix connection leak after <quote>duplicate connection name</quote>
- errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle connection names longer than
- 62 bytes correctly (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>hstore(text, text)</function>
- function to <filename>contrib/hstore</filename> (Robert Haas)
- </para>
-
- <para>
- This function is the recommended substitute for the now-deprecated
- <literal>=&gt;</literal> operator. It was back-patched so that future-proofed
- code can be used with older server versions. Note that the patch will
- be effective only after <filename>contrib/hstore</filename> is installed or
- reinstalled in a particular database. Users might prefer to execute
- the <command>CREATE FUNCTION</command> command by hand, instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010l
- for DST law changes in Egypt and Palestine; also historical corrections
- for Finland.
- </para>
-
- <para>
- This change also adds new names for two Micronesian timezones:
- Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
- abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
- Pacific/Ponape.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make Windows' <quote>N. Central Asia Standard Time</quote> timezone map to
- Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
- </para>
-
- <para>
- Microsoft changed the DST behavior of this zone in the timezone update
- from KB976098. Asia/Novosibirsk is a better match to its new behavior.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-4">
- <title>Release 8.4.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-05-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.3.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.4</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enforce restrictions in <literal>plperl</literal> using an opmask applied to
- the whole interpreter, instead of using <filename>Safe.pm</filename>
- (Tim Bunce, Andrew Dunstan)
- </para>
-
- <para>
- Recent developments have convinced us that <filename>Safe.pm</filename> is too
- insecure to rely on for making <literal>plperl</literal> trustable. This
- change removes use of <filename>Safe.pm</filename> altogether, in favor of using
- a separate interpreter with an opcode mask that is always applied.
- Pleasant side effects of the change include that it is now possible to
- use Perl's <literal>strict</literal> pragma in a natural way in
- <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
- variables work as expected in sort routines, and that function
- compilation is significantly faster. (CVE-2010-1169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Tcl from executing untrustworthy code from
- <structname>pltcl_modules</structname> (Tom)
- </para>
-
- <para>
- PL/Tcl's feature for autoloading Tcl code from a database table
- could be exploited for trojan-horse attacks, because there was no
- restriction on who could create or insert into that table. This change
- disables the feature unless <structname>pltcl_modules</structname> is owned by a
- superuser. (However, the permissions on the table are not checked, so
- installations that really need a less-than-secure modules table can
- still grant suitable privileges to trusted non-superusers.) Also,
- prevent loading code into the unrestricted <quote>normal</quote> Tcl
- interpreter unless we are really going to execute a <literal>pltclu</literal>
- function. (CVE-2010-1170)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix data corruption during WAL replay of
- <literal>ALTER ... SET TABLESPACE</literal> (Tom)
- </para>
-
- <para>
- When <varname>archive_mode</varname> is on, <literal>ALTER ... SET TABLESPACE</literal>
- generates a WAL record whose replay logic was incorrect. It could write
- the data to the wrong place, leading to possibly-unrecoverable data
- corruption. Data corruption would be observed on standby slaves, and
- could occur on the master as well if a database crash and recovery
- occurred after committing the <literal>ALTER</literal> and before the next
- checkpoint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash if a cache reset message is received during
- rebuild of a relcache entry (Heikki)
- </para>
-
- <para>
- This error was introduced in 8.4.3 while fixing a related failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply per-function GUC settings while running the language validator
- for the function (Itagaki Takahiro)
- </para>
-
- <para>
- This avoids failures if the function's code is invalid without the
- setting; an example is that SQL functions may not parse if the
- <varname>search_path</varname> is not correct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do constraint exclusion for inherited <command>UPDATE</command> and
- <command>DELETE</command> target tables when
- <varname>constraint_exclusion</varname> = <literal>partition</literal> (Tom)
- </para>
-
- <para>
- Due to an oversight, this setting previously only caused constraint
- exclusion to be checked in <command>SELECT</command> commands.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not allow an unprivileged user to reset superuser-only parameter
- settings (Alvaro)
- </para>
-
- <para>
- Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
- ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
- a database he owns, this would remove all special parameter settings
- for the user or database, even ones that are only supposed to be
- changeable by a superuser. Now, the <command>ALTER</command> will only
- remove the parameters that the user has permission to change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash during backend shutdown if shutdown occurs
- when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
- </para>
-
- <para>
- In some cases the context-printing function would fail because the
- current transaction had already been rolled back when it came time
- to print a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous handling of <literal>%r</literal> parameter in
- <varname>recovery_end_command</varname> (Heikki)
- </para>
-
- <para>
- The value always came out zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the archiver process responds to changes in
- <varname>archive_command</varname> as soon as possible (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's <literal>CASE</literal> statement to not fail when the
- case expression is a query that returns no rows (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle empty-string connect parameters properly in ecpg (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite recursion in <application>psql</application> when expanding
- a variable that refers to itself (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\copy</literal> to not add spaces around
- a dot within <literal>\copy (select ...)</literal> (Tom)
- </para>
-
- <para>
- Addition of spaces around the decimal point in a numeric literal would
- result in a syntax error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid formatting failure in <application>psql</application> when running in a
- locale context that doesn't match the <varname>client_encoding</varname>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary <quote>GIN indexes do not support whole-index scans</quote>
- errors for unsatisfiable queries using <filename>contrib/intarray</filename>
- operators (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
- interrupts promptly (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make server startup deal properly with the case that
- <function>shmget()</function> returns <literal>EINVAL</literal> for an existing
- shared memory segment (Tom)
- </para>
-
- <para>
- This behavior has been observed on BSD-derived kernels including macOS.
- It resulted in an entirely-misleading startup failure complaining that
- the shared memory request size was too large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crashes in syslogger process on Windows (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deal more robustly with incomplete time zone information in the
- Windows registry (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the set of known Windows time zone names (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010j
- for DST law changes in Argentina, Australian Antarctic, Bangladesh,
- Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
- also historical corrections for Taiwan.
- </para>
-
- <para>
- Also, add <literal>PKST</literal> (Pakistan Summer Time) to the default set of
- timezone abbreviations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-3">
- <title>Release 8.4.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-03-15</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.2.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.3</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you are upgrading from a version earlier than 8.4.2,
- see <xref linkend="release-8-4-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
- control how often we do session key renegotiation for an SSL connection
- (Magnus)
- </para>
-
- <para>
- This can be set to zero to disable renegotiation completely, which may
- be required if a broken SSL library is used. In particular, some
- vendors are shipping stopgap patches for CVE-2009-3555 that cause
- renegotiation attempts to fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during backend startup (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes due to not handling errors during relcache reload
- cleanly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to use of dangling pointer to a cached plan
- (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to overenthusiastic invalidation of cached
- plan for <command>ROLLBACK</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes when trying to recover from a failure in
- subtransaction start (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix server memory leak associated with use of savepoints and a client
- encoding different from server's encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
- index page split (Yoichi Hirai)
- </para>
-
- <para>
- This would result in index corruption, or even more likely an error
- during WAL replay, if we were unlucky enough to crash during
- end-of-recovery cleanup after having completed an incomplete GIST
- insertion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect comparison of scan key in GIN index search (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>substring()</function> for <type>bit</type> types treat any negative
- length as meaning <quote>all the rest of the string</quote> (Tom)
- </para>
-
- <para>
- The previous coding treated only -1 that way, and would produce an
- invalid result value for other negative values, possibly leading to
- a crash (CVE-2010-0442).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-to-bit-string conversions to handle the first fractional
- byte correctly when the output bit width is wider than the given
- integer by something other than a multiple of 8 bits (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some cases of pathologically slow regular expression matching (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug occurring when trying to inline a SQL function that returns
- a set of a composite type that contains dropped columns (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with trying to update a field of an element of a
- composite-type array column (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure when <command>EXPLAIN</command> has to print a FieldStore or
- assignment ArrayRef expression (Tom)
- </para>
-
- <para>
- These cases can arise now that <command>EXPLAIN VERBOSE</command> tries to
- print plan node target lists.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid an unnecessary coercion failure in some cases where an undecorated
- literal string appears in a subquery within
- <command>UNION</command>/<command>INTERSECT</command>/<command>EXCEPT</command> (Tom)
- </para>
-
- <para>
- This fixes a regression for some cases that worked before 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid undesirable rowtype compatibility check failures in some cases
- where a whole-row Var has a rowtype that contains dropped columns (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
- report the next WAL segment's name when the end location is exactly at a
- segment boundary (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always pass the catalog ID to an option validator function specified in
- <command>CREATE FOREIGN DATA WRAPPER</command> (Martin Pihlak)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more cases of temporary-file leakage (Heikki)
- </para>
-
- <para>
- This corrects a problem introduced in the previous minor release.
- One case that failed is when a plpgsql function returning set is
- called within another function's exception handler.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for doing <literal>FULL JOIN ON FALSE</literal> (Tom)
- </para>
-
- <para>
- This prevents a regression from pre-8.4 releases for some queries that
- can now be simplified to a constant-false join condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve constraint exclusion processing of boolean-variable cases,
- in particular make it possible to exclude a partition that has a
- <quote>bool_column = false</quote> constraint (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent treating an <literal>INOUT</literal> cast as representing binary
- compatibility (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include column name in the message when warning about inability to
- grant or revoke column-level privileges (Stephen Frost)
- </para>
-
- <para>
- This is more useful than before and helps to prevent confusion when
- a <command>REVOKE</command> generates multiple messages, which formerly
- appeared to be duplicates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reading <filename>pg_hba.conf</filename> and related files, do not treat
- <literal>@something</literal> as a file inclusion request if the <literal>@</literal>
- appears inside quote marks; also, never treat <literal>@</literal> by itself
- as a file inclusion request (Tom)
- </para>
-
- <para>
- This prevents erratic behavior if a role or database name starts with
- <literal>@</literal>. If you need to include a file whose path name
- contains spaces, you can still do so, but you must write
- <literal>@"/path to/file"</literal> rather than putting the quotes around
- the whole construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop on some platforms if a directory is named as
- an inclusion target in <filename>pg_hba.conf</filename> and related files
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible infinite loop if <function>SSL_read</function> or
- <function>SSL_write</function> fails without setting <varname>errno</varname> (Tom)
- </para>
-
- <para>
- This is reportedly possible with some Windows versions of
- <application>OpenSSL</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <acronym>GSSAPI</acronym> authentication on local connections,
- since it requires a hostname to function correctly (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect <application>ecpg</application> against applications freeing strings
- unexpectedly (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> report the proper SQLSTATE if the connection
- disappears (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix translation of cell contents in <application>psql</application> <literal>\d</literal>
- output (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>numericlocale</literal> option to not
- format strings it shouldn't in latex and troff output formats (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a small per-query memory leak in <application>psql</application> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>psql</application> return the correct exit status (3) when
- <literal>ON_ERROR_STOP</literal> and <literal>--single-transaction</literal> are
- both specified and an error occurs during the implied <command>COMMIT</command>
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s output of permissions for foreign servers
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in parallel <application>pg_restore</application> due to
- out-of-range dependency IDs (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix plpgsql failure in one case where a composite column is set to NULL
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when calling PL/Perl functions from PL/PerlU
- or vice versa (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>volatile</literal> markings in PL/Python to avoid possible
- compiler-specific misbehavior (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
- </para>
-
- <para>
- The only known symptom of this oversight is that the Tcl
- <literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <function>ExecutorEnd</function> from being run on portals created
- within a failed transaction or subtransaction (Tom)
- </para>
-
- <para>
- This is known to cause issues when using
- <filename>contrib/auto_explain</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <filename>contrib/dblink</filename> when too many key
- columns are specified to a <function>dblink_build_sql_*</function> function
- (Rushabh Lathia, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow zero-dimensional arrays in <filename>contrib/ltree</filename> operations
- (Tom)
- </para>
-
- <para>
- This case was formerly rejected as an error, but it's more convenient to
- treat it the same as a zero-element array. In particular this avoids
- unnecessary failures when an <type>ltree</type> operation is applied to the
- result of <literal>ARRAY(SELECT ...)</literal> and the sub-select returns no
- rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
- memory management (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make building of <filename>contrib/xml2</filename> more robust on Windows
- (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in Windows signal handling (Radu Ilie)
- </para>
-
- <para>
- One known symptom of this bug is that rows in <structname>pg_listener</structname>
- could be dropped under heavy load.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the configure script report failure if the C compiler does
- not provide a working 64-bit integer datatype (Tom)
- </para>
-
- <para>
- This case has been broken for some time, and no longer seems worth
- supporting, so just reject it at configure time instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010e
- for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-2">
- <title>Release 8.4.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-12-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.1.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.2</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- However, if you have any hash indexes,
- you should <command>REINDEX</command> them after updating to 8.4.2,
- to repair possible damage.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Protect against indirect security threats caused by index functions
- changing session-local state (Gurjeet Singh, Tom)
- </para>
-
- <para>
- This change prevents allegedly-immutable index functions from possibly
- subverting a superuser's session (CVE-2009-4136).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject SSL certificates containing an embedded null byte in the common
- name (CN) field (Magnus)
- </para>
-
- <para>
- This prevents unintended matching of a certificate to a server or client
- name during SSL validation (CVE-2009-4034).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hash index corruption (Tom)
- </para>
-
- <para>
- The 8.4 change that made hash indexes keep entries sorted by hash value
- failed to update the bucket splitting and compaction routines to
- preserve the ordering. So application of either of those operations
- could lead to permanent corruption of an index, in the sense that
- searches might fail to find entries that are present. To deal with
- this, it is recommended to <literal>REINDEX</literal> any hash indexes you may
- have after installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during backend-startup-time cache initialization (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash on empty thesaurus dictionary (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
- (Alvaro)
- </para>
-
- <para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
- after it's already committed its tuple movements, as well as transient
- errors if a plain <literal>VACUUM</literal> is interrupted after having
- truncated the table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to integer overflow in hash table size
- calculation (Tom)
- </para>
-
- <para>
- This could occur with extremely large planner estimates for the size of
- a hashjoin's result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash if a <literal>DROP</literal> is attempted on an internally-dependent
- object (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
- Mikkelson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that shared tuple-level locks held by prepared transactions are
- not ignored (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature drop of temporary files used for a cursor that is accessed
- within a subtransaction (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in syslogger process when rotating to a new CSV logfile
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</filename>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows permission-downgrade logic (Jesse Morris)
- </para>
-
- <para>
- This fixes some cases where the database failed to start on Windows,
- often with misleading error messages such as <quote>could not locate
- matching postgres executable</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>FOR UPDATE/SHARE</literal> in the primary query not propagate
- into <literal>WITH</literal> queries (Tom)
- </para>
-
- <para>
- For example, in
-<programlisting>
-WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
-</programlisting>
- the <literal>FOR UPDATE</literal> will now affect <literal>bar</literal> but not
- <literal>foo</literal>. This is more useful and consistent than the original
- 8.4 behavior, which tried to propagate <literal>FOR UPDATE</literal> into the
- <literal>WITH</literal> query but always failed due to assorted implementation
- restrictions. It also follows the design rule that <literal>WITH</literal>
- queries are executed as if independent of the main query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with a <literal>WITH RECURSIVE</literal> query immediately inside
- another one (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix concurrency bug in hash indexes (Tom)
- </para>
-
- <para>
- Concurrent insertions could cause index scans to transiently report
- wrong results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect logic for GiST index page splits, when the split depends
- on a non-first column of the index (Paul Ramsey)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix wrong search results for a multi-column GIN index with
- <literal>fastupdate</literal> enabled (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in WAL entry creation for GIN indexes (Tom)
- </para>
-
- <para>
- These bugs were masked when <varname>full_page_writes</varname> was on, but
- with it off a WAL replay failure was certain if a crash occurred before
- the next checkpoint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't error out if recycling or removing an old WAL file fails at the
- end of checkpoint (Heikki)
- </para>
-
- <para>
- It's better to treat the problem as non-fatal and allow the checkpoint
- to complete. Future checkpoints will retry the removal. Such problems
- are not expected in normal operation, but have been seen to be
- caused by misdesigned Windows anti-virus and backup software.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure WAL files aren't repeatedly archived on Windows (Heikki)
- </para>
-
- <para>
- This is another symptom that could happen if some other process
- interfered with deletion of a no-longer-needed file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PAM password processing to be more robust (Tom)
- </para>
-
- <para>
- The previous code is known to fail with the combination of the Linux
- <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the
- domain controller. It might have problems elsewhere too, since it was
- making unjustified assumptions about what arguments the PAM stack would
- pass to it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
- and SSPI authentication methods (Ian Turner)
- </para>
-
- <para>
- While the old 2000-byte limit was more than enough for Unix Kerberos
- implementations, tickets issued by Windows Domain Controllers can be
- much larger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that domain constraints are enforced in constructs like
- <literal>ARRAY[...]::domain</literal>, where the domain is over an array type
- (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix foreign-key logic for some cases involving composite-type columns
- as foreign keys (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a cursor's snapshot is not modified after it is created
- (Alvaro)
- </para>
-
- <para>
- This could lead to a cursor delivering wrong results if later operations
- in the same transaction modify the data the cursor is supposed to return.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>CREATE TABLE</literal> to properly merge default expressions
- coming from different inheritance parent tables (Tom)
- </para>
-
- <para>
- This used to work but was broken in 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-enable collection of access statistics for sequences (Akira Kurosawa)
- </para>
-
- <para>
- This used to work but was broken in 8.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of ownership dependencies during <literal>CREATE OR
- REPLACE FUNCTION</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of <literal>WHERE</literal>
- <replaceable>x</replaceable>=<replaceable>x</replaceable> conditions (Tom)
- </para>
-
- <para>
- In some cases these could get ignored as redundant, but they aren't
- &mdash; they're equivalent to <replaceable>x</replaceable> <literal>IS NOT NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect plan construction when using hash aggregation to implement
- <literal>DISTINCT</literal> for textually identical volatile expressions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</literal>
- expression (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_stat()</function> to not fail on an empty <type>tsvector</type>
- value (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make text search parser accept underscores in XML attributes (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix encoding handling in <type>xml</type> binary input (Heikki)
- </para>
-
- <para>
- If the XML header doesn't specify an encoding, we now assume UTF-8 by
- default; the previous handling was inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug with calling <literal>plperl</literal> from <literal>plperlu</literal> or vice
- versa (Tom)
- </para>
-
- <para>
- An error exit from the inner function could result in crashes due to
- failure to re-select the correct Perl interpreter for the outer function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leak when a PL/Perl function is redefined
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that Perl arrays are properly converted to
- <productname>PostgreSQL</productname> arrays when returned by a set-returning
- PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
- </para>
-
- <para>
- This worked correctly already for non-set-returning functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare crash in exception processing in PL/Python (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> problem with comments in <literal>DECLARE
- CURSOR</literal> statements (Michael)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to not treat recently-added keywords as
- reserved words (Tom)
- </para>
-
- <para>
- This affected the keywords <literal>CALLED</literal>, <literal>CATALOG</literal>,
- <literal>DEFINER</literal>, <literal>ENUM</literal>, <literal>FOLLOWING</literal>,
- <literal>INVOKER</literal>, <literal>OPTIONS</literal>, <literal>PARTITION</literal>,
- <literal>PRECEDING</literal>, <literal>RANGE</literal>, <literal>SECURITY</literal>,
- <literal>SERVER</literal>, <literal>UNBOUNDED</literal>, and <literal>WRAPPER</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-allow regular expression special characters in <application>psql</application>'s
- <literal>\df</literal> function name parameter (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/fuzzystrmatch</filename>, correct the calculation of
- <function>levenshtein</function> distances with non-default costs (Marcin Mank)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pg_standby</filename>, disable triggering failover with a
- signal on Windows (Fujii Masao)
- </para>
-
- <para>
- This never did anything useful, because Windows doesn't have Unix-style
- signals, but recent changes made it actually crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put <literal>FREEZE</literal> and <literal>VERBOSE</literal> options in the right
- order in the <literal>VACUUM</literal> command that
- <filename>contrib/vacuumdb</filename> produces (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible leak of connections when <filename>contrib/dblink</filename>
- encounters an error (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>psql</application>'s flex module is compiled with the correct
- system header definitions (Tom)
- </para>
-
- <para>
- This fixes build failures on platforms where
- <literal>--enable-largefile</literal> causes incompatible changes in the
- generated code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the postmaster ignore any <literal>application_name</literal> parameter in
- connection request packets, to improve compatibility with future libpq
- versions (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the timezone abbreviation files to match current reality (Joachim
- Wieland)
- </para>
-
- <para>
- This includes adding <literal>IDT</literal> to the default
- timezone abbreviation set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009s
- for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
- Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
- corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4-1">
- <title>Release 8.4.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-09-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 8.4.
- For information about new features in the 8.4 major release, see
- <xref linkend="release-8-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 8.4.1</title>
-
- <para>
- A dump/restore is not required for those running 8.4.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix WAL page header initialization at the end of archive recovery
- (Heikki)
- </para>
-
- <para>
- This could lead to failure to process the WAL in a subsequent
- archive recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot make new WAL entries during recovery</quote> error (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problem that could make expired rows visible after a crash (Tom)
- </para>
-
- <para>
- This bug involved a page status bit potentially not being set
- correctly after a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>RESET ROLE</command> and <command>RESET SESSION
- AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
- </para>
-
- <para>
- This covers a case that was missed in the previous patch that
- disallowed <command>SET ROLE</command> and <command>SET SESSION
- AUTHORIZATION</command> inside security-definer functions.
- (See CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>LOAD</command> of an already-loaded loadable module
- into a no-op (Tom)
- </para>
-
- <para>
- Formerly, <command>LOAD</command> would attempt to unload and re-load the
- module, but this is unsafe and not all that useful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make window function <literal>PARTITION BY</literal> and <literal>ORDER BY</literal>
- items always be interpreted as simple expressions (Tom)
- </para>
-
- <para>
- In 8.4.0 these lists were parsed following the rules used for
- top-level <literal>GROUP BY</literal> and <literal>ORDER BY</literal> lists.
- But this was not correct per the SQL standard, and it led to possible
- circularity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several errors in planning of semi-joins (Tom)
- </para>
-
- <para>
- These led to wrong query results in some cases where <literal>IN</literal>
- or <literal>EXISTS</literal> was used together with another join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of whole-row references to subqueries that are within
- an outer join (Tom)
- </para>
-
- <para>
- An example is
- <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</literal>.
- Here, <literal>ss.*</literal> would be treated as <literal>ROW(NULL,NULL,...)</literal>
- for null-extended join rows, which is not the same as a simple NULL.
- Now it is treated as a simple NULL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
- </para>
-
- <para>
- This bug led to the often-reported <quote>could not reattach
- to shared memory</quote> error message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix locale handling with plperl (Heikki)
- </para>
-
- <para>
- This bug could cause the server's locale setting to change when a
- plperl function is called, leading to data corruption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of reloptions to ensure setting one option doesn't
- force default values for others (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a <quote>fast shutdown</quote> request will forcibly terminate
- open sessions, even if a <quote>smart shutdown</quote> was already in progress
- (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leak for <function>array_agg()</function> in <literal>GROUP BY</literal>
- queries (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
- suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
- </para>
-
- <para>
- It was previously handled as <literal>'th'</literal> (lowercase).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include the fractional part in the result of
- <function>EXTRACT(second)</function> and
- <function>EXTRACT(milliseconds)</function> for
- <type>time</type> and <type>time with time zone</type> inputs (Tom)
- </para>
-
- <para>
- This has always worked for floating-point datetime configurations,
- but was broken in the integer datetime code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
- when <replaceable>x</replaceable> is more than 2 million and integer
- datetimes are in use (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance when processing toasted values in index scans (Tom)
- </para>
-
- <para>
- This is particularly useful for <ulink
- url="http://postgis.net/">PostGIS</ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a typo that disabled <varname>commit_delay</varname> (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Output early-startup messages to <filename>postmaster.log</filename> if the
- server is started in silent mode (Tom)
- </para>
-
- <para>
- Previously such error messages were discarded, leading to
- difficulty in debugging.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove translated FAQs (Peter)
- </para>
-
- <para>
- They are now on the <ulink
- url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>. The
- main FAQ was moved to the wiki some time ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application> to not go into an infinite loop if
- <filename>postgresql.conf</filename> is empty (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several errors in <application>pg_dump</application>'s
- <literal>--binary-upgrade</literal> mode (Bruce, Tom)
- </para>
-
- <para>
- <literal>pg_dump --binary-upgrade</literal> is used by pg_migrator.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
- properly handle the maximum number of parameters (twenty) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve robustness of <application>libpq</application>'s code to recover
- from errors during <command>COPY FROM STDIN</command> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including conflicting readline and editline header files
- when both libraries are installed (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around gcc bug that causes <quote>floating-point exception</quote>
- instead of <quote>division by zero</quote> on some platforms (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2009l
- for DST law changes in Bangladesh, Egypt, Mauritius.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-8-4">
- <title>Release 8.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2009-07-01</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- After many years of development, <productname>PostgreSQL</productname> has
- become feature-complete in many areas. This release shows a
- targeted approach to adding features (e.g., authentication,
- monitoring, space reuse), and adds capabilities defined in the
- later SQL standards. The major areas of enhancement are:
- </para>
-
- <itemizedlist>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <listitem>
- <para>
- Windowing Functions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Common Table Expressions and Recursive Queries
- </para>
- </listitem>
-
- <listitem>
- <para>
- Default and variadic parameters for functions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Parallel Restore
- </para>
- </listitem>
-
- <listitem>
- <para>
- Column Permissions
- </para>
- </listitem>
-
- <listitem>
- <para>
- Per-database locale settings
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improved hash indexes
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improved join performance for <literal>EXISTS</literal> and <literal>NOT EXISTS</literal> queries
- </para>
- </listitem>
-
- <listitem>
- <para>
- Easier-to-use Warm Standby
- </para>
- </listitem>
-
- <listitem>
- <para>
- Automatic sizing of the Free Space Map
- </para>
- </listitem>
-
- <listitem>
- <para>
- Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Version-aware psql (backslash commands work against older servers)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support SSL certificates for user authentication
- </para>
- </listitem>
-
- <listitem>
- <para>
- Per-function runtime statistics
- </para>
- </listitem>
-
- <listitem>
- <para>
- Easy editing of functions in psql
- </para>
- </listitem>
-
- <listitem>
- <para>
- New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Migration to Version 8.4</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is
- required for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>General</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Use 64-bit integer datetimes by default (Neil Conway)
- </para>
-
- <para>
- Previously this was selected by <application>configure</application>'s
- <option>--enable-integer-datetimes</option> option. To retain
- the old behavior, build with <option>--disable-integer-datetimes</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>ipcclean</application> utility command (Bruce)
- </para>
-
- <para>
- The utility only worked on a few platforms. Users should use
- their operating system tools instead.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server Settings</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Change default setting for
- <literal>log_min_messages</literal> to <literal>warning</literal> (previously
- it was <literal>notice</literal>) to reduce log file volume (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change default setting for <literal>max_prepared_transactions</literal> to
- zero (previously it was 5) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>debug_print_parse</literal>, <literal>debug_print_rewritten</literal>,
- and <literal>debug_print_plan</literal>
- output appear at <literal>LOG</literal> message level, not
- <literal>DEBUG1</literal> as formerly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>debug_pretty_print</literal> default to <literal>on</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>explain_pretty_print</varname> parameter (no longer needed) (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <varname>log_temp_files</varname> settable by superusers only, like other
- logging options (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove automatic appending of the epoch timestamp when no <literal>%</literal>
- escapes are present in <literal>log_filename</literal> (Robert Haas)
- </para>
-
- <para>
- This change was made because some users wanted a fixed log filename,
- for use with an external log rotation tool.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>log_restartpoints</varname> from <filename>recovery.conf</filename>;
- instead use <varname>log_checkpoints</varname> (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>krb_realm</varname> and <varname>krb_server_hostname</varname>;
- these are now set in <filename>pg_hba.conf</filename> instead (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- There are also significant changes in <link
- linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</filename></link>,
- as described below.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change <command>TRUNCATE</command> and <command>LOCK</command> to
- apply to child tables of the specified table(s) (Peter)
- </para>
-
- <para>
- These commands now accept an <literal>ONLY</literal> option that prevents
- processing child tables; this option must be used if the old
- behavior is needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>SELECT DISTINCT</command> and
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>
- no longer always produce sorted output (Tom)
- </para>
-
- <para>
- Previously, these types of queries always removed duplicate rows
- by means of Sort/Unique processing (i.e., sort then remove adjacent
- duplicates). Now they can be implemented by hashing, which will not
- produce sorted output. If an application relied on the output being
- in sorted order, the recommended fix is to add an <literal>ORDER BY</literal>
- clause. As a short-term workaround, the previous behavior can be
- restored by disabling <literal>enable_hashagg</literal>, but that is a very
- performance-expensive fix. <literal>SELECT DISTINCT ON</literal> never uses
- hashing, however, so its behavior is unchanged.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force child tables to inherit <literal>CHECK</literal> constraints from parents
- (Alex Hunsaker, Nikhil Sontakke, Tom)
- </para>
-
- <para>
- Formerly it was possible to drop such a constraint from a child
- table, allowing rows that violate the constraint to be visible
- when scanning the parent table. This was deemed inconsistent,
- as well as contrary to SQL standard.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow negative <literal>LIMIT</literal> or <literal>OFFSET</literal>
- values, rather than treating them as zero (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>LOCK TABLE</command> outside a transaction block
- (Tom)
- </para>
-
- <para>
- Such an operation is useless because the lock would be released
- immediately.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sequences now contain an additional <structfield>start_value</structfield> column
- (Zoltan Boszormenyi)
- </para>
-
- <para>
- This supports <command>ALTER SEQUENCE ... RESTART</command>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
-
- <sect3>
- <title>Functions and Operators</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <type>numeric</type> zero raised to a fractional power return
- <literal>0</literal>, rather than throwing an error, and make
- <type>numeric</type> zero raised to the zero power return <literal>1</literal>,
- rather than error (Bruce)
- </para>
-
- <para>
- This matches the longstanding <type>float8</type> behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow unary minus of floating-point values to produce minus zero (Tom)
- </para>
-
- <para>
- The changed behavior is more <acronym>IEEE</acronym>-standard
- compliant.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw an error if an escape character is the last character in
- a <literal>LIKE</literal> pattern (i.e., it has nothing to escape) (Tom)
- </para>
-
- <para>
- Previously, such an escape character was silently ignored,
- thus possibly masking application logic errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>~=~</literal> and <literal>~&lt;&gt;~</literal> operators
- formerly used for <literal>LIKE</literal> index comparisons (Tom)
- </para>
-
- <para>
- Pattern indexes now use the regular equality operator.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <function>xpath()</function> now passes its arguments to <application>libxml</application>
- without any changes (Andrew)
- </para>
-
- <para>
- This means that the XML argument must be a well-formed XML document.
- The previous coding attempted to allow XML fragments, but it did not
- work well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>xmlelement()</function> format attribute values just like
- content values (Peter)
- </para>
-
- <para>
- Previously, attribute values were formatted according to the
- normal SQL output behavior, which is sometimes at odds with
- XML rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite memory management for <application>libxml</application>-using functions
- (Tom)
- </para>
-
- <para>
- This change should avoid some compatibility problems with use of
- <application>libxml</application> in PL/Perl and other add-on code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adopt a faster algorithm for hash functions (Kenneth Marshall,
- based on work of Bob Jenkins)
- </para>
-
- <para>
- Many of the built-in hash functions now deliver different results on
- little-endian and big-endian platforms.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Temporal Functions and Operators</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <varname>DateStyle</varname> no longer controls <type>interval</type> output
- formatting; instead there is a new variable <varname>IntervalStyle</varname>
- (Ron Mayer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of handling of fractional seconds in
- <type>timestamp</type> and <type>interval</type> output (Ron Mayer)
- </para>
-
- <para>
- This may result in displaying a different number of fractional
- digits than before, or rounding instead of truncating.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>to_char()</function>'s localized month/day names depend
- on <varname>LC_TIME</varname>, not <varname>LC_MESSAGES</varname> (Euler
- Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <function>to_date()</function> and <function>to_timestamp()</function>
- to more consistently report errors for invalid input (Brendan
- Jurd)
- </para>
-
- <para>
- Previous versions would often ignore or silently misread input
- that did not match the format string. Such cases will now
- result in an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_timestamp()</function> to not require upper/lower case
- matching for meridian (<literal>AM</literal>/<literal>PM</literal>) and era
- (<literal>BC</literal>/<literal>AD</literal>) format designations (Brendan
- Jurd)
- </para>
-
- <para>
- For example, input value <literal>ad</literal> now matches the format
- string <literal>AD</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 8.4 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Performance</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Improve optimizer statistics calculations (Jan Urbanski, Tom)
- </para>
-
- <para>
- In particular, estimates for full-text-search operators are
- greatly improved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>SELECT DISTINCT</command> and
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> to
- use hashing (Tom)
- </para>
-
- <para>
- This means that these types of queries no longer automatically
- produce sorted output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create explicit concepts of semi-joins and anti-joins (Tom)
- </para>
-
- <para>
- This work formalizes our previous ad-hoc treatment of <literal>IN
- (SELECT ...)</literal> clauses, and extends it to <literal>EXISTS</literal> and
- <literal>NOT EXISTS</literal> clauses. It should result in significantly
- better planning of <literal>EXISTS</literal> and <literal>NOT EXISTS</literal>
- queries. In general, logically equivalent <literal>IN</literal> and
- <literal>EXISTS</literal> clauses should now have similar performance,
- whereas previously <literal>IN</literal> often won.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimization of sub-selects beneath outer joins (Tom)
- </para>
-
- <para>
- Formerly, a sub-select or view could not be optimized very well if it
- appeared within the nullable side of an outer join and contained
- non-strict expressions (for instance, constants) in its result list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the performance of <function>text_position()</function> and
- related functions by using Boyer-Moore-Horspool searching (David
- Rowley)
- </para>
-
- <para>
- This is particularly helpful for long search patterns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce I/O load of writing the statistics collection file
- by writing the file only when requested (Martin Pihlak)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance for bulk inserts (Robert Haas, Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the default value of <varname>default_statistics_target</varname>
- from <literal>10</literal> to <literal>100</literal> (Greg Sabino Mullane,
- Tom)
- </para>
-
- <para>
- The maximum value was also increased from <literal>1000</literal> to
- <literal>10000</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform <varname>constraint_exclusion</varname> checking by default
- in queries involving inheritance or <literal>UNION ALL</literal> (Tom)
- </para>
-
- <para>
- A new <varname>constraint_exclusion</varname> setting,
- <literal>partition</literal>, was added to specify this behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow I/O read-ahead for bitmap index scans (Greg Stark)
- </para>
-
- <para>
- The amount of read-ahead is controlled by
- <varname>effective_io_concurrency</varname>. This feature is available only
- if the kernel has <function>posix_fadvise()</function> support.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Inline simple set-returning <acronym>SQL</acronym> functions in
- <literal>FROM</literal> clauses (Richard Rowell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of multi-batch hash joins by providing a special
- case for join key values that are especially common in the outer
- relation (Bryce Cutt, Ramon Lawrence)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce volume of temporary data in multi-batch hash joins
- by suppressing <quote>physical tlist</quote> optimization (Michael
- Henderson, Ramon Lawrence)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for idle-in-transaction sessions during
- <command>CREATE INDEX CONCURRENTLY</command> (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of shared cache invalidation (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Convert many <filename>postgresql.conf</filename> settings to enumerated
- values so that <literal>pg_settings</literal> can display the valid
- values (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>cursor_tuple_fraction</varname> parameter to control the
- fraction of a cursor's rows that the planner assumes will be
- fetched (Robert Hell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow underscores in the names of custom variable
- classes in <filename>postgresql.conf</filename> (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication and security</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Remove support for the (insecure) <literal>crypt</literal> authentication method
- (Magnus)
- </para>
-
- <para>
- This effectively obsoletes pre-<productname>PostgreSQL</productname> 7.2 client
- libraries, as there is no longer any non-plaintext password method that
- they can use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support regular expressions in <filename>pg_ident.conf</filename>
- (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <productname>Kerberos</productname>/<acronym>GSSAPI</acronym> parameters
- to be changed without restarting the postmaster (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <acronym>SSL</acronym> certificate chains in server certificate
- file (Andrew Gierth)
- </para>
-
- <para>
- Including the full certificate chain makes the client able
- to verify the certificate without having all intermediate CA
- certificates present in the local store, which is often the case for
- commercial CAs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report appropriate error message for combination of <literal>MD5</literal>
- authentication and <varname>db_user_namespace</varname> enabled (Bruce)
- </para>
- </listitem>
- </itemizedlist>
-
- </sect4>
-
- <sect4 id="release-8-4-pg-hba-conf">
- <title><filename>pg_hba.conf</filename></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Change all authentication options to use <literal>name=value</literal>
- syntax (Magnus)
- </para>
-
- <para>
- This makes incompatible changes to the <literal>ldap</literal>,
- <literal>pam</literal> and <literal>ident</literal> authentication methods. All
- <filename>pg_hba.conf</filename> entries with these methods need to be
- rewritten using the new format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <literal>ident sameuser</literal> option, instead making that
- behavior the default if no usermap is specified (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a usermap parameter for all external authentication methods
- (Magnus)
- </para>
-
- <para>
- Previously a usermap was only supported for <literal>ident</literal>
- authentication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>clientcert</literal> option to control requesting of a
- client certificate (Magnus)
- </para>
-
- <para>
- Previously this was controlled by the presence of a root
- certificate file in the server's data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>cert</literal> authentication method to allow
- <emphasis>user</emphasis> authentication via <acronym>SSL</acronym> certificates
- (Magnus)
- </para>
-
- <para>
- Previously <acronym>SSL</acronym> certificates could only verify that
- the client had access to a certificate, not authenticate a
- user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>krb5</literal>, <literal>gssapi</literal> and <literal>sspi</literal>
- realm and <literal>krb5</literal> host settings to be specified in
- <filename>pg_hba.conf</filename> (Magnus)
- </para>
-
- <para>
- These override the settings in <filename>postgresql.conf</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>include_realm</varname> parameter for <literal>krb5</literal>,
- <literal>gssapi</literal>, and <literal>sspi</literal> methods (Magnus)
- </para>
-
- <para>
- This allows identical usernames from different realms to be
- authenticated as different database users using usermaps.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Parse <filename>pg_hba.conf</filename> fully when it is loaded,
- so that errors are reported immediately (Magnus)
- </para>
-
- <para>
- Previously, most errors in the file wouldn't be detected until clients
- tried to connect, so an erroneous file could render the system
- unusable. With the new behavior, if an error is detected during
- reload then the bad file is rejected and the postmaster continues
- to use its old copy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show all parsing errors in <filename>pg_hba.conf</filename> instead of
- aborting after the first one (Selena Deckelmann)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>ident</literal> authentication over Unix-domain sockets
- on <productname>Solaris</productname> (Garick Hamlin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Continuous Archiving</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Provide an option to <function>pg_start_backup()</function> to force its
- implied checkpoint to finish as quickly as possible (Tom)
- </para>
-
- <para>
- The default behavior avoids excess I/O consumption, but that is
- pointless if no concurrent query activity is going on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_stop_backup()</function> wait for modified <acronym>WAL</acronym>
- files to be archived (Simon)
- </para>
-
- <para>
- This guarantees that the backup is valid at the time
- <function>pg_stop_backup()</function> completes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When archiving is enabled, rotate the last WAL segment at shutdown
- so that all transactions can be archived immediately
- (Guillaume Smet, Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Delay <quote>smart</quote> shutdown while a continuous archiving base backup
- is in progress (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cancel a continuous archiving base backup if <quote>fast</quote> shutdown
- is requested (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>recovery.conf</filename> boolean variables to take the
- same range of string values as <filename>postgresql.conf</filename>
- boolean variables
- (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <function>pg_conf_load_time()</function> to report when
- the <productname>PostgreSQL</productname> configuration files were last loaded
- (George Gensure)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_terminate_backend()</function> to safely terminate a
- backend (the <literal>SIGTERM</literal> signal works also) (Tom, Bruce)
- </para>
-
- <para>
- While it's always been possible to <literal>SIGTERM</literal> a single
- backend, this was previously considered unsupported; and testing
- of the case found some bugs that are now fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to track user-defined functions' call counts and
- runtimes (Martin Pihlak)
- </para>
-
- <para>
- Function statistics appear in a new system view,
- <literal>pg_stat_user_functions</literal>. Tracking is controlled
- by the new parameter <varname>track_functions</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow specification of the maximum query string size in
- <literal>pg_stat_activity</literal> via new
- <varname>track_activity_query_size</varname> parameter (Thomas Lee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum line length sent to <application>syslog</application>, in
- hopes of improving performance (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add read-only configuration variables <varname>segment_size</varname>,
- <varname>wal_block_size</varname>, and <varname>wal_segment_size</varname>
- (Bernd Helmle)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When reporting a deadlock, report the text of all queries involved
- in the deadlock to the server log (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_stat_get_activity(pid)</function> function to return
- information about a specific process id (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the location of the server's statistics file to be specified
- via <varname>stats_temp_directory</varname> (Magnus)
- </para>
-
- <para>
- This allows the statistics file to be placed in a
- <acronym>RAM</acronym>-resident directory to reduce I/O requirements.
- On startup/shutdown, the file is copied to its traditional location
- (<literal>$PGDATA/global/</literal>) so it is preserved across restarts.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <literal>WINDOW</literal> functions (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <literal>WITH</literal> clauses (CTEs), including <literal>WITH
- RECURSIVE</literal> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>TABLE</command> command (Peter)
- </para>
-
- <para>
- <literal>TABLE tablename</literal> is a SQL standard short-hand for
- <literal>SELECT * FROM tablename</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>AS</literal> to be optional when specifying a
- <command>SELECT</command> (or <literal>RETURNING</literal>) column output
- label (Hiroshi Saito)
- </para>
-
- <para>
- This works so long as the column label is not any
- <productname>PostgreSQL</productname> keyword; otherwise <literal>AS</literal> is still
- needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support set-returning functions in <command>SELECT</command> result lists
- even for functions that return their result via a tuplestore (Tom)
- </para>
-
- <para>
- In particular, this means that functions written in PL/pgSQL
- and other PL languages can now be called this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support set-returning functions in the output of aggregation
- and grouping queries (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>SELECT FOR UPDATE</command>/<literal>SHARE</literal> to work
- on inheritance trees (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add infrastructure for <acronym>SQL/MED</acronym> (Martin Pihlak,
- Peter)
- </para>
-
- <para>
- There are no remote or external <acronym>SQL/MED</acronym> capabilities
- yet, but this change provides a standardized and future-proof
- system for managing connection information for modules like
- <filename>dblink</filename> and <filename>plproxy</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Invalidate cached plans when referenced schemas, functions, operators,
- or operator classes are modified (Martin Pihlak, Tom)
- </para>
-
- <para>
- This improves the system's ability to respond to on-the-fly
- DDL changes.
- </para>
- </listitem>
- <listitem>
- <para>
- Allow comparison of composite types and allow arrays of
- anonymous composite types (Tom)
- </para>
-
- <para>
- This allows constructs such as
- <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</literal>.
- This is particularly useful in recursive queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for Unicode string literal and identifier specifications
- using code points, e.g. <literal>U&amp;'d\0061t\+000061'</literal>
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject <literal>\000</literal> in string literals and <command>COPY</command> data
- (Tom)
- </para>
-
- <para>
- Previously, this was accepted but had the effect of terminating
- the string contents.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the parser's ability to report error locations (Tom)
- </para>
-
- <para>
- An error location is now reported for many semantic errors,
- such as mismatched datatypes, that previously could not be localized.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>TRUNCATE</command></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support statement-level <literal>ON TRUNCATE</literal> triggers (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>RESTART</literal>/<literal>CONTINUE IDENTITY</literal> options
- for <command>TRUNCATE TABLE</command>
- (Zoltan Boszormenyi)
- </para>
-
- <para>
- The start value of a sequence can be changed by <command>ALTER
- SEQUENCE START WITH</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>TRUNCATE tab1, tab1</command> to succeed (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a separate <command>TRUNCATE</command> permission (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><command>EXPLAIN</command></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>EXPLAIN VERBOSE</command> show the output columns of each
- plan node (Tom)
- </para>
-
- <para>
- Previously <command>EXPLAIN VERBOSE</command> output an internal
- representation of the query plan. (That behavior is now
- available via <varname>debug_print_plan</varname>.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXPLAIN</command> identify subplans and initplans with
- individual labels (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXPLAIN</command> honor <varname>debug_print_plan</varname> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>EXPLAIN</command> on <command>CREATE TABLE AS</command> (Peter)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><literal>LIMIT</literal>/<literal>OFFSET</literal></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow sub-selects in <literal>LIMIT</literal> and <literal>OFFSET</literal> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SQL</acronym>-standard syntax for
- <literal>LIMIT</literal>/<literal>OFFSET</literal> capabilities (Peter)
- </para>
-
- <para>
- To wit,
- <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
- ONLY</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for column-level privileges (Stephen Frost, KaiGai
- Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Refactor multi-object <command>DROP</command> operations to reduce the
- need for <literal>CASCADE</literal> (Alex Hunsaker)
- </para>
-
- <para>
- For example, if table <literal>B</literal> has a dependency on table
- <literal>A</literal>, the command <literal>DROP TABLE A, B</literal> no longer
- requires the <literal>CASCADE</literal> option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various problems with concurrent <command>DROP</command> commands
- by ensuring that locks are taken before we begin to drop dependencies
- of an object (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reporting of dependencies during <command>DROP</command>
- commands (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>WITH [NO] DATA</literal> clause to <command>CREATE TABLE
- AS</command>, per the <acronym>SQL</acronym> standard (Peter, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for user-defined I/O conversion casts (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE AGGREGATE</command> to use an <type>internal</type>
- transition datatype (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>LIKE</literal> clause to <command>CREATE TYPE</command> (Tom)
- </para>
-
- <para>
- This simplifies creation of data types that use the same internal
- representation as an existing type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow specification of the type category and <quote>preferred</quote>
- status for user-defined base types (Tom)
- </para>
-
- <para>
- This allows more control over the coercion behavior of user-defined
- types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>CREATE OR REPLACE VIEW</command> to add columns to the
- end of a view (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER</command></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add <command>ALTER TYPE RENAME</command> (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER SEQUENCE ... RESTART</command> (with no parameter) to
- reset a sequence to its initial value (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify the <command>ALTER TABLE</command> syntax to allow all reasonable
- combinations for tables, indexes, sequences, and views (Tom)
- </para>
-
- <para>
- This change allows the following new syntaxes:
-
- <itemizedlist>
- <listitem>
- <para>
- <command>ALTER SEQUENCE OWNER TO</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW OWNER TO</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>ALTER VIEW SET SCHEMA</command>
- </para>
- </listitem>
- </itemizedlist>
-
- There is no actual new functionality here, but formerly
- you had to say <command>ALTER TABLE</command> to do these things,
- which was confusing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
- ... SET DATA TYPE</command> (Peter)
- </para>
-
- <para>
- This is <acronym>SQL</acronym>-standard syntax for functionality that
- was already supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER TABLE SET WITHOUT OIDS</command> rewrite the table
- to physically remove <type>OID</type> values (Tom)
- </para>
-
- <para>
- Also, add <command>ALTER TABLE SET WITH OIDS</command> to rewrite the
- table to add <type>OID</type>s.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Database Manipulation</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Improve reporting of
- <command>CREATE</command>/<command>DROP</command>/<command>RENAME DATABASE</command>
- failure when uncommitted prepared transactions are the cause
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <varname>LC_COLLATE</varname> and <varname>LC_CTYPE</varname> into
- per-database settings (Radek Strnad, Heikki)
- </para>
-
- <para>
- This makes collation similar to encoding, which was always
- configurable per database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve checks that the database encoding, collation
- (<varname>LC_COLLATE</varname>), and character classes
- (<varname>LC_CTYPE</varname>) match (Heikki, Tom)
- </para>
-
- <para>
- Note in particular that a new database's encoding and locale
- settings can be changed only when copying from <literal>template0</literal>.
- This prevents possibly copying data that doesn't match the settings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>ALTER DATABASE SET TABLESPACE</command> to move a database
- to a new tablespace (Guillaume Lelarge, Bernd Helmle)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Utility Operations</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>VERBOSE</literal> option to the <command>CLUSTER</command> command and
- <application>clusterdb</application> (Jim Cox)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Decrease memory requirements for recording pending trigger
- events (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Indexes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Dramatically improve the speed of building and accessing hash
- indexes (Tom Raney, Shreya Bhargava)
- </para>
-
- <para>
- This allows hash indexes to be sometimes faster than btree
- indexes. However, hash indexes are still not crash-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make hash indexes store only the hash code, not the full value of
- the indexed column (Xiao Meng)
- </para>
-
- <para>
- This greatly reduces the size of hash indexes for long indexed
- values, improving performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement fast update option for GIN indexes (Teodor, Oleg)
- </para>
-
- <para>
- This option greatly improves update speed at a small penalty in search
- speed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>xxx_pattern_ops</literal> indexes can now be used for simple
- equality comparisons, not only for <literal>LIKE</literal> (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Full Text Indexes</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Remove the requirement to use <literal>@@@</literal> when doing
- <acronym>GIN</acronym> weighted lookups on full text indexes (Tom, Teodor)
- </para>
-
- <para>
- The normal <literal>@@</literal> text search operator can be used
- instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an optimizer selectivity function for <literal>@@</literal> text
- search operations (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow prefix matching in full text searches (Teodor Sigaev,
- Oleg Bartunov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multi-column <acronym>GIN</acronym> indexes (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve support for Nepali language and Devanagari alphabet (Teodor)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><command>VACUUM</command></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Track free space in separate per-relation <quote>fork</quote> files (Heikki)
- </para>
-
- <para>
- Free space discovered by <command>VACUUM</command> is now recorded in
- <filename>*_fsm</filename> files, rather than in a fixed-sized shared memory
- area. The <varname>max_fsm_pages</varname> and <varname>max_fsm_relations</varname>
- settings have been removed, greatly simplifying administration of
- free space management.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a visibility map to track pages that do not require
- vacuuming (Heikki)
- </para>
-
- <para>
- This allows <command>VACUUM</command> to avoid scanning all of
- a table when only a portion of the table needs vacuuming.
- The visibility map is stored in per-relation <quote>fork</quote> files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>vacuum_freeze_table_age</varname> parameter to control
- when <command>VACUUM</command> should ignore the visibility map and
- do a full table scan to freeze tuples (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track transaction snapshots more carefully (Alvaro)
- </para>
-
- <para>
- This improves <command>VACUUM</command>'s ability to reclaim space
- in the presence of long-running transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add ability to specify per-relation autovacuum and <acronym>TOAST</acronym>
- parameters in <command>CREATE TABLE</command> (Alvaro, Euler Taveira de
- Oliveira)
- </para>
-
- <para>
- Autovacuum options used to be stored in a system table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>--freeze</literal> option to <application>vacuumdb</application>
- (Bruce)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>CaseSensitive</literal> option for text search synonym
- dictionaries (Simon)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the precision of <type>NUMERIC</type> division (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add basic arithmetic operators for <type>int2</type> with <type>int8</type>
- (Tom)
- </para>
-
- <para>
- This eliminates the need for explicit casting in some situations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <type>UUID</type> input to accept an optional hyphen after
- every fourth digit (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>on</literal>/<literal>off</literal> as input for the boolean data type
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow spaces around <literal>NaN</literal> in the input string for
- type <type>numeric</type> (Sam Mason)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Temporal Data Types</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Reject year <literal>0 BC</literal> and years <literal>000</literal> and
- <literal>0000</literal> (Tom)
- </para>
-
- <para>
- Previously these were interpreted as <literal>1 BC</literal>.
- (Note: years <literal>0</literal> and <literal>00</literal> are still assumed to be
- the year 2000.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include <literal>SGT</literal> (Singapore time) in the default list of
- known time zone abbreviations (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>infinity</literal> and <literal>-infinity</literal> as
- values of type <type>date</type> (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make parsing of <type>interval</type> literals more standard-compliant
- (Tom, Ron Mayer)
- </para>
-
- <para>
- For example, <literal>INTERVAL '1' YEAR</literal> now does what it's
- supposed to.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <type>interval</type> fractional-seconds precision to be specified
- after the <literal>second</literal> keyword, for <acronym>SQL</acronym> standard
- compliance (Tom)
- </para>
-
- <para>
- Formerly the precision had to be specified after the keyword
- <type>interval</type>. (For backwards compatibility, this syntax is still
- supported, though deprecated.) Data type definitions will now be
- output using the standard format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support the <acronym>IS0 8601</acronym> <type>interval</type> syntax (Ron
- Mayer, Kevin Grittner)
- </para>
-
- <para>
- For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</literal> is now
- supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>IntervalStyle</varname> parameter
- which controls how <type>interval</type> values are output (Ron Mayer)
- </para>
-
- <para>
- Valid values are: <literal>postgres</literal>, <literal>postgres_verbose</literal>,
- <literal>sql_standard</literal>, <literal>iso_8601</literal>. This setting also
- controls the handling of negative <type>interval</type> input when only
- some fields have positive/negative designations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of handling of fractional seconds in
- <type>timestamp</type> and <type>interval</type> output (Ron Mayer)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Arrays</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Improve the handling of casts applied to <literal>ARRAY[]</literal>
- constructs, such as <literal>ARRAY[...]::integer[]</literal>
- (Brendan Jurd)
- </para>
-
- <para>
- Formerly <productname>PostgreSQL</productname> attempted to determine a data type
- for the <literal>ARRAY[]</literal> construct without reference to the ensuing
- cast. This could fail unnecessarily in many cases, in particular when
- the <literal>ARRAY[]</literal> construct was empty or contained only
- ambiguous entries such as <literal>NULL</literal>. Now the cast is consulted
- to determine the type that the array elements must be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <acronym>SQL</acronym>-syntax <type>ARRAY</type> dimensions optional
- to match the <acronym>SQL</acronym> standard (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_ndims()</function> to return the number
- of dimensions of an array (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_length()</function> to return the length
- of an array for a specified dimension (Jim Nasby, Robert
- Haas, Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add aggregate function <function>array_agg()</function>, which
- returns all aggregated values as a single array (Robert Haas,
- Jeff Davis, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>unnest()</function>, which converts an array to
- individual row values (Tom)
- </para>
-
- <para>
- This is the opposite of <function>array_agg()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>array_fill()</function> to create arrays initialized with
- a value (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>generate_subscripts()</function> to simplify generating
- the range of an array's subscripts (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Wide-Value Storage (<acronym>TOAST</acronym>)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Consider <acronym>TOAST</acronym> compression on values as short as
- 32 bytes (previously 256 bytes) (Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require 25% minimum space savings before using <acronym>TOAST</acronym>
- compression (previously 20% for small values and any-savings-at-all
- for large values) (Greg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <acronym>TOAST</acronym> heuristics for rows that have a mix of large
- and small toastable fields, so that we prefer to push large values out
- of line and don't compress small values unnecessarily (Greg, Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Document that <function>setseed()</function> allows values from
- <literal>-1</literal> to <literal>1</literal> (not just <literal>0</literal> to
- <literal>1</literal>), and enforce the valid range (Kris Jurka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server-side function <function>lo_import(filename, oid)</function>
- (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>quote_nullable()</function>, which behaves like
- <function>quote_literal()</function> but returns the string <literal>NULL</literal> for
- a null argument (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve full text search <function>headline()</function> function to
- allow extracting several fragments of text (Sushant Sinha)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>suppress_redundant_updates_trigger()</function> trigger
- function to avoid overhead for non-data-changing updates (Andrew)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>div(numeric, numeric)</function> to perform <type>numeric</type>
- division without rounding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <type>timestamp</type> and <type>timestamptz</type> versions of
- <function>generate_series()</function> (Hitoshi Harada)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Object Information Functions</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Implement <function>current_query()</function> for use by functions
- that need to know the currently running query (Tomas Doran)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_get_keywords()</function> to return a list of the
- parser keywords (Dave Page)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_get_functiondef()</function> to see a function's
- definition (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the second argument of <function>pg_get_expr()</function> to be zero
- when deparsing an expression that does not contain variables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <function>pg_relation_size()</function> to use <literal>regclass</literal>
- (Heikki)
- </para>
-
- <para>
- <function>pg_relation_size(data_type_name)</function> no longer works.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>boot_val</literal> and <literal>reset_val</literal> columns to
- <literal>pg_settings</literal> output (Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add source file name and line number columns to
- <literal>pg_settings</literal> output for variables set in a configuration
- file (Magnus, Alvaro)
- </para>
-
- <para>
- For security reasons, these columns are only visible to superusers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <varname>CURRENT_CATALOG</varname>,
- <varname>CURRENT_SCHEMA</varname>, <varname>SET CATALOG</varname>, <varname>SET
- SCHEMA</varname> (Peter)
- </para>
-
- <para>
- These provide <acronym>SQL</acronym>-standard syntax for existing features.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>pg_typeof()</function> which returns the data type
- of any value (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>version()</function> return information about whether
- the server is a 32- or 64-bit binary (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the behavior of information schema columns
- <structfield>is_insertable_into</structfield> and <structfield>is_updatable</structfield> to
- be consistent (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the behavior of information schema
- <structfield>datetime_precision</structfield> columns (Peter)
- </para>
-
- <para>
- These columns now show zero for <type>date</type> columns, and 6
- (the default precision) for <type>time</type>, <type>timestamp</type>, and
- <type>interval</type> without a declared precision, rather than showing
- null as formerly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert remaining builtin set-returning functions to use
- <literal>OUT</literal> parameters (Jaime Casanova)
- </para>
-
- <para>
- This makes it possible to call these functions without specifying
- a column list: <function>pg_show_all_settings()</function>,
- <function>pg_lock_status()</function>, <function>pg_prepared_xact()</function>,
- <function>pg_prepared_statement()</function>, <function>pg_cursor()</function>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_*_is_visible()</function> and
- <function>has_*_privilege()</function> functions return <literal>NULL</literal>
- for invalid OIDs, rather than reporting an error (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Extend <function>has_*_privilege()</function> functions to allow inquiring
- about the OR of multiple privileges in one call (Stephen
- Frost, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>has_column_privilege()</function> and
- <function>has_any_column_privilege()</function> functions (Stephen
- Frost, Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Function Creation</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support variadic functions (functions with a variable number
- of arguments) (Pavel Stehule)
- </para>
-
- <para>
- Only trailing arguments can be optional, and they all must be
- of the same data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support default values for function arguments (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>CREATE FUNCTION ... RETURNS TABLE</command> clause (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <acronym>SQL</acronym>-language functions to return the output
- of an <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
- <literal>RETURNING</literal> clause (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>PL/pgSQL Server-Side Language</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support <literal>EXECUTE USING</literal> for easier insertion of data
- values into a dynamic query string (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow looping over the results of a cursor using a <literal>FOR</literal>
- loop (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>RETURN QUERY EXECUTE</literal> (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the <literal>RAISE</literal> command (Pavel Stehule)
-
- <itemizedlist>
- <listitem>
- <para>
- Support <literal>DETAIL</literal> and <literal>HINT</literal> fields
- </para>
- </listitem>
- <listitem>
- <para>
- Support specification of the <literal>SQLSTATE</literal> error code
- </para>
- </listitem>
- <listitem>
- <para>
- Support an exception name parameter
- </para>
- </listitem>
- <listitem>
- <para>
- Allow <literal>RAISE</literal> without parameters in an exception
- block to re-throw the current error
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow specification of <varname>SQLSTATE</varname> codes
- in <literal>EXCEPTION</literal> lists (Pavel Stehule)
- </para>
-
- <para>
- This is useful for handling custom <varname>SQLSTATE</varname> codes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support the <literal>CASE</literal> statement (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>RETURN QUERY</command> set the special <literal>FOUND</literal> and
- <command>GET DIAGNOSTICS</command> <literal>ROW_COUNT</literal> variables
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>FETCH</command> and <command>MOVE</command> set the
- <command>GET DIAGNOSTICS</command> <literal>ROW_COUNT</literal> variable
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXIT</command> without a label always exit the innermost
- loop (Tom)
- </para>
-
- <para>
- Formerly, if there were a <literal>BEGIN</literal> block more closely nested
- than any loop, it would exit that block instead. The new behavior
- matches Oracle(TM) and is also what was previously stated by our own
- documentation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make processing of string literals and nested block comments
- match the main SQL parser's processing (Tom)
- </para>
-
- <para>
- In particular, the format string in <command>RAISE</command> now works
- the same as any other string literal, including being subject
- to <varname>standard_conforming_strings</varname>. This change also
- fixes other cases in which valid commands would fail when
- <varname>standard_conforming_strings</varname> is on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage when the same function is called at varying
- exception-block nesting depths (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <literal>pg_ctl restart</literal> to preserve command-line arguments
- (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>-w</literal>/<literal>--no-password</literal> option that
- prevents password prompting in all utilities that have a
- <literal>-W</literal>/<literal>--password</literal> option (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <option>-q</option> (quiet) option of <application>createdb</application>,
- <application>createuser</application>, <application>dropdb</application>,
- <application>dropuser</application> (Peter)
- </para>
-
- <para>
- These options have had no effect since <productname>PostgreSQL</productname>
- 8.3.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><application>psql</application></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Remove verbose startup banner; now just suggest <literal>help</literal>
- (Joshua Drake)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>help</literal> show common backslash commands (Greg
- Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>\pset format wrapped</literal> mode to wrap output to the
- screen width, or file/pipe output too if <literal>\pset columns</literal>
- is set (Bryce Nesbitt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all supported spellings of boolean values in <command>\pset</command>,
- rather than just <literal>on</literal> and <literal>off</literal> (Bruce)
- </para>
-
- <para>
- Formerly, any string other than <quote>off</quote> was silently taken
- to mean <literal>true</literal>. <application>psql</application> will now complain
- about unrecognized spellings (but still take them as <literal>true</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the pager for wide output (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a space between a one-letter backslash command and its first
- argument (Bernd Helmle)
- </para>
-
- <para>
- This removes a historical source of ambiguity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve tab completion support for schema-qualified and
- quoted identifiers (Greg Sabino Mullane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add optional <literal>on</literal>/<literal>off</literal> argument for
- <command>\timing</command> (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Display access control rights on multiple lines (Brendan
- Jurd, Andreas Scherbaum)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\l</command> show database access privileges (Andrew Gilligan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\l+</command> show database sizes, if permissions
- allow (Andrew Gilligan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <command>\ef</command> command to edit function definitions
- (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><application>psql</application> \d* commands</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>\d*</command> commands that do not have a pattern argument
- show system objects only if the <literal>S</literal> modifier is specified
- (Greg Sabino Mullane, Bruce)
- </para>
-
- <para>
- The former behavior was inconsistent across different variants
- of <command>\d</command>, and in most cases it provided no easy way to see
- just user objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>\d*</command> commands to work with older
- <productname>PostgreSQL</productname> server versions (back to 7.4),
- not only the current server version
- (Guillaume Lelarge)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d</command> show foreign-key constraints that reference
- the selected table (Kenneth D'Souza)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d</command> on a sequence show its column values
- (Euler Taveira de Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add column storage type and other relation options to the
- <command>\d+</command> display (Gregory Stark, Euler Taveira de
- Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show relation size in <command>\dt+</command> output (Dickson S.
- Guedes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show the possible values of <literal>enum</literal> types in <command>\dT+</command>
- (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>\dC</command> to accept a wildcard pattern, which matches
- either datatype involved in the cast (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a function type column to <command>\df</command>'s output, and add
- options to list only selected types of functions (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\df</command> not hide functions that take or return
- type <type>cstring</type> (Tom)
- </para>
-
- <para>
- Previously, such functions were hidden because most of them are
- datatype I/O functions, which were deemed uninteresting. The new
- policy about hiding system functions by default makes this wart
- unnecessary.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><application>pg_dump</application></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>--no-tablespaces</literal> option to
- <application>pg_dump</application>/<application>pg_dumpall</application>/<application>pg_restore</application>
- so that dumps can be restored to clusters that have non-matching
- tablespace layouts (Gavin Roy)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <option>-d</option> and <option>-D</option> options from
- <application>pg_dump</application> and <application>pg_dumpall</application> (Tom)
- </para>
-
- <para>
- These options were too frequently confused with the option to
- select a database name in other <productname>PostgreSQL</productname>
- client applications. The functionality is still available,
- but you must now spell out the long option name
- <option>--inserts</option> or <option>--column-inserts</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <option>-i</option>/<option>--ignore-version</option> option from
- <application>pg_dump</application> and <application>pg_dumpall</application> (Tom)
- </para>
-
- <para>
- Use of this option does not throw an error, but it has no
- effect. This option was removed because the version checks
- are necessary for safety.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable <varname>statement_timeout</varname> during dump and restore
- (Joshua Drake)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pg_dump</application>/<application>pg_dumpall</application> option
- <option>--lock-wait-timeout</option> (David Gould)
- </para>
-
- <para>
- This allows dumps to fail if unable to acquire a shared lock
- within the specified amount of time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reorder <application>pg_dump</application> <literal>--data-only</literal> output
- to dump tables referenced by foreign keys before
- the referencing tables (Tom)
- </para>
-
- <para>
- This allows data loads when foreign keys are already present.
- If circular references make a safe ordering impossible, a
- <literal>NOTICE</literal> is issued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dump</application>, <application>pg_dumpall</application>, and
- <application>pg_restore</application> to use a specified role (Benedek
- L&aacute;szl&oacute;)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_restore</application> to use multiple concurrent
- connections to do the restore (Andrew)
- </para>
-
- <para>
- The number of concurrent connections is controlled by the option
- <literal>--jobs</literal>. This is supported only for custom-format archives.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Programming Tools</title>
-
- <sect4>
- <title><application>libpq</application></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the <type>OID</type> to be specified when importing a large
- object, via new function <function>lo_import_with_oid()</function> (Tatsuo)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <quote>events</quote> support (Andrew Chernow, Merlin Moncure)
- </para>
-
- <para>
- This adds the ability to register callbacks to manage private
- data associated with <structname>PGconn</structname> and <structname>PGresult</structname>
- objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling to allow the return of multiple
- error messages as multi-line error reports (Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>PQexecParams()</function> and related functions return
- <varname>PGRES_EMPTY_QUERY</varname> for an empty query (Tom)
- </para>
-
- <para>
- They previously returned <varname>PGRES_COMMAND_OK</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document how to avoid the overhead of <function>WSACleanup()</function>
- on Windows (Andrew Chernow)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not rely on Kerberos tickets to determine the default database
- username (Magnus)
- </para>
-
- <para>
- Previously, a Kerberos-capable build of libpq would use the
- principal name from any available Kerberos ticket as default
- database username, even if the connection wasn't using Kerberos
- authentication. This was deemed inconsistent and confusing.
- The default username is now determined the same way with or
- without Kerberos. Note however that the database username must still
- match the ticket when Kerberos authentication is used.
- </para>
- </listitem>
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><application>libpq</application> <acronym>SSL</acronym> (Secure Sockets Layer)
- support</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Fix certificate validation for <acronym>SSL</acronym> connections
- (Magnus)
- </para>
-
- <para>
- <application>libpq</application> now supports verifying both the certificate
- and the name of the server when making <acronym>SSL</acronym>
- connections. If a root certificate is not available to use for
- verification, <acronym>SSL</acronym> connections will fail. The
- <literal>sslmode</literal> parameter is used to enable certificate
- verification and set the level of checking.
- The default is still not to do any verification, allowing connections
- to SSL-enabled servers without requiring a root certificate on the
- client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support wildcard server certificates (Magnus)
- </para>
-
- <para>
- If a certificate <acronym>CN</acronym> starts with <literal>*</literal>, it will
- be treated as a wildcard when matching the hostname, allowing the
- use of the same certificate for multiple servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the file locations for client certificates to be specified
- (Mark Woodward, Alvaro, Magnus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <function>PQinitOpenSSL</function> function to allow greater control
- over OpenSSL/libcrypto initialization (Andrew Chernow)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>libpq</application> unregister its <application>OpenSSL</application>
- callbacks when no database connections remain open
- (Bruce, Magnus, Russell Smith)
- </para>
-
- <para>
- This is required for applications that unload the libpq library,
- otherwise invalid <application>OpenSSL</application> callbacks will remain.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><application>ecpg</application></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add localization support for messages (Euler Taveira de
- Oliveira)
- </para>
- </listitem>
-
- <listitem>
- <para>
- ecpg parser is now automatically generated from the server
- parser (Michael)
- </para>
-
- <para>
- Previously the ecpg parser was hand-maintained.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Programming Interface (<acronym>SPI</acronym>)</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for single-use plans with out-of-line
- parameters (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <varname>SPI_OK_REWRITTEN</varname> return code for
- <function>SPI_execute()</function> (Heikki)
- </para>
-
- <para>
- This is used when a command is rewritten to another type of
- command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove unnecessary inclusions from <filename>executor/spi.h</filename> (Tom)
- </para>
-
- <para>
- SPI-using modules might need to add some <literal>#include</literal>
- lines if they were depending on <filename>spi.h</filename> to include
- things for them.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Build Options</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Update build system to use <productname>Autoconf</productname> 2.61 (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <productname>GNU bison</productname> for source code builds (Peter)
- </para>
-
- <para>
- This has effectively been required for several years, but now there
- is no infrastructure claiming to support other parser tools.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pg_config</application> <literal>--htmldir</literal> option
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pass <type>float4</type> by value inside the server (Zoltan
- Boszormenyi)
- </para>
-
- <para>
- Add <application>configure</application> option
- <literal>--disable-float4-byval</literal> to use the old behavior.
- External C functions that use old-style (version 0) call convention
- and pass or return <type>float4</type> values will be broken by this
- change, so you may need the <application>configure</application> option if you
- have such functions and don't want to update them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pass <type>float8</type>, <type>int8</type>, and related datatypes
- by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
- </para>
-
- <para>
- Add <application>configure</application> option
- <literal>--disable-float8-byval</literal> to use the old behavior.
- As above, this change might break old-style external C functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configure options <literal>--with-segsize</literal>,
- <literal>--with-blocksize</literal>, <literal>--with-wal-blocksize</literal>,
- <literal>--with-wal-segsize</literal> (Zdenek Kotala, Tom)
- </para>
-
- <para>
- This simplifies build-time control over several constants that
- previously could only be changed by editing
- <filename>pg_config_manual.h</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow threaded builds on <productname>Solaris</productname> 2.5 (Bruce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the system's <function>getopt_long()</function> on <productname>Solaris</productname>
- (Zdenek Kotala, Tom)
- </para>
-
- <para>
- This makes option processing more consistent with what Solaris users
- expect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for the <productname>Sun Studio</productname> compiler on
- <productname>Linux</productname> (Julius Stroffek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Append the major version number to the backend <application>gettext</application>
- domain, and the <literal>soname</literal> major version number to
- libraries' <application>gettext</application> domain (Peter)
- </para>
-
- <para>
- This simplifies parallel installations of multiple versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for code coverage testing with <application>gcov</application>
- (Michelle Caisse)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow out-of-tree builds on <productname>Mingw</productname> and
- <productname>Cygwin</productname> (Richard Evans)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the use of <productname>Mingw</productname> as a cross-compiling source
- platform (Peter)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
- <itemizedlist>
-
- <listitem>
- <para>
- Support 64-bit time zone data files (Heikki)
- </para>
-
- <para>
- This adds support for daylight saving time (<acronym>DST</acronym>)
- calculations beyond the year 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deprecate use of platform's <type>time_t</type> data type (Tom)
- </para>
-
- <para>
- Some platforms have migrated to 64-bit <type>time_t</type>, some have
- not, and Windows can't make up its mind what it's doing. Define
- <type>pg_time_t</type> to have the same meaning as <type>time_t</type>,
- but always be 64 bits (unless the platform has no 64-bit integer type),
- and use that type in all module APIs and on-disk data formats.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in handling of the time zone database when cross-compiling
- (Richard Evans)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Link backend object files in one step, rather than in stages
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>gettext</application> support to allow better translation
- of plurals (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add message translation support to the PL languages (Alvaro, Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more <application>DTrace</application> probes (Robert Lor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable <application>DTrace</application> support on <application>macOS
- Leopard</application> and other non-Solaris platforms (Robert Lor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Simplify and standardize conversions between C strings and
- <type>text</type> datums, by providing common functions for the purpose
- (Brendan Jurd, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up the <filename>include/catalog/</filename> header files so that
- frontend programs can include them without including
- <filename>postgres.h</filename>
- (Zdenek Kotala)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <type>name</type> char-aligned, and suppress zero-padding of
- <type>name</type> entries in indexes (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recover better if dynamically-loaded code executes <function>exit()</function>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a hook to let plug-ins monitor the executor (Itagaki
- Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a hook to allow the planner's statistics lookup behavior to
- be overridden (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>shmem_startup_hook()</function> for custom shared memory
- requirements (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Replace the index access method <function>amgetmulti</function> entry point
- with <function>amgetbitmap</function>, and extend the API for
- <function>amgettuple</function> to support run-time determination of
- operator lossiness (Heikki, Tom, Teodor)
- </para>
-
- <para>
- The API for GIN and GiST opclass <function>consistent</function> functions
- has been extended as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for partial-match searches in <acronym>GIN</acronym> indexes
- (Teodor Sigaev, Oleg Bartunov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Replace <structname>pg_class</structname> column <structfield>reltriggers</structfield>
- with boolean <structfield>relhastriggers</structfield> (Simon)
- </para>
-
- <para>
- Also remove unused <structname>pg_class</structname> columns
- <structfield>relukeys</structfield>, <structfield>relfkeys</structfield>, and
- <structfield>relrefs</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <structfield>relistemp</structfield> column to <structname>pg_class</structname>
- to ease identification of temporary tables (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move platform <acronym>FAQ</acronym>s into the main documentation
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent parser input files from being built with any conflicts
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for the <literal>KOI8U</literal> (Ukrainian) encoding
- (Peter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Japanese message translations (Japan PostgreSQL Users Group)
- </para>
-
- <para>
- This used to be maintained as a separate project.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problem when setting <varname>LC_MESSAGES</varname> on
- <application>MSVC</application>-built systems (Hiroshi Inoue, Hiroshi
- Saito, Magnus)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <filename>contrib/auto_explain</filename> to automatically run
- <command>EXPLAIN</command> on queries exceeding a specified duration
- (Itagaki Takahiro, Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/btree_gin</filename> to allow GIN indexes to
- handle more datatypes (Oleg, Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/citext</filename> to provide a case-insensitive,
- multibyte-aware text data type (David Wheeler)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>contrib/pg_stat_statements</filename> for server-wide
- tracking of statement execution statistics (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add duration and query mode options to <filename>contrib/pgbench</filename>
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pgbench</filename> use table names
- <structname>pgbench_accounts</structname>, <structname>pgbench_branches</structname>,
- <structname>pgbench_history</structname>, and <structname>pgbench_tellers</structname>,
- rather than just <structname>accounts</structname>, <structname>branches</structname>,
- <structname>history</structname>, and <structname>tellers</structname> (Tom)
- </para>
-
- <para>
- This is to reduce the risk of accidentally destroying real data
- by running <application>pgbench</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgstattuple</filename> to handle tables and
- indexes with over 2 billion pages (Tatsuhito Kasahara)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/fuzzystrmatch</filename>, add a version of the
- Levenshtein string-distance function that allows the user to
- specify the costs of insertion, deletion, and substitution
- (Volkan Yazici)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/ltree</filename> support multibyte encodings
- (laser)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable <filename>contrib/dblink</filename> to use connection information
- stored in the SQL/MED catalogs (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of errors from
- the remote server (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/dblink</filename> set <varname>client_encoding</varname>
- to match the local database's encoding (Joe Conway)
- </para>
-
- <para>
- This prevents encoding problems when communicating with a remote
- database that uses a different encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <filename>contrib/dblink</filename> uses a password supplied
- by the user, and not accidentally taken from the server's
- <filename>.pgpass</filename> file (Joe Conway)
- </para>
-
- <para>
- This is a minor security enhancement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>fsm_page_contents()</function>
- to <filename>contrib/pageinspect</filename> (Heikki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <function>get_raw_page()</function> to support free space map
- (<filename>*_fsm</filename>) files. Also update
- <filename>contrib/pg_freespacemap</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for multibyte encodings to <filename>contrib/pg_trgm</filename>
- (Teodor)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite <filename>contrib/intagg</filename> to use new
- functions <function>array_agg()</function> and <function>unnest()</function>
- (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pg_standby</filename> recover all available WAL before
- failover (Fujii Masao, Simon, Heikki)
- </para>
-
- <para>
- To make this work safely, you now need to set the new
- <literal>recovery_end_command</literal> option in <filename>recovery.conf</filename>
- to clean up the trigger file after failover. <application>pg_standby</application>
- will no longer remove the trigger file itself.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>contrib/pg_standby</filename>'s <option>-l</option> option is now a no-op,
- because it is unsafe to use a symlink (Simon)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml
deleted file mode 100644
index 9e90f5a7f32..00000000000
--- a/doc/src/sgml/release-9.0.sgml
+++ /dev/null
@@ -1,11091 +0,0 @@
-<!-- doc/src/sgml/release-9.0.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-0-23">
- <title>Release 9.0.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.22.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 9.0.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.23</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.18,
- see <xref linkend="release-9-0-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use fuzzy path cost tiebreaking rule in all supported branches (Tom Lane)
- </para>
-
- <para>
- This change is meant to avoid platform-specific behavior when
- alternative plan choices have effectively-identical estimated costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-22">
- <title>Release 9.0.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.0.21.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.0.X release series in September 2015.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.22</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.18,
- see <xref linkend="release-9-0-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-21">
- <title>Release 9.0.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.0.20.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.0.X release series in September 2015.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.21</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.18,
- see <xref linkend="release-9-0-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application> to use TLS protocol versions beyond v1
- (Noah Misch)
- </para>
-
- <para>
- For a long time, <application>libpq</application> was coded so that the only SSL
- protocol it would allow was TLS v1. Now that newer TLS versions are
- becoming popular, allow it to negotiate the highest commonly-supported
- TLS version with the server. (<productname>PostgreSQL</productname> servers were
- already capable of such negotiation, so no change is needed on the
- server side.) This is a back-patch of a change already released in
- 9.4.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-20">
- <title>Release 9.0.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.19.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.0.X release series in September 2015.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.20</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.18,
- see <xref linkend="release-9-0-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid <quote>cannot GetMultiXactIdMembers() during recovery</quote> error
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-19">
- <title>Release 9.0.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.18.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.19</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.18,
- see <xref linkend="release-9-0-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible data corruption if <command>ALTER DATABASE SET
- TABLESPACE</command> is used to move a database to a new tablespace and then
- shortly later move it back to its original tablespace (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corrupting tables when <command>ANALYZE</command> inside a transaction
- is rolled back (Andres Freund, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If the failing transaction had earlier removed the last index, rule, or
- trigger from the table, the table would be left in a corrupted state
- with the relevant <structname>pg_class</structname> flags not set though they
- should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of <command>SELECT FOR UPDATE</command> when using a partial
- index on a child table (Kyotaro Horiguchi)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, <command>SELECT FOR UPDATE</command> must
- also recheck the partial index's <literal>WHERE</literal> condition when
- rechecking a recently-updated row to see if it still satisfies the
- query's <literal>WHERE</literal> condition. This requirement was missed if the
- index belonged to an inheritance child table, so that it was possible
- to incorrectly return rows that no longer satisfy the query condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner case wherein <command>SELECT FOR UPDATE</command> could return a row
- twice, and possibly miss returning other rows (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, a <command>SELECT FOR UPDATE</command>
- that is scanning an inheritance tree could incorrectly return a row
- from a prior child table instead of the one it should return from a
- later child table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject duplicate column names in the referenced-columns list of
- a <literal>FOREIGN KEY</literal> declaration (David Rowley)
- </para>
-
- <para>
- This restriction is per SQL standard. Previously we did not reject
- the case explicitly, but later on the code would fail with
- bizarre-looking errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in raising a <type>numeric</type> value to a large integral power
- (Tom Lane)
- </para>
-
- <para>
- The previous code could get a wrong answer, or consume excessive
- amounts of time and memory before realizing that the answer must
- overflow.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <function>numeric_recv()</function>, truncate away any fractional digits
- that would be hidden according to the value's <literal>dscale</literal> field
- (Tom Lane)
- </para>
-
- <para>
- A <type>numeric</type> value's display scale (<literal>dscale</literal>) should
- never be less than the number of nonzero fractional digits; but
- apparently there's at least one broken client application that
- transmits binary <type>numeric</type> values in which that's true.
- This leads to strange behavior since the extra digits are taken into
- account by arithmetic operations even though they aren't printed.
- The least risky fix seems to be to truncate away such <quote>hidden</quote>
- digits on receipt, so that the value is indeed what it prints as.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range numeric timezone specifications (Tom Lane)
- </para>
-
- <para>
- Simple numeric timezone specifications exceeding +/- 168 hours (one
- week) would be accepted, but could then cause null-pointer dereference
- crashes in certain operations. There's no use-case for such large UTC
- offsets, so reject them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in <type>tsquery</type> <literal>@&gt;</literal> <type>tsquery</type>
- operator (Heikki Linnakangas)
- </para>
-
- <para>
- Two different terms would be considered to match if they had the same
- CRC. Also, if the second operand had more terms than the first, it
- would be assumed not to be contained in the first; which is wrong
- since it might contain duplicate terms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve ispell dictionary's defenses against bad affix files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
- </para>
-
- <para>
- The previous coding could crash on an oversize dictionary, so this was
- deemed a back-patchable bug fix rather than a feature addition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner problems with nested append relations, such as inherited
- tables within <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fail cleanly when a GiST index tuple doesn't fit on a page, rather
- than going into infinite recursion (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Exempt tables that have per-table <varname>cost_limit</varname>
- and/or <varname>cost_delay</varname> settings from autovacuum's global cost
- balancing rules (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- The previous behavior resulted in basically ignoring these per-table
- settings, which was unintended. Now, a table having such settings
- will be vacuumed using those settings, independently of what is going
- on in other autovacuum workers. This may result in heavier total I/O
- load than before, so such settings should be re-examined for sanity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid wholesale autovacuuming when autovacuum is nominally off
- (Tom Lane)
- </para>
-
- <para>
- Even when autovacuum is nominally off, we will still launch autovacuum
- worker processes to vacuum tables that are at risk of XID wraparound.
- However, such a worker process then proceeded to vacuum all tables in
- the target database, if they met the usual thresholds for
- autovacuuming. This is at best pretty unexpected; at worst it delays
- response to the wraparound threat. Fix it so that if autovacuum is
- turned off, workers <emphasis>only</emphasis> do anti-wraparound vacuums and
- not any other work.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition between hot standby queries and replaying a
- full-page image (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in transient errors in queries being
- executed in hot standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several cases where recovery logic improperly ignored WAL records
- for <literal>COMMIT/ABORT PREPARED</literal> (Heikki Linnakangas)
- </para>
-
- <para>
- The most notable oversight was
- that <varname>recovery_target_xid</varname> could not be used to stop at
- a two-phase commit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid creating unnecessary <filename>.ready</filename> marker files for
- timeline history files (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible null pointer dereference when an empty prepared statement
- is used and the <varname>log_statement</varname> setting is <literal>mod</literal>
- or <literal>ddl</literal> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SPARC spinlock implementation to ensure correctness if the CPU is
- being run in a non-TSO coherency mode, as some non-Solaris kernels do
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of repeated <literal>dbname</literal> parameters
- in <function>PQconnectdbParams()</function> (Alex Shulgin)
- </para>
-
- <para>
- Unexpected behavior ensued if the first occurrence
- of <literal>dbname</literal> contained a connection string or URI to be
- expanded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>libpq</application> reports a suitable error message on
- unexpected socket EOF (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- Depending on kernel behavior, <application>libpq</application> might return an
- empty error string rather than something useful when the server
- unexpectedly closed the socket.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear any old error message during <function>PQreset()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- If <function>PQreset()</function> is called repeatedly, and the connection
- cannot be re-established, error messages from the failed connection
- attempts kept accumulating in the <structname>PGconn</structname>'s error
- string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle out-of-memory conditions while parsing connection
- options in <application>libpq</application> (Alex Shulgin, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array overrun in <application>ecpg</application>'s version
- of <function>ParseDateTime()</function> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>initdb</application>, give a clearer error message if a password
- file is specified but is empty (Mats Erik Andersson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <command>\s</command> command to work nicely with
- libedit, and add pager support (Stepan Rutz, Tom Lane)
- </para>
-
- <para>
- When using libedit rather than readline, <command>\s</command> printed the
- command history in a fairly unreadable encoded format, and on recent
- libedit versions might fail altogether. Fix that by printing the
- history ourselves rather than having the library do it. A pleasant
- side-effect is that the pager is used if appropriate.
- </para>
-
- <para>
- This patch also fixes a bug that caused newline encoding to be applied
- inconsistently when saving the command history with libedit.
- Multiline history entries written by older <application>psql</application>
- versions will be read cleanly with this patch, but perhaps not
- vice versa, depending on the exact libedit versions involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s expanded-mode display to work
- consistently when using <literal>border</literal> = 3
- and <literal>linestyle</literal> = <literal>ascii</literal> or <literal>unicode</literal>
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during parallel restore of a schema-only dump
- (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <literal>pg_dump --binary-upgrade</literal> on zero-column
- composite type (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix block number checking
- in <filename>contrib/pageinspect</filename>'s <function>get_raw_page()</function>
- (Tom Lane)
- </para>
-
- <para>
- The incorrect checking logic could prevent access to some pages in
- non-main relation forks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename>'s <function>pgp_sym_decrypt()</function>
- to not fail on messages whose length is 6 less than a power of 2
- (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a possible crash in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Mark Simonetti)
- </para>
-
- <para>
- <application>libxslt</application> seems to have an undocumented dependency on
- the order in which resources are freed; reorder our calls to avoid a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect incompatible OpenLDAP versions during build (Noah Misch)
- </para>
-
- <para>
- With OpenLDAP versions 2.4.24 through 2.4.31,
- inclusive, <productname>PostgreSQL</productname> backends can crash at exit.
- Raise a warning during <application>configure</application> based on the
- compile-time OpenLDAP version number, and test the crashing scenario
- in the <filename>contrib/dblink</filename> regression test.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In non-MSVC Windows builds, ensure <filename>libpq.dll</filename> is installed
- with execute permissions (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone abbreviations lists (Tom Lane)
- </para>
-
- <para>
- Add CST (China Standard Time) to our lists.
- Remove references to ADT as <quote>Arabia Daylight Time</quote>, an
- abbreviation that's been out of use since 2007; therefore, claiming
- there is a conflict with <quote>Atlantic Daylight Time</quote> doesn't seem
- especially helpful.
- Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
- (Fiji); we didn't even have them on the proper side of the date line.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a.
- </para>
-
- <para>
- The IANA timezone database has adopted abbreviations of the form
- <literal>A<replaceable>x</replaceable>ST</literal>/<literal>A<replaceable>x</replaceable>DT</literal>
- for all Australian time zones, reflecting what they believe to be
- current majority practice Down Under. These names do not conflict
- with usage elsewhere (other than ACST for Acre Summer Time, which has
- been in disuse since 1994). Accordingly, adopt these names into
- our <quote>Default</quote> timezone abbreviation set.
- The <quote>Australia</quote> abbreviation set now contains only CST, EAST,
- EST, SAST, SAT, and WST, all of which are thought to be mostly
- historical usage. Note that SAST has also been changed to be South
- Africa Standard Time in the <quote>Default</quote> abbreviation set.
- </para>
-
- <para>
- Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
- (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
- DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
- (America/Grand_Turk), and Fiji. There is a new zone
- Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
- corrections for historical (pre-1970) time zone data.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-18">
- <title>Release 9.0.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.17.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.18</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, this release corrects an index corruption problem in some GiST
- indexes. See the first changelog entry below to find out whether your
- installation has been affected and what steps you should take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.0.15,
- see <xref linkend="release-9-0-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't clear the right-link of a GiST index page while replaying
- updates from WAL (Heikki Linnakangas)
- </para>
-
- <para>
- This error could lead to transiently wrong answers from GiST index
- scans performed in Hot Standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tablespace creation WAL replay to work on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of socket creation failures on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to do the right thing when an array
- of <type>char *</type> is the target for a FETCH statement returning more
- than one row, as well as some other array-handling fixes
- (Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-17">
- <title>Release 9.0.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.16.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.17</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.15,
- see <xref linkend="release-9-0-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid race condition in checking transaction commit status during
- receipt of a <command>NOTIFY</command> message (Marko Tiikkaja)
- </para>
-
- <para>
- This prevents a scenario wherein a sufficiently fast client might
- respond to a notification before database updates made by the
- notifier have become visible to the recipient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of index endpoint probes during planning (Tom Lane)
- </para>
-
- <para>
- This change fixes a significant performance problem that occurred
- when there were many not-yet-committed rows at the end of the index,
- which is a common situation for indexes on sequentially-assigned
- values such as timestamps or sequence-generated identifiers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix test to see if hot standby connections can be allowed immediately
- after a crash (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intermittent <quote>could not reserve shared memory region</quote>
- failures on recent Windows versions (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-16">
- <title>Release 9.0.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.15.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.16</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.15,
- see <xref linkend="release-9-0-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in determining when recovery has reached consistency
- (Tomonari Katsumata, Heikki Linnakangas)
- </para>
-
- <para>
- In some cases WAL replay would mistakenly conclude that the database
- was already consistent at the start of replay, thus possibly allowing
- hot-standby queries before the database was really consistent. Other
- symptoms such as <quote>PANIC: WAL contains references to invalid
- pages</quote> were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper locking of btree index pages while replaying
- a <literal>VACUUM</literal> operation in hot-standby mode (Andres Freund,
- Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This error could result in <quote>PANIC: WAL contains references to
- invalid pages</quote> failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow keywords that are type names to be used in lists of roles
- (Stephen Frost)
- </para>
-
- <para>
- A previous patch allowed such keywords to be used without quoting
- in places such as role identifiers; but it missed cases where a
- list of role identifiers was permitted, such as <literal>DROP ROLE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using the deprecated <literal>dllwrap</literal> tool in Cygwin builds
- (Marco Atzeri)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-15">
- <title>Release 9.0.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.14.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.15</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, this release corrects a number of potential data corruption
- issues. See the first two changelog entries below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.0.13,
- see <xref linkend="release-9-0-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. Users
- upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but
- all later versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initialization of <filename>pg_clog</filename> and <filename>pg_subtrans</filename>
- during hot standby startup (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- This bug can cause data loss on standby servers at the moment they
- start to accept hot-standby queries, by marking committed transactions
- as uncommitted. The likelihood of such corruption is small unless, at
- the time of standby startup, the primary server has executed many
- updating transactions since its last checkpoint. Symptoms include
- missing rows, rows that should have been deleted being still visible,
- and obsolete versions of updated rows being still visible alongside
- their newer versions.
- </para>
-
- <para>
- This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
- Standby servers that have only been running earlier releases are not
- at risk. It's recommended that standby servers that have ever run any
- of the buggy releases be re-cloned from the primary (e.g., with a new
- base backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Truncate <filename>pg_multixact</filename> contents during WAL replay
- (Andres Freund)
- </para>
-
- <para>
- This avoids ever-increasing disk space consumption in standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-14">
- <title>Release 9.0.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.13.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.14</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.13,
- see <xref linkend="release-9-0-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent corruption of multi-byte characters when attempting to
- case-fold identifiers (Andrew Dunstan)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> case-folds non-ASCII characters only
- when using a single-byte server encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checkpoint memory leak in background writer when <literal>wal_level =
- hot_standby</literal> (Naoya Anzai)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory overcommit bug when <varname>work_mem</varname> is using more
- than 24GB of memory (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible SSL state corruption in threaded libpq applications
- (Nick Phillips, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly compute row estimates for boolean columns containing many NULL
- values (Andrew Gierth)
- </para>
-
- <para>
- Previously tests like <literal>col IS NOT TRUE</literal> and <literal>col IS
- NOT FALSE</literal> did not properly factor in NULL values when estimating
- plan costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent pushing down <literal>WHERE</literal> clauses into unsafe
- <literal>UNION/INTERSECT</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Subqueries of a <literal>UNION</literal> or <literal>INTERSECT</literal> that
- contain set-returning functions or volatile functions in their
- <literal>SELECT</literal> lists could be improperly optimized, leading to
- run-time errors or incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare case of <quote>failed to locate grouping columns</quote>
- planner failure (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view dumping code's handling of dropped columns in referenced
- tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly record index comments created using <literal>UNIQUE</literal>
- and <literal>PRIMARY KEY</literal> syntax (Andres Freund)
- </para>
-
- <para>
- This fixes a parallel <application>pg_restore</application> failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REINDEX TABLE</command> and <command>REINDEX DATABASE</command>
- to properly revalidate constraints and mark invalidated indexes as
- valid (Noah Misch)
- </para>
-
- <para>
- <command>REINDEX INDEX</command> has always worked properly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during concurrent <command>CREATE INDEX
- CONCURRENTLY</command> operations (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>regexp_matches()</function> handling of zero-length matches
- (Jeevan Chalke)
- </para>
-
- <para>
- Previously, zero-length matches like '^' could return too many matches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash for overly-complex regular expressions (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression match failures for back references combined with
- non-greedy quantifiers (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER DEFAULT PRIVILEGES</command> to operate on schemas
- without requiring CREATE permission (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Loosen restriction on keywords used in queries (Tom Lane)
- </para>
-
- <para>
- Specifically, lessen keyword restrictions for role names, language
- names, <command>EXPLAIN</command> and <command>COPY</command> options, and
- <command>SET</command> values. This allows <literal>COPY ... (FORMAT
- BINARY)</literal> to work as expected; previously <literal>BINARY</literal> needed
- to be quoted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgp_pub_decrypt()</function> so it works for secret keys with
- passwords (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM ANALYZE</command> still runs the ANALYZE phase
- if its attempt to truncate the file is cancelled due to lock conflicts
- (Kevin Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible failure when performing transaction control commands (e.g
- ROLLBACK) in prepared queries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that floating-point data input accepts standard spellings
- of <quote>infinity</quote> on all platforms (Tom Lane)
- </para>
-
- <para>
- The C99 standard says that allowable spellings are <literal>inf</literal>,
- <literal>+inf</literal>, <literal>-inf</literal>, <literal>infinity</literal>,
- <literal>+infinity</literal>, and <literal>-infinity</literal>. Make sure we
- recognize these even if the platform's <function>strtod</function> function
- doesn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Expand ability to compare rows to records and arrays (Rafal Rzepecki,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013d
- for DST law changes in Israel, Morocco, Palestine, and Paraguay.
- Also, historical zone data corrections for Macquarie Island.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-13">
- <title>Release 9.0.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-04-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.12.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.13</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, this release corrects several errors in management of GiST
- indexes. After installing this update, it is advisable to
- <command>REINDEX</command> any GiST indexes that meet one or more of the
- conditions described below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix insecure parsing of server command-line switches (Mitsumasa
- Kondo, Kyotaro Horiguchi)
- </para>
-
- <para>
- A connection request containing a database name that begins with
- <quote><literal>-</literal></quote> could be crafted to damage or destroy
- files within the server's data directory, even if the request is
- eventually rejected. (CVE-2013-1899)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reset OpenSSL randomness state in each postmaster child process
- (Marko Kreen)
- </para>
-
- <para>
- This avoids a scenario wherein random numbers generated by
- <filename>contrib/pgcrypto</filename> functions might be relatively easy for
- another database user to guess. The risk is only significant when
- the postmaster is configured with <varname>ssl</varname> = <literal>on</literal>
- but most connections don't use SSL encryption. (CVE-2013-1900)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GiST indexes to not use <quote>fuzzy</quote> geometric comparisons when
- it's not appropriate to do so (Alexander Korotkov)
- </para>
-
- <para>
- The core geometric types perform comparisons using <quote>fuzzy</quote>
- equality, but <function>gist_box_same</function> must do exact comparisons,
- else GiST indexes using it might become inconsistent. After installing
- this update, users should <command>REINDEX</command> any GiST indexes on
- <type>box</type>, <type>polygon</type>, <type>circle</type>, or <type>point</type>
- columns, since all of these use <function>gist_box_same</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous range-union and penalty logic in GiST indexes that use
- <filename>contrib/btree_gist</filename> for variable-width data types, that is
- <type>text</type>, <type>bytea</type>, <type>bit</type>, and <type>numeric</type>
- columns (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in useless
- index bloat. Users are advised to <command>REINDEX</command> such indexes
- after installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in GiST page splitting code for multi-column indexes
- (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in indexes
- that are unnecessarily inefficient to search. Users are advised to
- <command>REINDEX</command> multi-column GiST indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>gist_point_consistent</function>
- to handle fuzziness consistently (Alexander Korotkov)
- </para>
-
- <para>
- Index scans on GiST indexes on <type>point</type> columns would sometimes
- yield results different from a sequential scan, because
- <function>gist_point_consistent</function> disagreed with the underlying
- operator code about whether to do comparisons exactly or fuzzily.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer leak in WAL replay (Heikki Linnakangas)
- </para>
-
- <para>
- This bug could result in <quote>incorrect local pin count</quote> errors
- during replay, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in <command>DELETE RETURNING</command> (Tom Lane)
- </para>
-
- <para>
- Under the right circumstances, <command>DELETE RETURNING</command> could
- attempt to fetch data from a shared buffer that the current process
- no longer has any pin on. If some other process changed the buffer
- meanwhile, this would lead to garbage <literal>RETURNING</literal> output, or
- even a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite-loop risk in regular expression compilation (Tom Lane,
- Don Porter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential null-pointer dereference in regular expression compilation
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> to use ASCII-only case-folding rules where
- appropriate (Tom Lane)
- </para>
-
- <para>
- This fixes misbehavior of some template patterns that should be
- locale-independent, but mishandled <quote><literal>I</literal></quote> and
- <quote><literal>i</literal></quote> in Turkish locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logic error when a single transaction does <command>UNLISTEN</command>
- then <command>LISTEN</command> (Tom Lane)
- </para>
-
- <para>
- The session wound up not listening for notify events at all, though it
- surely should listen in this case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove useless <quote>picksplit doesn't support secondary split</quote> log
- messages (Josh Hansen, Tom Lane)
- </para>
-
- <para>
- This message seems to have been added in expectation of code that was
- never written, and probably never will be, since GiST's default
- handling of secondary splits is actually pretty good. So stop nagging
- end users about it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to send a session's last few transaction
- commit/abort counts to the statistics collector (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Eliminate memory leaks in PL/Perl's <function>spi_prepare()</function> function
- (Alex Hunsaker, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to handle database names containing
- <quote><literal>=</literal></quote> correctly (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <application>pg_dump</application> when an incorrect connection
- string is given (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore invalid indexes in <application>pg_dump</application> and
- <application>pg_upgrade</application> (Michael Paquier, Bruce Momjian)
- </para>
-
- <para>
- Dumping invalid indexes can cause problems at restore time, for example
- if the reason the index creation failed was because it tried to enforce
- a uniqueness condition not satisfied by the table's data. Also, if the
- index creation is in fact still in progress, it seems reasonable to
- consider it to be an uncommitted DDL change, which
- <application>pg_dump</application> wouldn't be expected to dump anyway.
- <application>pg_upgrade</application> now also skips invalid indexes rather than
- failing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s <function>similarity()</function> function
- to return zero for trigram-less strings (Tom Lane)
- </para>
-
- <para>
- Previously it returned <literal>NaN</literal> due to internal division by zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013b
- for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
- Russian areas. Also, historical zone data corrections for numerous
- places.
- </para>
-
- <para>
- Also, update the time zone abbreviation files for recent changes in
- Russia and elsewhere: <literal>CHOT</literal>, <literal>GET</literal>,
- <literal>IRKT</literal>, <literal>KGT</literal>, <literal>KRAT</literal>, <literal>MAGT</literal>,
- <literal>MAWT</literal>, <literal>MSK</literal>, <literal>NOVT</literal>, <literal>OMST</literal>,
- <literal>TKT</literal>, <literal>VLAT</literal>, <literal>WST</literal>, <literal>YAKT</literal>,
- <literal>YEKT</literal> now follow their current meanings, and
- <literal>VOLT</literal> (Europe/Volgograd) and <literal>MIST</literal>
- (Antarctica/Macquarie) are added to the default abbreviations list.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-12">
- <title>Release 9.0.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-02-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.11.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.12</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent execution of <function>enum_recv</function> from SQL (Tom Lane)
- </para>
-
- <para>
- The function was misdeclared, allowing a simple SQL command to crash the
- server. In principle an attacker might be able to use it to examine the
- contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP)
- for reporting this issue. (CVE-2013-0255)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple problems in detection of when a consistent database
- state has been reached during WAL replay (Fujii Masao, Heikki
- Linnakangas, Simon Riggs, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update minimum recovery point when truncating a relation file (Heikki
- Linnakangas)
- </para>
-
- <para>
- Once data has been discarded, it's no longer safe to stop recovery at
- an earlier point in the timeline.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
- </para>
-
- <para>
- The need to cancel conflicting hot-standby queries would sometimes be
- missed, allowing those queries to see inconsistent data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL grammar to allow subscripting or field selection from a
- sub-SELECT result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems with autovacuum truncation in busy workloads
- (Jan Wieck)
- </para>
-
- <para>
- Truncation of empty pages at the end of a table requires exclusive
- lock, but autovacuum was coded to fail (and release the table lock)
- when there are conflicting lock requests. Under load, it is easily
- possible that truncation would never occur, resulting in table bloat.
- Fix by performing a partial truncation, releasing the lock, then
- attempting to re-acquire the lock and continue. This fix also greatly
- reduces the average time before autovacuum releases the lock after a
- conflicting request arrives.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against race conditions when scanning
- <structname>pg_tablespace</structname> (Stephen Frost, Tom Lane)
- </para>
-
- <para>
- <command>CREATE DATABASE</command> and <command>DROP DATABASE</command> could
- misbehave if there were concurrent updates of
- <structname>pg_tablespace</structname> entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>DROP OWNED</command> from trying to drop whole databases or
- tablespaces (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- For safety, ownership of these objects must be reassigned, not dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- implementation (Andres Freund)
- </para>
-
- <para>
- In installations that have existed for more than <link
- linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</varname></link>
- transactions, this mistake prevented autovacuum from using partial-table
- scans, so that a full-table scan would always happen instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misbehavior when a <symbol>RowExpr</symbol> or <symbol>XmlExpr</symbol>
- is parse-analyzed twice (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This mistake could be user-visible in contexts such as
- <literal>CREATE TABLE LIKE INCLUDING INDEXES</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve defenses against integer overflow in hashtable sizing
- calculations (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range dates in <function>to_date()</function> (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that non-ASCII prompt strings are translated to the correct
- code page on Windows (Alexander Law, Noah Misch)
- </para>
-
- <para>
- This bug affected <application>psql</application> and some other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application>'s <command>\?</command> command
- when not connected to a database (Meng Qingzhong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to deal with invalid indexes safely
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <application>libpq</application>'s
- <function>PQprintTuples</function> (Xi Wang)
- </para>
-
- <para>
- This ancient function is not used anywhere by
- <productname>PostgreSQL</productname> itself, but it might still be used by some
- client code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> use translated messages properly
- (Chen Huajun)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly install <application>ecpg_compat</application> and
- <application>pgtypes</application> libraries on MSVC (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include our version of <function>isinf()</function> in
- <application>libecpg</application> if it's not provided by the system
- (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange configure's tests for supplied functions so it is not
- fooled by bogus exports from libedit/libreadline (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure Windows build number increases over time (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgxs</application> build executables with the right
- <literal>.exe</literal> suffix when cross-compiling for Windows
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new timezone abbreviation <literal>FET</literal> (Tom Lane)
- </para>
-
- <para>
- This is now used in some eastern-European time zones.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-11">
- <title>Release 9.0.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-12-06</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.10.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.11</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs associated with <command>CREATE INDEX
- CONCURRENTLY</command> (Andres Freund, Tom Lane)
- </para>
-
- <para>
- Fix <command>CREATE INDEX CONCURRENTLY</command> to use
- in-place updates when changing the state of an index's
- <structname>pg_index</structname> row. This prevents race conditions that could
- cause concurrent sessions to miss updating the target index, thus
- resulting in corrupt concurrently-created indexes.
- </para>
-
- <para>
- Also, fix various other operations to ensure that they ignore
- invalid indexes resulting from a failed <command>CREATE INDEX
- CONCURRENTLY</command> command. The most important of these is
- <command>VACUUM</command>, because an auto-vacuum could easily be launched
- on the table before corrective action can be taken to fix or remove
- the invalid index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer locking during WAL replay (Tom Lane)
- </para>
-
- <para>
- The WAL replay code was insufficiently careful about locking buffers
- when replaying WAL records that affect more than one page. This could
- result in hot standby queries transiently seeing inconsistent states,
- resulting in wrong answers or unexpected failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix an error in WAL generation logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in index corruption, if a torn-page failure occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly remove startup process's virtual XID lock when promoting a
- hot standby server to normal running (Simon Riggs)
- </para>
-
- <para>
- This oversight could prevent subsequent execution of certain
- operations such as <command>CREATE INDEX CONCURRENTLY</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid bogus <quote>out-of-sequence timeline ID</quote> errors in standby
- mode (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent the postmaster from launching new child processes after it's
- received a shutdown signal (Tom Lane)
- </para>
-
- <para>
- This mistake could result in shutdown taking longer than it should, or
- even never completing at all without additional user action.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corruption of internal hash tables when out of memory
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of non-strict equivalence clauses above outer joins
- (Tom Lane)
- </para>
-
- <para>
- The planner could derive incorrect constraints from a clause equating
- a non-strict construct to something else, for example
- <literal>WHERE COALESCE(foo, 0) = 0</literal>
- when <literal>foo</literal> is coming from the nullable side of an outer join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's ability to prove exclusion constraints from
- equivalence classes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix partial-row matching in hashed subplans to handle cross-type cases
- correctly (Tom Lane)
- </para>
-
- <para>
- This affects multicolumn <literal>NOT IN</literal> subplans, such as
- <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</literal>
- when for instance <literal>b</literal> and <literal>y</literal> are <type>int4</type>
- and <type>int8</type> respectively. This mistake led to wrong answers
- or crashes depending on the specific datatypes involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Acquire buffer lock when re-fetching the old tuple for an
- <literal>AFTER ROW UPDATE/DELETE</literal> trigger (Andres Freund)
- </para>
-
- <para>
- In very unusual circumstances, this oversight could result in passing
- incorrect data to the precheck logic for a foreign-key enforcement
- trigger. That could result in a crash, or in an incorrect decision
- about whether to fire the trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to handle inherited check
- constraints properly (Pavan Deolasee)
- </para>
-
- <para>
- This worked correctly in pre-8.4 releases, and now works correctly
- in 8.4 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle grants on tablespaces
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore incorrect <structname>pg_attribute</structname> entries for system
- columns for views (Tom Lane)
- </para>
-
- <para>
- Views do not have any system columns. However, we forgot to
- remove such entries when converting a table to a view. That's fixed
- properly for 9.3 and later, but in previous branches we need to defend
- against existing mis-converted views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rule printing to dump <literal>INSERT INTO <replaceable>table</replaceable>
- DEFAULT VALUES</literal> correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against stack overflow when there are too many
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> clauses
- in a query (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent platform-dependent failures when dividing the minimum possible
- integer value by -1 (Xi Wang, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible access past end of string in date parsing
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to advance XID epoch if XID wraparound happens during a
- checkpoint and <varname>wal_level</varname> is <literal>hot_standby</literal>
- (Tom Lane, Andres Freund)
- </para>
-
- <para>
- While this mistake had no particular impact on
- <productname>PostgreSQL</productname> itself, it was bad for
- applications that rely on <function>txid_current()</function> and related
- functions: the TXID value would appear to go backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Produce an understandable error message if the length of the path name
- for a Unix-domain socket exceeds the platform-specific limit
- (Tom Lane, Andrew Dunstan)
- </para>
-
- <para>
- Formerly, this would result in something quite unhelpful, such as
- <quote>Non-recoverable failure in name resolution</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when sending composite column values to the client
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> more robust about reading the
- <filename>postmaster.pid</filename> file (Heikki Linnakangas)
- </para>
-
- <para>
- Fix race conditions and possible file descriptor leakage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application> if incorrectly-encoded data
- is presented and the <varname>client_encoding</varname> setting is a
- client-only encoding, such as SJIS (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in the <filename>restore.sql</filename> script emitted by
- <application>pg_dump</application> in <literal>tar</literal> output format (Tom Lane)
- </para>
-
- <para>
- The script would fail outright on tables whose names include
- upper-case characters. Also, make the script capable of restoring
- data in <option>--inserts</option> mode as well as the regular COPY mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to accept POSIX-conformant
- <literal>tar</literal> files (Brian Weaver, Tom Lane)
- </para>
-
- <para>
- The original coding of <application>pg_dump</application>'s <literal>tar</literal>
- output mode produced files that are not fully conformant with the
- POSIX standard. This has been corrected for version 9.3. This
- patch updates previous branches so that they will accept both the
- incorrect and the corrected formats, in hopes of avoiding
- compatibility problems when 9.3 comes out.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_resetxlog</application> to locate <filename>postmaster.pid</filename>
- correctly when given a relative path to the data directory (Tom Lane)
- </para>
-
- <para>
- This mistake could lead to <application>pg_resetxlog</application> not noticing
- that there is an active postmaster using the data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s <function>lo_import()</function> and
- <function>lo_export()</function> functions to report file I/O errors properly
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of nested structure pointer
- variables (Muhammad Usama)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s <function>ecpg_get_data</function> function to
- handle arrays properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pageinspect</filename>'s btree page inspection
- functions take buffer locks while examining pages (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> support for building loadable modules on AIX
- (Tom Lane)
- </para>
-
- <para>
- Building modules outside the original source tree didn't work on AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012j
- for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
- Samoa, and portions of Brazil.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-10">
- <title>Release 9.0.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.9.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.10</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix planner's assignment of executor parameters, and fix executor's
- rescan logic for CTE plan nodes (Tom Lane)
- </para>
-
- <para>
- These errors could result in wrong answers from queries that scan the
- same <literal>WITH</literal> subquery multiple times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
- Robert Haas, Tom Lane)
- </para>
-
- <para>
- Multi-column GiST indexes might suffer unexpected bloat due to this
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cascading privilege revoke to stop if privileges are still held
- (Tom Lane)
- </para>
-
- <para>
- If we revoke a grant option from some role <replaceable>X</replaceable>, but
- <replaceable>X</replaceable> still holds that option via a grant from someone
- else, we should not recursively revoke the corresponding privilege
- from role(s) <replaceable>Y</replaceable> that <replaceable>X</replaceable> had granted it
- to.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error messages for Hot Standby misconfiguration errors
- (Gurjeet Singh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>SIGFPE</literal> when PL/Perl is in use (Andres Freund)
- </para>
-
- <para>
- Perl resets the process's <literal>SIGFPE</literal> handler to
- <literal>SIG_IGN</literal>, which could result in crashes later on. Restore
- the normal Postgres signal handler after initializing PL/Perl.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Perl from crashing if a recursive PL/Perl function is
- redefined while being executed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around possible misoptimization in PL/Perl (Tom Lane)
- </para>
-
- <para>
- Some Linux distributions contain an incorrect version of
- <filename>pthread.h</filename> that results in incorrect compiled code in
- PL/Perl, leading to crashes if a PL/Perl function calls another one
- that throws an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s handling of line endings on Windows
- (Andrew Dunstan)
- </para>
-
- <para>
- Previously, <application>pg_upgrade</application> might add or remove carriage
- returns in places such as function bodies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, make <application>pg_upgrade</application> use backslash path
- separators in the scripts it emits (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012f
- for DST law changes in Fiji
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-9">
- <title>Release 9.0.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-08-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.8.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.9</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via XML entity references
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <function>xml_parse()</function> would attempt to fetch external files or
- URLs as needed to resolve DTD and entity references in an XML value,
- thus allowing unprivileged database users to attempt to fetch data
- with the privileges of the database server. While the external data
- wouldn't get returned directly to the user, portions of it could be
- exposed in error messages if the data didn't parse as valid XML; and
- in any case the mere ability to check existence of a file might be
- useful to an attacker. (CVE-2012-3489)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Peter Eisentraut)
- </para>
-
- <para>
- <application>libxslt</application> offers the ability to read and write both
- files and URLs through stylesheet commands, thus allowing
- unprivileged database users to both read and write data with the
- privileges of the database server. Disable that through proper use
- of <application>libxslt</application>'s security options. (CVE-2012-3488)
- </para>
-
- <para>
- Also, remove <function>xslt_process()</function>'s ability to fetch documents
- and stylesheets from external files/URLs. While this was a
- documented <quote>feature</quote>, it was long regarded as a bad idea.
- The fix for CVE-2012-3489 broke that capability, and rather than
- expend effort on trying to fix it, we're just going to summarily
- remove it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent too-early recycling of btree index pages (Noah Misch)
- </para>
-
- <para>
- When we allowed read-only transactions to skip assigning XIDs, we
- introduced the possibility that a deleted btree page could be
- recycled while a read-only transaction was still in flight to it.
- This would result in incorrect index search results. The probability
- of such an error occurring in the field seems very low because of the
- timing requirements, but nonetheless it should be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
- </para>
-
- <para>
- If <command>ALTER SEQUENCE</command> was executed on a freshly created or
- reset sequence, and then precisely one <function>nextval()</function> call
- was made on it, and then the server crashed, WAL replay would restore
- the sequence to a state in which it appeared that no
- <function>nextval()</function> had been done, thus allowing the first
- sequence value to be returned again by the next
- <function>nextval()</function> call. In particular this could manifest for
- <type>serial</type> columns, since creation of a serial column's sequence
- includes an <command>ALTER SEQUENCE OWNED BY</command> step.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>txid_current()</function> to report the correct epoch when not
- in hot standby (Heikki Linnakangas)
- </para>
-
- <para>
- This fixes a regression introduced in the previous minor release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in startup of Hot Standby when a master transaction has many
- subtransactions (Andres Freund)
- </para>
-
- <para>
- This mistake led to failures reported as <quote>out-of-order XID
- insertion in KnownAssignedXids</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the <filename>backup_label</filename> file is fsync'd after
- <function>pg_start_backup()</function> (Dave Kerr)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout handling in walsender processes (Tom Lane)
- </para>
-
- <para>
- WAL sender background processes neglected to establish a
- <systemitem>SIGALRM</systemitem> handler, meaning they would wait forever in
- some corner cases where a timeout ought to happen.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Back-patch 9.1 improvement to compress the fsync request queue
- (Robert Haas)
- </para>
-
- <para>
- This improves performance during checkpoints. The 9.1 change
- has now seen enough field testing to seem safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>LISTEN</literal>/<literal>NOTIFY</literal> to cope better with I/O
- problems, such as out of disk space (Tom Lane)
- </para>
-
- <para>
- After a write failure, all subsequent attempts to send more
- <literal>NOTIFY</literal> messages would fail with messages like
- <quote>Could not read from file "pg_notify/<replaceable>nnnn</replaceable>" at
- offset <replaceable>nnnnn</replaceable>: Success</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only allow autovacuum to be auto-canceled by a directly blocked
- process (Tom Lane)
- </para>
-
- <para>
- The original coding could allow inconsistent behavior in some cases;
- in particular, an autovacuum could get canceled after less than
- <literal>deadlock_timeout</literal> grace period.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve logging of autovacuum cancels (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix log collector so that <literal>log_truncate_on_rotation</literal> works
- during the very first log rotation after server start (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>WITH</literal> attached to a nested set operation
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a whole-row reference to a subquery doesn't include any
- extra <literal>GROUP BY</literal> or <literal>ORDER BY</literal> columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow copying whole-row references in <literal>CHECK</literal>
- constraints and index definitions during <command>CREATE TABLE</command>
- (Tom Lane)
- </para>
-
- <para>
- This situation can arise in <command>CREATE TABLE</command> with
- <literal>LIKE</literal> or <literal>INHERITS</literal>. The copied whole-row
- variable was incorrectly labeled with the row type of the original
- table not the new one. Rejecting the case seems reasonable for
- <literal>LIKE</literal>, since the row types might well diverge later. For
- <literal>INHERITS</literal> we should ideally allow it, with an implicit
- coercion to the parent table's row type; but that will require more
- work than seems safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <literal>ARRAY(SELECT ...)</literal> subqueries (Heikki
- Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extraction of common prefixes from regular expressions (Tom Lane)
- </para>
-
- <para>
- The code could get confused by quantified parenthesized
- subexpressions, such as <literal>^(foo)?bar</literal>. This would lead to
- incorrect index optimization of searches for such patterns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs with parsing signed
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable> and
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable><literal>:</literal><replaceable>ss</replaceable>
- fields in <type>interval</type> constants (Amit Kapila, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use Postgres' encoding conversion functions, not Python's, when
- converting a Python Unicode string to the server encoding in
- PL/Python (Jan Urbanski)
- </para>
-
- <para>
- This avoids some corner-case problems, notably that Python doesn't
- support all the encodings Postgres does. A notable functional change
- is that if the server encoding is SQL_ASCII, you will get the UTF-8
- representation of the string; formerly, any non-ASCII characters in
- the string would result in an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mapping of PostgreSQL encodings to Python encodings in PL/Python
- (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report errors properly in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012e
- for DST law changes in Morocco and Tokelau
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-8">
- <title>Release 9.0.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-06-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.7.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.8</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect password transformation in
- <filename>contrib/pgcrypto</filename>'s DES <function>crypt()</function> function
- (Solar Designer)
- </para>
-
- <para>
- If a password string contained the byte value <literal>0x80</literal>, the
- remainder of the password was ignored, causing the password to be much
- weaker than it appeared. With this fix, the rest of the string is
- properly included in the DES hash. Any stored password values that are
- affected by this bug will thus no longer match, so the stored values may
- need to be updated. (CVE-2012-2143)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore <literal>SECURITY DEFINER</literal> and <literal>SET</literal> attributes for
- a procedural language's call handler (Tom Lane)
- </para>
-
- <para>
- Applying such attributes to a call handler could crash the server.
- (CVE-2012-2655)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow numeric timezone offsets in <type>timestamp</type> input to be up to
- 16 hours away from UTC (Tom Lane)
- </para>
-
- <para>
- Some historical time zones have offsets larger than 15 hours, the
- previous limit. This could result in dumped data values being rejected
- during reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timestamp conversion to cope when the given time is exactly the
- last DST transition time for the current timezone (Tom Lane)
- </para>
-
- <para>
- This oversight has been there a long time, but was not noticed
- previously because most DST-using zones are presumed to have an
- indefinite sequence of future DST transitions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>text</type> to <type>name</type> and <type>char</type> to <type>name</type>
- casts to perform string truncation correctly in multibyte encodings
- (Karl Schnaitter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory copying bug in <function>to_tsquery()</function> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>txid_current()</function> reports the correct epoch when
- executed in hot standby (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's handling of outer PlaceHolderVars within subqueries (Tom
- Lane)
- </para>
-
- <para>
- This bug concerns sub-SELECTs that reference variables coming from the
- nullable side of an outer join of the surrounding query.
- In 9.1, queries affected by this bug would fail with <quote>ERROR:
- Upper-level PlaceHolderVar found where not expected</quote>. But in 9.0 and
- 8.4, you'd silently get possibly-wrong answers, since the value
- transmitted into the subquery wouldn't go to null when it should.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow session startup when <structname>pg_attribute</structname> is very large
- (Tom Lane)
- </para>
-
- <para>
- If <structname>pg_attribute</structname> exceeds one-fourth of
- <varname>shared_buffers</varname>, cache rebuilding code that is sometimes
- needed during session start would trigger the synchronized-scan logic,
- causing it to take many times longer than normal. The problem was
- particularly acute if many new sessions were starting at once.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure sequential scans check for query cancel reasonably often (Merlin
- Moncure)
- </para>
-
- <para>
- A scan encountering many consecutive pages that contain no live tuples
- would not respond to interrupts meanwhile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the Windows implementation of <function>PGSemaphoreLock()</function>
- clears <varname>ImmediateInterruptOK</varname> before returning (Tom Lane)
- </para>
-
- <para>
- This oversight meant that a query-cancel interrupt received later
- in the same query could be accepted at an unsafe time, with
- unpredictable but not good consequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show whole-row variables safely when printing views or rules
- (Abbas Butt, Tom Lane)
- </para>
-
- <para>
- Corner cases involving ambiguous names (that is, the name could be
- either a table or column name of the query) were printed in an
- ambiguous way, risking that the view or rule would be interpreted
- differently after dump and reload. Avoid the ambiguous case by
- attaching a no-op cast.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>COPY FROM</command> to properly handle null marker strings that
- correspond to invalid encoding (Tom Lane)
- </para>
-
- <para>
- A null marker string such as <literal>E'\\0'</literal> should work, and did
- work in the past, but the case got broken in 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure autovacuum worker processes perform stack depth checking
- properly (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, infinite recursion in a function invoked by
- auto-<command>ANALYZE</command> could crash worker processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to not lose log coherency under high load (Andrew
- Dunstan)
- </para>
-
- <para>
- The collector previously could fail to reassemble large messages if it
- got too busy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to ensure it will restart file rotation
- after receiving <systemitem>SIGHUP</systemitem> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL replay logic for GIN indexes to not fail if the index was
- subsequently dropped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in PL/pgSQL's <command>RETURN NEXT</command> command (Joe
- Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's <command>GET DIAGNOSTICS</command> command when the target
- is the function's first variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential access off the end of memory in <application>psql</application>'s
- expanded display (<command>\x</command>) mode (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several performance problems in <application>pg_dump</application> when
- the database contains many objects (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> could get very slow if the database contained
- many schemas, or if many objects are in dependency loops, or if there
- are many owned sequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> for the case that a database stored in a
- non-default tablespace contains a table in the cluster's default
- tablespace (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, fix rare memory leaks and possible overwrite
- of one byte after the <structname>sqlca_t</structname> structure (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s <function>dblink_exec()</function> to not leak
- temporary database connections upon error (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to report the correct connection name in
- error messages (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/vacuumlo</filename> to use multiple transactions when
- dropping many large objects (Tim Lewis, Robert Haas, Tom Lane)
- </para>
-
- <para>
- This change avoids exceeding <varname>max_locks_per_transaction</varname> when
- many objects need to be dropped. The behavior can be adjusted with the
- new <literal>-l</literal> (limit) option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012c
- for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
- Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
- also historical corrections for Canada.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-7">
- <title>Release 9.0.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-02-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.6.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.7</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.6,
- see <xref linkend="release-9-0-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Require execute permission on the trigger function for
- <command>CREATE TRIGGER</command> (Robert Haas)
- </para>
-
- <para>
- This missing check could allow another user to execute a trigger
- function with forged input data, by installing it on a table he owns.
- This is only of significance for trigger functions marked
- <literal>SECURITY DEFINER</literal>, since otherwise trigger functions run
- as the table owner anyway. (CVE-2012-0866)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove arbitrary limitation on length of common name in SSL
- certificates (Heikki Linnakangas)
- </para>
-
- <para>
- Both <application>libpq</application> and the server truncated the common name
- extracted from an SSL certificate at 32 bytes. Normally this would
- cause nothing worse than an unexpected verification failure, but there
- are some rather-implausible scenarios in which it might allow one
- certificate holder to impersonate another. The victim would have to
- have a common name exactly 32 bytes long, and the attacker would have
- to persuade a trusted CA to issue a certificate in which the common
- name has that string as a prefix. Impersonating a server would also
- require some additional exploit to redirect client connections.
- (CVE-2012-0867)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert newlines to spaces in names written in <application>pg_dump</application>
- comments (Robert Haas)
- </para>
-
- <para>
- <application>pg_dump</application> was incautious about sanitizing object names
- that are emitted within SQL comments in its output script. A name
- containing a newline would at least render the script syntactically
- incorrect. Maliciously crafted object names could present a SQL
- injection risk when the script is reloaded. (CVE-2012-0868)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree index corruption from insertions concurrent with vacuuming
- (Tom Lane)
- </para>
-
- <para>
- An index page split caused by an insertion could sometimes cause a
- concurrently-running <command>VACUUM</command> to miss removing index entries
- that it should remove. After the corresponding table rows are removed,
- the dangling index entries would cause errors (such as <quote>could not
- read block N in file ...</quote>) or worse, silently wrong query results
- after unrelated rows are re-inserted at the now-free table locations.
- This bug has been present since release 8.2, but occurs so infrequently
- that it was not diagnosed until now. If you have reason to suspect
- that it has happened in your database, reindexing the affected index
- will fix things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix transient zeroing of shared buffers during WAL replay (Tom Lane)
- </para>
-
- <para>
- The replay logic would sometimes zero and refill a shared buffer, so
- that the contents were transiently invalid. In hot standby mode this
- can result in a query that's executing in parallel seeing garbage data.
- Various symptoms could result from that, but the most common one seems
- to be <quote>invalid memory alloc request size</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster to attempt restart after a hot-standby crash (Tom Lane)
- </para>
-
- <para>
- A logic error caused the postmaster to terminate, rather than attempt
- to restart the cluster, if any backend process crashed while operating
- in hot standby mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CLUSTER</command>/<command>VACUUM FULL</command> handling of toast
- values owned by recently-updated rows (Tom Lane)
- </para>
-
- <para>
- This oversight could lead to <quote>duplicate key value violates unique
- constraint</quote> errors being reported against the toast table's index
- during one of these commands.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update per-column permissions, not only per-table permissions, when
- changing table owner (Tom Lane)
- </para>
-
- <para>
- Failure to do this meant that any previously granted column permissions
- were still shown as having been granted by the old owner. This meant
- that neither the new owner nor a superuser could revoke the
- now-untraceable-to-table-owner permissions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support foreign data wrappers and foreign servers in
- <command>REASSIGN OWNED</command> (Alvaro Herrera)
- </para>
-
- <para>
- This command failed with <quote>unexpected classid</quote> errors if
- it needed to change the ownership of any such objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-existent values for some settings in <command>ALTER
- USER/DATABASE SET</command> (Heikki Linnakangas)
- </para>
-
- <para>
- Allow <varname>default_text_search_config</varname>,
- <varname>default_tablespace</varname>, and <varname>temp_tablespaces</varname> to be
- set to names that are not known. This is because they might be known
- in another database where the setting is intended to be used, or for the
- tablespace cases because the tablespace might not be created yet. The
- same issue was previously recognized for <varname>search_path</varname>, and
- these settings now act like that one.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing when we have problems deleting table files post-commit
- (Tom Lane)
- </para>
-
- <para>
- Dropping a table should lead to deleting the underlying disk files only
- after the transaction commits. In event of failure then (for instance,
- because of wrong file permissions) the code is supposed to just emit a
- warning message and go on, since it's too late to abort the
- transaction. This logic got broken as of release 8.4, causing such
- situations to result in a PANIC and an unrestartable database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recover from errors occurring during WAL replay of <command>DROP
- TABLESPACE</command> (Tom Lane)
- </para>
-
- <para>
- Replay will attempt to remove the tablespace's directories, but there
- are various reasons why this might fail (for example, incorrect
- ownership or permissions on those directories). Formerly the replay
- code would panic, rendering the database unrestartable without manual
- intervention. It seems better to log the problem and continue, since
- the only consequence of failure to remove the directories is some
- wasted disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in logging AccessExclusiveLocks for hot standby
- (Simon Riggs)
- </para>
-
- <para>
- Sometimes a lock would be logged as being held by <quote>transaction
- zero</quote>. This is at least known to produce assertion failures on
- slave servers, and might be the cause of more serious problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track the OID counter correctly during WAL replay, even when it wraps
- around (Tom Lane)
- </para>
-
- <para>
- Previously the OID counter would remain stuck at a high value until the
- system exited replay mode. The practical consequences of that are
- usually nil, but there are scenarios wherein a standby server that's
- been promoted to master might take a long time to advance the OID
- counter to a reasonable value once values are needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent emitting misleading <quote>consistent recovery state reached</quote>
- log message at the beginning of crash recovery (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initial value of
- <structname>pg_stat_replication</structname>.<structfield>replay_location</structfield>
- (Fujii Masao)
- </para>
-
- <para>
- Previously, the value shown would be wrong until at least one WAL
- record had been replayed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression back-references with <literal>*</literal> attached
- (Tom Lane)
- </para>
-
- <para>
- Rather than enforcing an exact string match, the code would effectively
- accept any string that satisfies the pattern sub-expression referenced
- by the back-reference symbol.
- </para>
-
- <para>
- A similar problem still afflicts back-references that are embedded in a
- larger quantified expression, rather than being the immediate subject
- of the quantifier. This will be addressed in a future
- <productname>PostgreSQL</productname> release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recently-introduced memory leak in processing of
- <type>inet</type>/<type>cidr</type> values (Heikki Linnakangas)
- </para>
-
- <para>
- A patch in the December 2011 releases of <productname>PostgreSQL</productname>
- caused memory leakage in these operations, which could be significant
- in scenarios such as building a btree index on such a column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling pointer after <command>CREATE TABLE AS</command>/<command>SELECT
- INTO</command> in a SQL-language function (Tom Lane)
- </para>
-
- <para>
- In most cases this only led to an assertion failure in assert-enabled
- builds, but worse consequences seem possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid double close of file handle in syslogger on Windows (MauMau)
- </para>
-
- <para>
- Ordinarily this error was invisible, but it would cause an exception
- when running on a debug version of Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix I/O-conversion-related memory leaks in plpgsql
- (Andres Freund, Jan Urbanski, Tom Lane)
- </para>
-
- <para>
- Certain operations would leak memory until the end of the current
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s handling of inherited table columns
- (Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> mishandled situations where a child column has
- a different default expression than its parent column. If the default
- is textually identical to the parent's default, but not actually the
- same (for instance, because of schema search path differences) it would
- not be recognized as different, so that after dump and restore the
- child would be allowed to inherit the parent's default. Child columns
- that are <literal>NOT NULL</literal> where their parent is not could also be
- restored subtly incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- INSERT-style table data (Tom Lane)
- </para>
-
- <para>
- Direct-to-database restores from archive files made with
- <option>--inserts</option> or <option>--column-inserts</option> options fail when
- using <application>pg_restore</application> from a release dated September or
- December 2011, as a result of an oversight in a fix for another
- problem. The archive file itself is not at fault, and text-mode
- output is okay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to process tables containing
- <type>regclass</type> columns (Bruce Momjian)
- </para>
-
- <para>
- Since <application>pg_upgrade</application> now takes care to preserve
- <structname>pg_class</structname> OIDs, there was no longer any reason for this
- restriction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>libpq</application> ignore <literal>ENOTDIR</literal> errors
- when looking for an SSL client certificate file
- (Magnus Hagander)
- </para>
-
- <para>
- This allows SSL connections to be established, though without a
- certificate, even when the user's home directory is set to something
- like <literal>/dev/null</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more field alignment issues in <application>ecpg</application>'s SQLDA area
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>AT</literal> option in <application>ecpg</application>
- <literal>DEALLOCATE</literal> statements (Michael Meskes)
- </para>
-
- <para>
- The infrastructure to support this has been there for awhile, but
- through an oversight there was still an error check rejecting the case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not use the variable name when defining a varchar structure in ecpg
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/auto_explain</filename>'s JSON output mode to produce
- valid JSON (Andrew Dunstan)
- </para>
-
- <para>
- The output used brackets at the top level, when it should have used
- braces.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <filename>contrib/intarray</filename>'s <literal>int[] &amp;
- int[]</literal> operator (Guillaume Lelarge)
- </para>
-
- <para>
- If the smallest integer the two input arrays have in common is 1,
- and there are smaller values in either array, then 1 would be
- incorrectly omitted from the result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error detection in <filename>contrib/pgcrypto</filename>'s
- <function>encrypt_iv()</function> and <function>decrypt_iv()</function>
- (Marko Kreen)
- </para>
-
- <para>
- These functions failed to report certain types of invalid-input errors,
- and would instead return random garbage values for incorrect input.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <filename>contrib/test_parser</filename>
- (Paul Guyot)
- </para>
-
- <para>
- The code would try to read one more byte than it should, which would
- crash in corner cases.
- Since <filename>contrib/test_parser</filename> is only example code, this is
- not a security issue in itself, but bad example code is still bad.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <function>__sync_lock_test_and_set()</function> for spinlocks on ARM, if
- available (Martin Pitt)
- </para>
-
- <para>
- This function replaces our previous use of the <literal>SWPB</literal>
- instruction, which is deprecated and not available on ARMv6 and later.
- Reports suggest that the old code doesn't fail in an obvious way on
- recent ARM boards, but simply doesn't interlock concurrent accesses,
- leading to bizarre failures in multiprocess operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fexcess-precision=standard</option> option when building with
- gcc versions that accept it (Andrew Dunstan)
- </para>
-
- <para>
- This prevents assorted scenarios wherein recent versions of gcc will
- produce creative results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow use of threaded Python on FreeBSD (Chris Rees)
- </para>
-
- <para>
- Our configure script previously believed that this combination wouldn't
- work; but FreeBSD fixed the problem, so remove that error check.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-6">
- <title>Release 9.0.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.5.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.6</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, a longstanding error was discovered in the definition of the
- <literal>information_schema.referential_constraints</literal> view. If you
- rely on correct results from that view, you should replace its
- definition as explained in the first changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.0.4,
- see <xref linkend="release-9-0-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in <literal>information_schema.referential_constraints</literal> view
- (Tom Lane)
- </para>
-
- <para>
- This view was being insufficiently careful about matching the
- foreign-key constraint to the depended-on primary or unique key
- constraint. That could result in failure to show a foreign key
- constraint at all, or showing it multiple times, or claiming that it
- depends on a different constraint than the one it really does.
- </para>
-
- <para>
- Since the view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can (as a superuser) drop the
- <literal>information_schema</literal> schema then re-create it by sourcing
- <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database
- to be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during <command>UPDATE</command> or <command>DELETE</command> that
- joins to the output of a scalar-returning function (Tom Lane)
- </para>
-
- <para>
- A crash could only occur if the target row had been concurrently
- updated, so this problem surfaced only intermittently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect replay of WAL records for GIN index updates
- (Tom Lane)
- </para>
-
- <para>
- This could result in transiently failing to find index entries after
- a crash, or on a hot-standby server. The problem would be repaired
- by the next <command>VACUUM</command> of the index, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
- SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
- (Tom Lane)
- </para>
-
- <para>
- If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
- attempts to copy its data verbatim to another table could produce
- corrupt results in certain corner cases.
- The problem can only manifest in this precise form in 8.4 and later,
- but we patched earlier versions as well in case there are other code
- paths that could trigger the same bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failures during hot standby startup (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Start hot standby faster when initial snapshot is incomplete
- (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition during toast table access from stale syscache entries
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was transient errors like <quote>missing chunk
- number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited
- toast table would always belong to a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track dependencies of functions on items used in parameter default
- expressions (Tom Lane)
- </para>
-
- <para>
- Previously, a referenced object could be dropped without having dropped
- or modified the function, leading to misbehavior when the function was
- used. Note that merely installing this update will not fix the missing
- dependency entries; to do that, you'd need to <command>CREATE OR
- REPLACE</command> each such function afterwards. If you have functions whose
- defaults depend on non-built-in objects, doing so is recommended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow inlining of set-returning SQL functions with multiple OUT
- parameters (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't trust deferred-unique indexes for join removal (Tom Lane and Marti
- Raudsepp)
- </para>
-
- <para>
- A deferred uniqueness constraint might not hold intra-transaction,
- so assuming that it does could give incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>DatumGetInetP()</function> unpack inet datums that have a 1-byte
- header, and add a new macro, <function>DatumGetInetPP()</function>, that does
- not (Heikki Linnakangas)
- </para>
-
- <para>
- This change affects no core code, but might prevent crashes in add-on
- code that expects <function>DatumGetInetP()</function> to produce an unpacked
- datum as per usual convention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locale support in <type>money</type> type's input and output
- (Tom Lane)
- </para>
-
- <para>
- Aside from not supporting all standard
- <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
- formatting options, the input and output functions were inconsistent,
- meaning there were locales in which dumped <type>money</type> values could
- not be re-read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't let <link
- linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
- affect <literal>CASE foo WHEN NULL ...</literal> constructs
- (Heikki Linnakangas)
- </para>
-
- <para>
- <varname>transform_null_equals</varname> is only supposed to affect
- <literal>foo = NULL</literal> expressions written directly by the user, not
- equality checks generated internally by this form of <literal>CASE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change foreign-key trigger creation order to better support
- self-referential foreign keys (Tom Lane)
- </para>
-
- <para>
- For a cascading foreign key that references its own table, a row update
- will fire both the <literal>ON UPDATE</literal> trigger and the
- <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
- trigger must execute first, else the <literal>CHECK</literal> will check a
- non-final state of the row and possibly throw an inappropriate error.
- However, the firing order of these triggers is determined by their
- names, which generally sort in creation order since the triggers have
- auto-generated names following the convention
- <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require
- modifying that convention, which we will do in 9.2, but it seems risky
- to change it in existing releases. So this patch just changes the
- creation order of the triggers. Users encountering this type of error
- should drop and re-create the foreign key constraint to get its
- triggers into the right order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid floating-point underflow while tracking buffer allocation rate
- (Greg Matthews)
- </para>
-
- <para>
- While harmless in itself, on certain platforms this would result in
- annoying kernel log messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve configuration file name and line number values when starting
- child processes under Windows (Tom Lane)
- </para>
-
- <para>
- Formerly, these would not be displayed correctly in the
- <structname>pg_settings</structname> view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect field alignment in <application>ecpg</application>'s SQLDA area
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve blank lines within commands in <application>psql</application>'s command
- history (Robert Haas)
- </para>
-
- <para>
- The former behavior could cause problems if an empty line was removed
- from within a string literal, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts between
- auto-generated types, such as table rowtypes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Assorted fixes for <application>pg_upgrade</application> (Bruce Momjian)
- </para>
-
- <para>
- Handle exclusion constraints correctly, avoid failures on Windows,
- don't complain about mismatched toast table names in 8.4 databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the preferred version of <application>xsubpp</application> to build PL/Perl,
- not necessarily the operating system's main copy
- (David Wheeler and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect coding in <filename>contrib/dict_int</filename> and
- <filename>contrib/dict_xsyn</filename> (Tom Lane)
- </para>
-
- <para>
- Some functions incorrectly assumed that memory returned by
- <function>palloc()</function> is guaranteed zeroed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted errors in <filename>contrib/unaccent</filename>'s configuration
- file parsing (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor query cancel interrupts promptly in <function>pgstatindex()</function>
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect quoting of log file name in macOS start script
- (Sidar Lopez)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure VPATH builds properly install all server header files
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shorten file names reported in verbose error messages (Peter Eisentraut)
- </para>
-
- <para>
- Regular builds have always reported just the name of the C file
- containing the error message call, but VPATH builds formerly
- reported an absolute path name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interpretation of Windows timezone names for Central America
- (Tom Lane)
- </para>
-
- <para>
- Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not
- <literal>CST6CDT</literal>, because DST is generally not observed anywhere in
- Central America.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011n
- for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
- also historical corrections for Alaska and British East Africa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-5">
- <title>Release 9.0.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-26</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.4.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.5</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.0.4,
- see <xref linkend="release-9-0-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix catalog cache invalidation after a <command>VACUUM FULL</command> or
- <command>CLUSTER</command> on a system catalog (Tom Lane)
- </para>
-
- <para>
- In some cases the relocation of a system catalog row to another place
- would not be recognized by concurrent server processes, allowing catalog
- corruption to occur if they then tried to update that row. The
- worst-case outcome could be as bad as complete loss of a table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect order of operations during sinval reset processing,
- and ensure that TOAST OIDs are preserved in system catalogs (Tom
- Lane)
- </para>
-
- <para>
- These mistakes could lead to transient failures after a <command>VACUUM
- FULL</command> or <command>CLUSTER</command> on a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
- </para>
-
- <para>
- These bugs could result in index corruption after reindexing a system
- catalog. They are not believed to affect user indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in GiST index page split processing (Heikki
- Linnakangas)
- </para>
-
- <para>
- The probability of occurrence was low, but these could lead to index
- corruption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible buffer overrun in <function>tsvector_concat()</function>
- (Tom Lane)
- </para>
-
- <para>
- The function could underestimate the amount of memory needed for its
- result, leading to server crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <function>xml_recv</function> when processing a
- <quote>standalone</quote> parameter (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>pg_options_to_table</function> return NULL for an option with no
- value (Tom Lane)
- </para>
-
- <para>
- Previously such cases would result in a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly accessing off the end of memory in <command>ANALYZE</command>
- and in SJIS-2004 encoding conversion (Noah Misch)
- </para>
-
- <para>
- This fixes some very-low-probability server crash scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect <function>pg_stat_reset_shared()</function> against NULL input (Magnus
- Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure when a recovery conflict deadlock is detected
- within a sub-transaction (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid spurious conflicts while recycling btree index pages during hot
- standby (Noah Misch, Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shut down WAL receiver if it's still running at end of recovery (Heikki
- Linnakangas)
- </para>
-
- <para>
- The postmaster formerly panicked in this situation, but it's actually a
- legitimate case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in relcache init file invalidation (Tom Lane)
- </para>
-
- <para>
- There was a window wherein a new backend process could read a stale init
- file but miss the inval messages that would tell it the data is stale.
- The result would be bizarre failures in catalog accesses, typically
- <quote>could not read block 0 in file ...</quote> later during startup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak at end of a GiST index scan (Tom Lane)
- </para>
-
- <para>
- Commands that perform many separate GiST index scans, such as
- verification of a new GiST-based exclusion constraint on a table
- already containing many rows, could transiently require large amounts of
- memory due to this leak.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when encoding conversion has to be done on incoming
- command strings and <command>LISTEN</command> is active (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect memory accounting (leading to possible memory bloat) in
- tuplestores supporting holdable cursors and plpgsql's <literal>RETURN
- NEXT</literal> command (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix trigger <literal>WHEN</literal> conditions when both <literal>BEFORE</literal> and
- <literal>AFTER</literal> triggers exist (Tom Lane)
- </para>
-
- <para>
- Evaluation of <literal>WHEN</literal> conditions for <literal>AFTER ROW
- UPDATE</literal> triggers could crash if there had been a <literal>BEFORE
- ROW</literal> trigger fired for the same update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when constructing a large, lossy bitmap
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix join selectivity estimation for unique columns (Tom Lane)
- </para>
-
- <para>
- This fixes an erroneous planner heuristic that could lead to poor
- estimates of the result size of a join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix nested PlaceHolderVar expressions that appear only in sub-select
- target lists (Tom Lane)
- </para>
-
- <para>
- This mistake could result in outputs of an outer join incorrectly
- appearing as NULL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the planner to assume that empty parent tables really are empty
- (Tom Lane)
- </para>
-
- <para>
- Normally an empty table is assumed to have a certain minimum size for
- planning purposes; but this heuristic seems to do more harm than good
- for the parent table of an inheritance hierarchy, which often is
- permanently empty.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow nested <literal>EXISTS</literal> queries to be optimized properly (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array- and path-creating functions to ensure padding bytes are
- zeroes (Tom Lane)
- </para>
-
- <para>
- This avoids some situations where the planner will think that
- semantically-equal constants are not equal, resulting in poor
- optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to handle gating Result nodes within
- inner-indexscan subplans (Tom Lane)
- </para>
-
- <para>
- The usual symptom of this oversight was <quote>bogus varno</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree preprocessing of <replaceable>indexedcol</replaceable> <literal>IS
- NULL</literal> conditions (Dean Rasheed)
- </para>
-
- <para>
- Such a condition is unsatisfiable if combined with any other type of
- btree-indexable condition on the same index column. The case was
- handled incorrectly in 9.0.0 and later, leading to query output where
- there should be none.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
- </para>
-
- <para>
- This could lead to loss of committed transactions after a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dump bug for <literal>VALUES</literal> in a view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <literal>SELECT FOR UPDATE/SHARE</literal> on sequences (Tom Lane)
- </para>
-
- <para>
- This operation doesn't work as expected and can lead to failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> so that it always updates
- <literal>pg_class</literal>.<literal>reltuples</literal>/<literal>relpages</literal> (Tom
- Lane)
- </para>
-
- <para>
- This fixes some scenarios where autovacuum could make increasingly poor
- decisions about when to vacuum tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Defend against integer overflow when computing size of a hash table (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where <command>CLUSTER</command> might attempt to access
- already-removed TOAST data (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature timeout failures during initial authentication transaction
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability bugs in use of credentials control messages for
- <quote>peer</quote> authentication (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
- Magnus Hagander)
- </para>
-
- <para>
- The typical symptom of this problem was <quote>The function requested is
- not supported</quote> errors during SSPI login.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure when adding a new variable of a custom variable class to
- <filename>postgresql.conf</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw an error if <filename>pg_hba.conf</filename> contains <literal>hostssl</literal>
- but SSL is disabled (Tom Lane)
- </para>
-
- <para>
- This was concluded to be more user-friendly than the previous behavior
- of silently ignoring such lines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure when <command>DROP OWNED BY</command> attempts to remove default
- privileges on sequences (Shigeru Hanada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix typo in <function>pg_srand48</function> seed initialization (Andres Freund)
- </para>
-
- <para>
- This led to failure to use all bits of the provided seed. This function
- is not used on most platforms (only those without <function>srandom</function>),
- and the potential security exposure from a less-random-than-expected
- seed seems minimal in any case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow when the sum of <literal>LIMIT</literal> and
- <literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add overflow checks to <type>int4</type> and <type>int8</type> versions of
- <function>generate_series()</function> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp)
- </para>
-
- <para>
- In a format with <literal>FM</literal> and no digit positions
- after the decimal point, zeroes to the left of the decimal point could
- be removed incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_size_pretty()</function> to avoid overflow for inputs close to
- 2^63 (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Weaken plpgsql's check for typmod matching in record values (Tom Lane)
- </para>
-
- <para>
- An overly enthusiastic check could lead to discarding length modifiers
- that should have been kept.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle quotes in locale names during <application>initdb</application>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The case can arise with some Windows locales, such as <quote>People's
- Republic of China</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, avoid dumping orphaned temporary tables
- (Bruce Momjian)
- </para>
-
- <para>
- This prevents situations wherein table OID assignments could get out of
- sync between old and new installations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to preserve toast tables' relfrozenxids
- during an upgrade from 8.3 (Bruce Momjian)
- </para>
-
- <para>
- Failure to do this could lead to <filename>pg_clog</filename> files being
- removed too soon after the upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, fix the <literal>-l</literal> (log) option to
- work on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application>, support silent mode for service registrations
- on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s counting of script file line numbers during
- <literal>COPY</literal> from a different file (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- <varname>standard_conforming_strings</varname> (Tom Lane)
- </para>
-
- <para>
- <application>pg_restore</application> could emit incorrect commands when restoring
- directly to a database server from an archive file that had been made
- with <varname>standard_conforming_strings</varname> set to <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more user-friendly about unsupported cases for parallel
- <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- This change ensures that such cases are detected and reported before
- any restore actions have been taken.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix write-past-buffer-end and memory leak in <application>libpq</application>'s
- LDAP service lookup code (Albe Laurenz)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, avoid failures when using nonblocking I/O
- and an SSL connection (Martin Pihlak, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve libpq's handling of failures during connection startup
- (Tom Lane)
- </para>
-
- <para>
- In particular, the response to a server report of <function>fork()</function>
- failure during SSL connection startup is now saner.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s error reporting for SSL failures (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>PQsetvalue()</function> to avoid possible crash when adding a new
- tuple to a <structname>PGresult</structname> originally obtained from a server
- query (Andrew Chernow)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> write <type>double</type> values with 15 digits
- precision (Akira Kurosawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpglib</application>, be sure <literal>LC_NUMERIC</literal> setting is
- restored after an error (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
- (Tom Lane)
- </para>
-
- <para>
- <filename>contrib/pg_crypto</filename>'s blowfish encryption code could give
- wrong results on platforms where char is signed (which is most),
- leading to encrypted passwords being weaker than they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/seg</filename> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgstatindex()</function> to give consistent results for empty
- indexes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow building with perl 5.14 (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted issues with build and install file paths containing spaces
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011i
- for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-4">
- <title>Release 9.0.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-04-18</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.3.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.4</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- <para>
- However, if your installation was upgraded from a previous major
- release by running <application>pg_upgrade</application>, you should take
- action to prevent possible data loss due to a now-fixed bug in
- <application>pg_upgrade</application>. The recommended solution is to run
- <command>VACUUM FREEZE</command> on all TOAST tables.
- More information is available at <ulink
- url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix">
- http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s handling of TOAST tables
- (Bruce Momjian)
- </para>
-
- <para>
- The <structname>pg_class</structname>.<structfield>relfrozenxid</structfield> value for
- TOAST tables was not correctly copied into the new installation
- during <application>pg_upgrade</application>. This could later result in
- <literal>pg_clog</literal> files being discarded while they were still
- needed to validate tuples in the TOAST tables, leading to
- <quote>could not access status of transaction</quote> failures.
- </para>
-
- <para>
- This error poses a significant risk of data loss for installations
- that have been upgraded with <application>pg_upgrade</application>. This patch
- corrects the problem for future uses of <application>pg_upgrade</application>,
- but does not in itself cure the issue in installations that have been
- processed with a buggy version of <application>pg_upgrade</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</quote>
- warning (Heikki Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> would sometimes issue this warning in cases that
- are actually valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use better SQLSTATE error codes for hot standby conflict cases
- (Tatsuo Ishii and Simon Riggs)
- </para>
-
- <para>
- All retryable conflict errors now have an error code that indicates
- that a retry is possible. Also, session closure due to the database
- being dropped on the master is now reported as
- <literal>ERRCODE_DATABASE_DROPPED</literal>, rather than
- <literal>ERRCODE_ADMIN_SHUTDOWN</literal>, so that connection poolers can
- handle the situation correctly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intermittent hang in interactions of startup process with
- bgwriter process (Simon Riggs)
- </para>
-
- <para>
- This affected recovery in non-hot-standby cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow including a composite type in itself (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein the server could recurse infinitely
- while processing the composite type. While there are some possible
- uses for such a structure, they don't seem compelling enough to
- justify the effort required to make sure it always works safely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid potential deadlock during catalog cache initialization
- (Nikhil Sontakke)
- </para>
-
- <para>
- In some cases the cache loading code would acquire share lock on a
- system index before locking the index's catalog. This could deadlock
- against processes trying to acquire exclusive locks in the other,
- more standard order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</literal> trigger
- handling when there was a concurrent update to the target tuple
- (Tom Lane)
- </para>
-
- <para>
- This bug has been observed to result in intermittent <quote>cannot
- extract system attribute from virtual tuple</quote> failures while trying to
- do <literal>UPDATE RETURNING ctid</literal>. There is a very small probability
- of more serious errors, such as generating incorrect index entries for
- the updated tuple.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow <command>DROP TABLE</command> when there are pending deferred trigger
- events for the table (Tom Lane)
- </para>
-
- <para>
- Formerly the <command>DROP</command> would go through, leading to
- <quote>could not open relation with OID nnn</quote> errors when the
- triggers were eventually fired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <quote>replication</quote> as a user name in
- <filename>pg_hba.conf</filename> (Andrew Dunstan)
- </para>
-
- <para>
- <quote>replication</quote> is special in the database name column, but it
- was mistakenly also treated as special in the user name column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash triggered by constant-false WHERE conditions during
- GEQO optimization (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's handling of semi-join and anti-join cases
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>SELECT FOR UPDATE</literal> in a sub-SELECT
- (Tom Lane)
- </para>
-
- <para>
- This bug typically led to <quote>cannot extract system attribute from
- virtual tuple</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selectivity estimation for text search to account for NULLs
- (Jesper Krogh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix get_actual_variable_range() to support hypothetical indexes
- injected by an index adviser plugin (Gurjeet Singh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python memory leak involving array slices (Daniel Popowich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application>'s SSL initialization to succeed when
- user's home directory is unavailable (Tom Lane)
- </para>
-
- <para>
- If the SSL mode is such that a root certificate file is not required,
- there is no need to fail. This change restores the behavior to what
- it was in pre-9.0 releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to return a useful error message for errors
- detected in <function>conninfo_array_parse</function> (Joseph Adams)
- </para>
-
- <para>
- A typo caused the library to return NULL, rather than the
- <structname>PGconn</structname> structure containing the error message, to the
- application.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> preprocessor's handling of float constants
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parallel <application>pg_restore</application> to handle comments on
- POST_DATA items correctly (Arnd Hannemann)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to cope with long lines (over 1KB) in
- TOC files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Put in more safeguards against crashing due to division-by-zero
- with overly enthusiastic compiler optimization (Aurelien Jarno)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
- </para>
-
- <para>
- There was a hard-wired assumption that this system function was not
- available on MIPS hardware on these systems. Use a compile-time test
- instead, since more recent versions have it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compilation failures on HP-UX (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash when trying to write to the Windows console very early
- in process startup (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support building with MinGW 64 bit compiler for Windows
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix version-incompatibility problem with <application>libintl</application> on
- Windows (Hiroshi Inoue)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix usage of <application>xcopy</application> in Windows build scripts to
- work correctly under Windows 7 (Andrew Dunstan)
- </para>
-
- <para>
- This affects the build scripts only, not installation or usage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix path separator used by <application>pg_regress</application> on Cygwin
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011f
- for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
- and Turkey; also historical corrections for South Australia, Alaska,
- and Hawaii.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-3">
- <title>Release 9.0.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.2.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.3</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Before exiting <application>walreceiver</application>, ensure all the received WAL
- is fsync'd to disk (Heikki Linnakangas)
- </para>
-
- <para>
- Otherwise the standby server could replay some un-synced WAL, conceivably
- leading to data corruption if the system crashes just at that point.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid excess fsync activity in <application>walreceiver</application>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>ALTER TABLE</command> revalidate uniqueness and exclusion
- constraints when needed (Noah Misch)
- </para>
-
- <para>
- This was broken in 9.0 by a change that was intended to suppress
- revalidation during <command>VACUUM FULL</command> and <command>CLUSTER</command>,
- but unintentionally affected <command>ALTER TABLE</command> as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix EvalPlanQual for <command>UPDATE</command> of an inheritance tree in which
- the tables are not all alike (Tom Lane)
- </para>
-
- <para>
- Any variation in the table row types (including dropped columns present
- in only some child tables) would confuse the EvalPlanQual code, leading
- to misbehavior or even crashes. Since EvalPlanQual is only executed
- during concurrent updates to the same row, the problem was only seen
- intermittently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failures when <command>EXPLAIN</command> tries to display a simple-form
- <literal>CASE</literal> expression (Tom Lane)
- </para>
-
- <para>
- If the <literal>CASE</literal>'s test expression was a constant, the planner
- could simplify the <literal>CASE</literal> into a form that confused the
- expression-display code, resulting in <quote>unexpected CASE WHEN
- clause</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assignment to an array slice that is before the existing range
- of subscripts (Tom Lane)
- </para>
-
- <para>
- If there was a gap between the newly added subscripts and the first
- pre-existing subscript, the code miscalculated how many entries needed
- to be copied from the old array's null bitmap, potentially leading to
- data corruption or crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unexpected conversion overflow in planner for very distant date
- values (Tom Lane)
- </para>
-
- <para>
- The <type>date</type> type supports a wider range of dates than can be
- represented by the <type>timestamp</type> types, but the planner assumed it
- could always convert a date to timestamp with impunity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python crash when an array contains null entries (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>ecpg</application>'s fixed length limit for constants defining
- an array dimension (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous parsing of <type>tsquery</type> values containing
- <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
- </para>
-
- <para>
- Queries containing this combination of operators were not executed
- correctly. The same error existed in <filename>contrib/intarray</filename>'s
- <type>query_int</type> type and <filename>contrib/ltree</filename>'s
- <type>ltxtquery</type> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in <filename>contrib/intarray</filename>'s input function
- for the <type>query_int</type> type (Apple)
- </para>
-
- <para>
- This bug is a security risk since the function's return address could
- be overwritten. Thanks to Apple Inc's security team for reporting this
- issue and supplying the fix. (CVE-2010-4015)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/seg</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>seg</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update. (This is identical to the bug that was fixed in
- <filename>contrib/cube</filename> in the previous update.)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-2">
- <title>Release 9.0.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-12-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.1.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.2</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Force the default
- <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
- to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
- </para>
-
- <para>
- The default on Linux has actually been <literal>fdatasync</literal> for many
- years, but recent kernel changes caused <productname>PostgreSQL</productname> to
- choose <literal>open_datasync</literal> instead. This choice did not result
- in any performance improvement, and caused outright failures on
- certain filesystems, notably <literal>ext4</literal> with the
- <literal>data=journal</literal> mount option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>too many KnownAssignedXids</quote> error during Hot Standby
- replay (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in lock acquisition during Hot Standby (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary conflicts during Hot Standby (Simon Riggs)
- </para>
-
- <para>
- This fixes some cases where replay was considered to conflict with
- standby queries (causing delay of replay or possibly cancellation of
- the queries), but there was no real conflict.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in <quote>bad buffer id: 0</quote> failures or
- corruption of index contents during replication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recovery from base backup when the starting checkpoint WAL record
- is not in the same WAL segment as its redo point (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case bug when streaming replication is enabled immediately
- after creating the master database cluster (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix persistent slowdown of autovacuum workers when multiple workers
- remain active for a long time (Tom Lane)
- </para>
-
- <para>
- The effective <varname>vacuum_cost_limit</varname> for an autovacuum worker
- could drop to nearly zero if it processed enough tables, causing it
- to run extremely slowly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix long-term memory leak in autovacuum launcher (Alvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure when trying to report an impending transaction
- wraparound condition from outside a transaction (Tom Lane)
- </para>
-
- <para>
- This oversight prevented recovery after transaction wraparound got
- too close, because database startup processing would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for detecting register-stack overrun on <literal>IA64</literal>
- (Tom Lane)
- </para>
-
- <para>
- The <literal>IA64</literal> architecture has two hardware stacks. Full
- prevention of stack-overrun failures requires checking both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a check for stack overflow in <function>copyObject()</function> (Tom Lane)
- </para>
-
- <para>
- Certain code paths could crash due to stack overflow given a
- sufficiently complex query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of page splits in temporary GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- It is possible to have a <quote>concurrent</quote> page split in a
- temporary index, if for example there is an open cursor scanning the
- index when an insertion is done. GiST failed to detect this case and
- hence could deliver wrong results when execution of the cursor
- continued.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error checking during early connection processing (Tom Lane)
- </para>
-
- <para>
- The check for too many child processes was skipped in some cases,
- possibly leading to postmaster crash when attempting to add the new
- child process to fixed-size arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve efficiency of window functions (Tom Lane)
- </para>
-
- <para>
- Certain cases where a large number of tuples needed to be read in
- advance, but <varname>work_mem</varname> was large enough to allow them all
- to be held in memory, were unexpectedly slow.
- <function>percent_rank()</function>, <function>cume_dist()</function> and
- <function>ntile()</function> in particular were subject to this problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid memory leakage while <command>ANALYZE</command>'ing complex index
- expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an index that uses a whole-row Var still depends on its table
- (Tom Lane)
- </para>
-
- <para>
- An index declared like <literal>create index i on t (foo(t.*))</literal>
- would not automatically get dropped when its table was dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add missing support in <command>DROP OWNED BY</command> for removing foreign
- data wrapper/server privileges belonging to a user (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
- parameters (Tom Lane)
- </para>
-
- <para>
- This avoids a possible crash due to loss of information about the
- expected result rowtype.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when inline-ing a set-returning function whose argument list
- contains a reference to an inline-able user function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Behave correctly if <literal>ORDER BY</literal>, <literal>LIMIT</literal>,
- <literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the
- <literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <literal>OFF</literal> keyword unreserved (Heikki Linnakangas)
- </para>
-
- <para>
- This prevents problems with using <literal>off</literal> as a variable name in
- <application>PL/pgSQL</application>. That worked before 9.0, but was now broken
- because <application>PL/pgSQL</application> now treats all core reserved words
- as reserved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane)
- </para>
-
- <para>
- The planner would sometimes attempt to evaluate sub-expressions that
- in fact could never be reached, possibly leading to unexpected errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not find pathkey item to sort</quote> planner failure
- with comparison of whole-row Vars (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster crash when connection acceptance
- (<function>accept()</function> or one of the calls made immediately after it)
- fails, and the postmaster was compiled with GSSAPI support (Alexander
- Chernikov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Retry after receiving an invalid response packet from a RADIUS
- authentication server (Magnus Hagander)
- </para>
-
- <para>
- This fixes a low-risk potential denial of service condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed unlink of temporary files when <varname>log_temp_files</varname>
- is active (Tom Lane)
- </para>
-
- <para>
- If an error occurred while attempting to emit the log message, the
- unlink was not done, resulting in accumulation of temp files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
- </para>
-
- <para>
- This avoids a failure when <varname>debug_print_parse</varname> is enabled
- and certain types of query are executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of distance from a point to a horizontal
- line segment (Tom Lane)
- </para>
-
- <para>
- This bug affected several different geometric distance-measurement
- operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect calculation of transaction status in
- <application>ecpg</application> (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix errors in <application>psql</application>'s Unicode-escape support (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up parallel <application>pg_restore</application> when the archive
- contains many large objects (blobs) (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote>
- expressions to not fail in recursion or error-recovery cases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/pgSQL</application>'s error reporting for no-such-column
- cases (Tom Lane)
- </para>
-
- <para>
- As of 9.0, it would sometimes report <quote>missing FROM-clause entry
- for table foo</quote> when <quote>record foo has no field bar</quote> would be
- more appropriate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> to honor typmod (i.e., length or
- precision restrictions) when assigning to tuple fields (Tom Lane)
- </para>
-
- <para>
- This fixes a regression from 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application>'s handling of set-returning functions
- (Jan Urbanski)
- </para>
-
- <para>
- Attempts to call SPI functions within the iterator generating a set
- result would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm
- (Alexander Korotkov)
- </para>
-
- <para>
- This could result in considerable inefficiency, though not actually
- incorrect answers, in a GiST index on a <type>cube</type> column.
- If you have such an index, consider <command>REINDEX</command>ing it after
- installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't emit <quote>identifier will be truncated</quote> notices in
- <filename>contrib/dblink</filename> except when creating new connections
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential coredump on missing public key in
- <filename>contrib/pgcrypto</filename> (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in <filename>contrib/pg_upgrade</filename> (Hernan Gonzalez)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2010o
- for DST law changes in Fiji and Samoa;
- also historical corrections for Hong Kong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0-1">
- <title>Release 9.0.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.0.0.
- For information about new features in the 9.0 major release, see
- <xref linkend="release-9-0"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.0.1</title>
-
- <para>
- A dump/restore is not required for those running 9.0.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a separate interpreter for each calling SQL userid in PL/Perl and
- PL/Tcl (Tom Lane)
- </para>
-
- <para>
- This change prevents security problems that can be caused by subverting
- Perl or Tcl code that will be executed later in the same session under
- another SQL user identity (for example, within a <literal>SECURITY
- DEFINER</literal> function). Most scripting languages offer numerous ways that
- that might be done, such as redefining standard functions or operators
- called by the target function. Without this change, any SQL user with
- Perl or Tcl language usage rights can do essentially anything with the
- SQL privileges of the target function's owner.
- </para>
-
- <para>
- The cost of this change is that intentional communication among Perl
- and Tcl functions becomes more difficult. To provide an escape hatch,
- PL/PerlU and PL/TclU functions continue to use only one interpreter
- per session. This is not considered a security issue since all such
- functions execute at the trust level of a database superuser already.
- </para>
-
- <para>
- It is likely that third-party procedural languages that claim to offer
- trusted execution have similar security issues. We advise contacting
- the authors of any PL you are depending on for security-critical
- purposes.
- </para>
-
- <para>
- Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <function>pg_get_expr()</function> security fix so that the function
- can still be used on the output of a sub-select (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect placement of placeholder evaluation (Tom Lane)
- </para>
-
- <para>
- This bug could result in query outputs being non-null when they
- should be null, in cases where the inner side of an outer join
- is a sub-select with non-strict expressions in its output list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix join removal's handling of placeholder expressions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible duplicate scans of <literal>UNION ALL</literal> member relations
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop in ProcessIncomingNotify() after unlistening
- (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent show_session_authorization() from crashing within autovacuum
- processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
- </para>
-
- <para>
- Input such as <literal>'J100000'::date</literal> worked before 8.4,
- but was unintentionally broken by added error-checking.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make psql recognize <command>DISCARD ALL</command> as a command that should
- not be encased in a transaction block in autocommit-off mode
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update build infrastructure and documentation to reflect the source code
- repository's move from CVS to Git (Magnus Hagander and others)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-0">
- <title>Release 9.0</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2010-09-20</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- This release of
- <productname>PostgreSQL</productname> adds features that have been requested
- for years, such as easy-to-use replication, a mass permission-changing
- facility, and anonymous code blocks. While past major releases have
- been conservative in their scope, this release shows a
- bold new desire to provide facilities that new and existing
- users of <productname>PostgreSQL</productname> will embrace. This has all
- been done with few incompatibilities. Major enhancements include:
- </para>
-
- <itemizedlist>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <listitem>
-
- <para>
- Built-in replication based on log shipping. This advance consists of
- two features: Streaming Replication, allowing continuous archive
- (<acronym>WAL</acronym>) files to be streamed over a network connection to a
- standby server, and Hot Standby, allowing continuous archive standby
- servers to execute read-only queries. The net effect is to support a
- single master with multiple read-only slave servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Easier database object permissions management. <link
- linkend="sql-grant"><command>GRANT</command>/<command>REVOKE IN
- SCHEMA</command></link> supports mass permissions changes on existing objects,
- while <link linkend="sql-alterdefaultprivileges"><command>ALTER DEFAULT
- PRIVILEGES</command></link> allows control of privileges for objects created in
- the future. Large objects (BLOBs) now support permissions management as
- well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Broadly enhanced stored procedure support.
- The <link linkend="sql-do"><command>DO</command></link> statement supports
- ad-hoc or <quote>anonymous</quote> code blocks.
- Functions can now be called using named parameters.
- <link linkend="plpgsql">PL/pgSQL</link> is now installed by default, and
- <link linkend="plperl">PL/Perl</link> and <link
- linkend="plpython">PL/Python</link> have been enhanced in several ways,
- including support for Python3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full support for <link linkend="install-windows">64-bit
- <productname>Windows</productname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- More advanced reporting queries, including additional windowing options
- (<literal>PRECEDING</literal> and <literal>FOLLOWING</literal>) and the ability to
- control the order in which values are fed to aggregate functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New trigger features, including
- SQL-standard-compliant <link
- linkend="sql-createtrigger">per-column triggers</link> and
- conditional trigger execution.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="sql-createtable-compatibility">Deferrable
- unique constraints</link>. Mass updates to unique keys are now possible
- without trickery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="ddl-constraints-exclusion">Exclusion constraints</link>.
- These provide a generalized version of unique constraints, allowing
- enforcement of complex conditions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New and enhanced security features, including RADIUS authentication,
- LDAP authentication improvements, and a new contrib module
- <link linkend="passwordcheck"><filename>passwordcheck</filename></link>
- for testing password strength.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New high-performance implementation of the
- <link linkend="sql-listen"><command>LISTEN</command></link>/<link
- linkend="sql-notify"><command>NOTIFY</command></link> feature.
- Pending events are now stored in a memory-based queue rather than
- a table. Also, a <quote>payload</quote> string can be sent with each
- event, rather than transmitting just an event name as before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New implementation of
- <link linkend="sql-vacuum"><command>VACUUM FULL</command></link>.
- This command now rewrites the entire table and indexes, rather than
- moving individual rows to compact space. It is substantially faster
- in most cases, and no longer results in index bloat.
- </para>
- </listitem>
-
- <listitem>
- <para>
- New contrib module
- <link linkend="pgupgrade"><filename>pg_upgrade</filename></link>
- to support in-place upgrades from 8.3 or 8.4 to 9.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Multiple performance enhancements for specific types of queries,
- including elimination of unnecessary joins. This helps optimize some
- automatically-generated queries, such as those produced by
- object-relational mappers (ORMs).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="sql-explain"><command>EXPLAIN</command></link> enhancements.
- The output is now available in JSON, XML, or YAML format, and includes
- buffer utilization and other data not previously available.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="hstore"><filename>hstore</filename></link> improvements,
- including new functions and greater data capacity.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.0</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>,
- or use of <application>pg_upgrade</application>, is required
- for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Version 9.0 contains a number of changes that selectively break backwards
- compatibility in order to support new features and code quality
- improvements. In particular, users who make extensive use of PL/pgSQL,
- Point-In-Time Recovery (PITR), or Warm Standby should test their
- applications because of slight user-visible changes in those areas.
- Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove server parameter <varname>add_missing_from</varname>, which was
- defaulted to off for many years (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove server parameter <varname>regex_flavor</varname>, which
- was defaulted to <link
- linkend="posix-syntax-details"><literal>advanced</literal></link>
- for many years (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="guc-archive-mode"><varname>archive_mode</varname></link>
- now only affects <link
- linkend="guc-archive-command"><varname>archive_command</varname></link>;
- a new setting, <link
- linkend="guc-wal-level"><varname>wal_level</varname></link>, affects
- the contents of the write-ahead log (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="guc-log-temp-files"><varname>log_temp_files</varname></link>
- now uses default file size units of kilobytes (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- When querying a <link linkend="ddl-inherit">parent table</link>,
- do not do any separate permission checks on child tables
- scanned as part of the query (Peter Eisentraut)
- </para>
-
- <para>
- The SQL standard specifies this behavior, and it is also much more
- convenient in practice than the former behavior of checking permissions
- on each child as well as the parent.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <link linkend="datatype-binary"><type>bytea</type></link> output now
- appears in hex format by default (Peter Eisentraut)
- </para>
-
- <para>
- The server parameter <link
- linkend="guc-bytea-output"><varname>bytea_output</varname></link> can be
- used to select the traditional output format if needed for
- compatibility.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Array input now considers only plain ASCII whitespace characters
- to be potentially ignorable; it will never ignore non-ASCII characters,
- even if they are whitespace according to some locales (Tom Lane)
- </para>
-
- <para>
- This avoids some corner cases where array values could be interpreted
- differently depending on the server's locale settings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve standards compliance of <link
- linkend="functions-similarto-regexp"><literal>SIMILAR TO</literal></link>
- patterns and SQL-style <function>substring()</function> patterns (Tom Lane)
- </para>
-
- <para>
- This includes treating <literal>?</literal> and <literal>{...}</literal> as
- pattern metacharacters, while they were simple literal characters
- before; that corresponds to new features added in SQL:2008.
- Also, <literal>^</literal> and <literal>$</literal> are now treated as simple
- literal characters; formerly they were treated as metacharacters,
- as if the pattern were following POSIX rather than SQL rules.
- Also, in SQL-standard <function>substring()</function>, use of parentheses
- for nesting no longer interferes with capturing of a substring.
- Also, processing of bracket expressions (character classes) is
- now more standards-compliant.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject negative length values in 3-parameter <link
- linkend="functions-string-sql"><function>substring()</function></link>
- for bit strings, per the SQL standard (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>date_trunc</function> truncate rather than round when reducing
- precision of fractional seconds (Tom Lane)
- </para>
-
- <para>
- The code always acted this way for integer-based dates/times.
- Now float-based dates/times behave similarly.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Renaming</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Tighten enforcement of column name consistency during <command>RENAME</command>
- when a child table inherits the same column from multiple unrelated
- parents (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- No longer automatically rename indexes and index columns when the
- underlying table columns are renamed (Tom Lane)
- </para>
-
- <para>
- Administrators can still rename such indexes and columns manually.
- This change will require an update of the JDBC driver, and possibly other
- drivers, so that unique indexes are correctly recognized after a rename.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>CREATE OR REPLACE FUNCTION</command> can no longer change
- the declared names of function parameters (Pavel Stehule)
- </para>
-
- <para>
- In order to avoid creating ambiguity in named-parameter calls, it is
- no longer allowed to change the aliases for input parameters
- in the declaration of an existing function (although names can still
- be assigned to previously unnamed parameters). You now have to
- <command>DROP</command> and recreate the function to do that.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>PL/pgSQL</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- PL/pgSQL now throws an error if a variable name conflicts with a
- column name used in a query (Tom Lane)
- </para>
-
- <para>
- The former behavior was to bind ambiguous names to PL/pgSQL variables
- in preference to query columns, which often resulted in surprising
- misbehavior. Throwing an error allows easy detection of ambiguous
- situations. Although it's recommended that functions encountering this
- type of error be modified to remove the conflict, the old behavior can
- be restored if necessary via the configuration parameter <link
- linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</varname></link>,
- or via the per-function option <literal>#variable_conflict</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- PL/pgSQL no longer allows variable names that match certain SQL
- reserved words (Tom Lane)
- </para>
-
- <para>
- This is a consequence of aligning the PL/pgSQL parser to match the
- core SQL parser more closely. If necessary,
- variable names can be double-quoted to avoid this restriction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- PL/pgSQL now requires columns of composite results to match the
- expected type modifier as well as base type (Pavel Stehule, Tom Lane)
- </para>
-
- <para>
- For example, if a column of the result type is declared as
- <literal>NUMERIC(30,2)</literal>, it is no longer acceptable to return a
- <literal>NUMERIC</literal> of some other precision in that column. Previous
- versions neglected to check the type modifier and would thus allow
- result rows that didn't actually conform to the declared restrictions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- PL/pgSQL now treats selection into composite fields more consistently
- (Tom Lane)
- </para>
-
- <para>
- Formerly, a statement like
- <literal>SELECT ... INTO <replaceable>rec</replaceable>.<replaceable>fld</replaceable> FROM ...</literal>
- was treated as a scalar assignment even if the record field
- <replaceable>fld</replaceable> was of composite type. Now it is treated as a
- record assignment, the same as when the <literal>INTO</literal> target is a
- regular variable of composite type. So the values to be assigned to the
- field's subfields should be written as separate columns of the
- <command>SELECT</command> list, not as a <literal>ROW(...)</literal> construct as in
- previous versions.
- </para>
-
- <para>
- If you need to do this in a way that will work in both 9.0 and previous
- releases, you can write something like
- <literal><replaceable>rec</replaceable>.<replaceable>fld</replaceable> := ROW(...) FROM ...</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove PL/pgSQL's <literal>RENAME</literal> declaration (Tom Lane)
- </para>
-
- <para>
- Instead of <literal>RENAME</literal>, use <link
- linkend="plpgsql-declaration-alias"><literal>ALIAS</literal></link>,
- which can now create an alias for any variable, not only dollar sign
- parameter names (such as <literal>$1</literal>) as before.
- </para>
- </listitem>
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Incompatibilities</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Deprecate use of <literal>=&gt;</literal> as an operator name (Robert Haas)
- </para>
-
- <para>
- Future versions of <productname>PostgreSQL</productname> will probably reject
- this operator name entirely, in order to support the SQL-standard
- notation for named function parameters. For the moment, it is
- still allowed, but a warning is emitted when such an operator is
- defined.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove support for platforms that don't have a working 64-bit
- integer data type (Tom Lane)
- </para>
-
- <para>
- It is believed all still-supported platforms have working 64-bit
- integer data types.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Changes</title>
- <para>
- Version 9.0 has an unprecedented number of new major features,
- and over 200 enhancements, improvements, new commands,
- new functions, and other changes.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Continuous Archiving and Streaming Replication</title>
-
- <para>
- PostgreSQL's existing standby-server capability has been expanded both to
- support read-only queries on standby servers and to greatly reduce
- the lag between master and standby servers. For many users, this
- will be a useful and low-administration form of replication, either
- for high availability or for horizontal scalability.
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Allow a standby server to accept read-only queries
- (Simon Riggs, Heikki Linnakangas)
- </para>
-
- <para>
- This feature is called Hot Standby. There are new
- <filename>postgresql.conf</filename> and <filename>recovery.conf</filename>
- settings to control this feature, as well as extensive
- <link linkend="hot-standby">documentation</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow write-ahead log (<acronym>WAL</acronym>) data to be streamed to a
- standby server (Fujii Masao, Heikki Linnakangas)
- </para>
-
- <para>
- This feature is called Streaming Replication.
- Previously <acronym>WAL</acronym> data could be sent to standby servers only
- in units of entire <acronym>WAL</acronym> files (normally 16 megabytes each).
- Streaming Replication eliminates this inefficiency and allows updates
- on the master to be propagated to standby servers with very little
- delay. There are new <filename>postgresql.conf</filename> and
- <filename>recovery.conf</filename> settings to control this feature, as well as
- extensive <link linkend="streaming-replication">documentation</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</function></link>
- and <function>pg_last_xlog_replay_location()</function>, which
- can be used to monitor standby server <acronym>WAL</acronym>
- activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow per-tablespace values to be set for sequential and random page
- cost estimates (<varname>seq_page_cost</varname>/<varname>random_page_cost</varname>)
- via <link linkend="sql-altertablespace"><command>ALTER TABLESPACE
- ... SET/RESET</command></link> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance and reliability of EvalPlanQual rechecks in join
- queries (Tom Lane)
- </para>
-
- <para>
- <command>UPDATE</command>, <command>DELETE</command>, and <command>SELECT FOR
- UPDATE/SHARE</command> queries that involve joins will now behave much better
- when encountering freshly-updated rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <link
- linkend="sql-truncate"><command>TRUNCATE</command></link> when
- the table was created or truncated earlier in the same transaction
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of finding inheritance child tables (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove unnecessary <link linkend="queries-join">outer
- joins</link> (Robert Haas)
- </para>
-
- <para>
- Outer joins where the inner side is unique and not referenced above
- the join are unnecessary and are therefore now removed. This will
- accelerate many automatically generated queries, such as those created
- by object-relational mappers (ORMs).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>IS NOT NULL</literal> restrictions to use indexes (Tom Lane)
- </para>
-
- <para>
- This is particularly useful for finding
- <function>MAX()</function>/<function>MIN()</function> values in indexes that
- contain many null values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the optimizer's choices about when to use materialize nodes,
- and when to use sorting versus hashing for <literal>DISTINCT</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the optimizer's equivalence detection for expressions involving
- <type>boolean</type> <literal>&lt;&gt;</literal> operators (Tom Lane)
- </para>
- </listitem>
- </itemizedlist>
- </sect4>
-
- <sect4>
- <title><link linkend="geqo">GEQO</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use the same random seed every time GEQO plans a query (Andres
- Freund)
- </para>
-
- <para>
- While the Genetic Query Optimizer (GEQO) still selects
- random plans, it now always selects the same random plans for identical
- queries, thus giving more consistent performance. You can modify <link
- linkend="guc-geqo-seed"><varname>geqo_seed</varname></link> to experiment with
- alternative plans.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve GEQO plan selection (Tom Lane)
- </para>
-
- <para>
- This avoids the rare error <quote>failed to make a valid plan</quote>,
- and should also improve planning speed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer Statistics</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve <link linkend="sql-analyze"><command>ANALYZE</command></link>
- to support inheritance-tree statistics (Tom Lane)
- </para>
-
- <para>
- This is particularly useful for partitioned tables. However,
- autovacuum does not yet automatically re-analyze parent tables
- when child tables change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="routine-vacuuming">autovacuum</link>'s
- detection of when re-analyze is necessary (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's estimation for greater/less-than comparisons
- (Tom Lane)
- </para>
-
- <para>
- When looking up statistics for greater/less-than comparisons,
- if the comparison value is in the first or last histogram bucket,
- use an index (if available) to fetch the current actual column
- minimum or maximum. This greatly improves the accuracy of estimates
- for comparison values near the ends of the data range, particularly
- if the range is constantly changing due to addition of new data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow setting of number-of-distinct-values statistics using <link
- linkend="sql-altertable"><command>ALTER TABLE</command></link>
- (Robert Haas)
- </para>
-
- <para>
- This allows users to override the estimated number or percentage of
- distinct values for a column. This statistic is normally computed by
- <command>ANALYZE</command>, but the estimate can be poor, especially on tables
- with very large numbers of rows.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <link
- linkend="auth-radius"><acronym>RADIUS</acronym></link> (Remote
- Authentication Dial In User Service) authentication
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="auth-ldap"><acronym>LDAP</acronym></link>
- (Lightweight Directory Access Protocol) authentication
- to operate in <quote>search/bind</quote> mode
- (Robert Fleming, Magnus Hagander)
- </para>
-
- <para>
- This allows the user to be looked up first, then the system uses
- the <acronym>DN</acronym> (Distinguished Name) returned for that user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="auth-pg-hba-conf"><literal>samehost</literal></link>
- and <literal>samenet</literal> designations to
- <filename>pg_hba.conf</filename> (Stef Walter)
- </para>
-
- <para>
- These match the server's <acronym>IP</acronym> address and subnet address
- respectively.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pass trusted SSL root certificate names to the client so the client
- can return an appropriate client certificate (Craig Ringer)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add the ability for clients to set an <link
- linkend="libpq-connect-application-name">application
- name</link>, which is displayed in
- <structname>pg_stat_activity</structname> (Dave Page)
- </para>
-
- <para>
- This allows administrators to characterize database traffic
- and troubleshoot problems by source application.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a SQLSTATE option (<literal>%e</literal>) to <link
- linkend="guc-log-line-prefix"><varname>log_line_prefix</varname></link>
- (Guillaume Smet)
- </para>
-
- <para>
- This allows users to compile statistics on errors and messages
- by error code number.
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- Write to the Windows event log in <acronym>UTF16</acronym> encoding
- (Itagaki Takahiro)
- </para>
-
- <para>
- Now there is true multilingual support for PostgreSQL log messages
- on Windows.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Statistics Counters</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</function></link>
- to reset the cluster-wide shared statistics for the
- background writer (Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</function></link>
- and <function>pg_stat_reset_single_function_counters()</function>
- to allow resetting the statistics counters for individual
- tables and functions (Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow setting of configuration parameters based on <link
- linkend="sql-alterrole">database/role combinations</link>
- (Alvaro Herrera)
- </para>
-
- <para>
- Previously only per-database and per-role settings were possible,
- not combinations. All role and database settings are now stored
- in the new <structname>pg_db_role_setting</structname> system catalog. A new
- <application>psql</application> command <literal>\drds</literal> shows these settings.
- The legacy system views <structname>pg_roles</structname>,
- <structname>pg_shadow</structname>, and <structname>pg_user</structname>
- do not show combination settings, and therefore no longer
- completely represent the configuration for a user or database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server parameter <link
- linkend="guc-bonjour"><varname>bonjour</varname></link>, which
- controls whether a Bonjour-enabled server advertises
- itself via <productname>Bonjour</productname> (Tom Lane)
- </para>
-
- <para>
- The default is off, meaning it does not advertise. This allows
- packagers to distribute Bonjour-enabled builds without worrying
- that individual users might not want the feature.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server parameter <link
- linkend="guc-enable-material"><varname>enable_material</varname></link>, which
- controls the use of materialize nodes in the optimizer
- (Robert Haas)
- </para>
-
- <para>
- The default is on. When off, the optimizer will not add
- materialize nodes purely for performance reasons, though they
- will still be used when necessary for correctness.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change server parameter <link
- linkend="guc-log-temp-files"><varname>log_temp_files</varname></link> to
- use default file size units of kilobytes (Robert Haas)
- </para>
-
- <para>
- Previously this setting was interpreted in bytes if no units were
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Log changes of parameter values when <filename>postgresql.conf</filename> is
- reloaded (Peter Eisentraut)
- </para>
-
- <para>
- This lets administrators and security staff audit changes of database
- settings, and is also very convenient for checking the effects of
- <filename>postgresql.conf</filename> edits.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly enforce superuser permissions for custom server parameters
- (Tom Lane)
- </para>
-
- <para>
- Non-superusers can no longer issue <command>ALTER
- ROLE</command>/<command>DATABASE SET</command> for parameters that are not currently
- known to the server. This allows the server to correctly check that
- superuser-only parameters are only set by superusers. Previously,
- the <literal>SET</literal> would be allowed and then ignored at session start,
- making superuser-only custom parameters much less useful than they
- should be.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Perform <link linkend="sql-for-update-share"><command>SELECT
- FOR UPDATE</command>/<literal>SHARE</literal></link> processing after
- applying <literal>LIMIT</literal>, so the number of rows returned
- is always predictable (Tom Lane)
- </para>
-
- <para>
- Previously, changes made by concurrent transactions could cause a
- <command>SELECT FOR UPDATE</command> to unexpectedly return fewer rows than
- specified by its <literal>LIMIT</literal>. <literal>FOR UPDATE</literal> in combination
- with <literal>ORDER BY</literal> can still produce surprising results, but that
- can be corrected by placing <literal>FOR UPDATE</literal> in a subquery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow mixing of traditional and SQL-standard <link
- linkend="sql-limit"><literal>LIMIT</literal>/<literal>OFFSET</literal></link>
- syntax (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Extend the supported frame options in <link
- linkend="sql-window">window functions</link> (Hitoshi
- Harada)
- </para>
-
- <para>
- Frames can now start with <literal>CURRENT ROW</literal>, and the <literal>ROWS
- <replaceable>n</replaceable> PRECEDING</literal>/<literal>FOLLOWING</literal> options are now
- supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>SELECT INTO</command> and <command>CREATE TABLE AS</command> return
- row counts to the client in their command tags
- (Boszormenyi Zoltan)
- </para>
-
- <para>
- This can save an entire round-trip to the client, allowing result counts
- and pagination to be calculated without an additional
- <command>COUNT</command> query.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Unicode Strings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support Unicode surrogate pairs (dual 16-bit representation) in
- <link
- linkend="sql-syntax-strings-uescape"><literal>U&amp;</literal></link>
- strings and identifiers (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Unicode escapes in <link
- linkend="sql-syntax-strings-escape"><literal>E'...'</literal></link>
- strings (Marko Kreen)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Speed up <link linkend="sql-createdatabase"><command>CREATE
- DATABASE</command></link> by deferring flushes to disk (Andres
- Freund, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-comment">comments</link> on
- columns of tables, views, and composite types only, not other
- relation types such as indexes and <acronym>TOAST</acronym> tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the creation of <link
- linkend="sql-createtype-enum">enumerated types</link> containing
- no values (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Let values of columns having storage type <literal>MAIN</literal> remain on
- the main heap page unless the row cannot fit on a page (Kevin Grittner)
- </para>
-
- <para>
- Previously <literal>MAIN</literal> values were forced out to <acronym>TOAST</acronym>
- tables until the row size was less than one-quarter of the page size.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER TABLE</command></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Implement <literal>IF EXISTS</literal> for <literal>ALTER TABLE DROP COLUMN</literal>
- and <literal>ALTER TABLE DROP CONSTRAINT </literal> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER TABLE</command> commands that rewrite tables to skip
- <acronym>WAL</acronym> logging (Itagaki Takahiro)
- </para>
-
- <para>
- Such operations either produce a new copy of the table or are rolled
- back, so <acronym>WAL</acronym> archiving can be skipped, unless running in
- continuous archiving mode. This reduces I/O overhead and improves
- performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <literal>ALTER TABLE <replaceable>table</replaceable> ADD COLUMN
- <replaceable>col</replaceable> serial</literal> when done by non-owner of table
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-createtable"><command>CREATE TABLE</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for copying <literal>COMMENTS</literal> and <literal>STORAGE</literal>
- settings in <command>CREATE TABLE ... LIKE</command> commands
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a shortcut for copying all properties in <command>CREATE
- TABLE ... LIKE</command> commands (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the SQL-standard
- <literal>CREATE TABLE ... OF <replaceable>type</replaceable></literal> command
- (Peter Eisentraut)
- </para>
-
- <para>
- This allows creation of a table that matches an existing composite
- type. Additional constraints and defaults can be specified in the
- command.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Constraints</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-createtable-compatibility">deferrable
- unique constraints</link> (Dean Rasheed)
- </para>
-
- <para>
- This allows mass updates, such as
- <literal>UPDATE tab SET col = col + 1</literal>,
- to work reliably
- on columns that have unique indexes or are marked as primary keys.
- If the constraint is specified as <literal>DEFERRABLE</literal> it will be
- checked at the end of the statement, rather than after each row is
- updated. The constraint check can also be deferred until the end of the
- current transaction, allowing such updates to be spread over multiple
- SQL commands.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add
- <link linkend="ddl-constraints-exclusion">exclusion constraints</link>
- (Jeff Davis)
- </para>
-
- <para>
- Exclusion constraints generalize uniqueness constraints by allowing
- arbitrary comparison operators, not just equality. They are created
- with the <link linkend="sql-createtable-exclude"><command>CREATE
- TABLE CONSTRAINT ... EXCLUDE</command></link> clause.
- The most common use of exclusion constraints is to specify that column
- entries must not overlap, rather than simply not be equal. This is
- useful for time periods and other ranges, as well as arrays.
- This feature enhances checking of data integrity for many
- calendaring, time-management, and scientific applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve uniqueness-constraint violation error messages to
- report the values causing the failure (Itagaki Takahiro)
- </para>
-
- <para>
- For example, a uniqueness constraint violation might now report
- <literal>Key (x)=(2) already exists</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Object Permissions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add the ability to make mass permission changes across a whole
- schema using the new <link
- linkend="sql-grant"><command>GRANT</command>/<command>REVOKE
- IN SCHEMA</command></link> clause (Petr Jelinek)
- </para>
-
- <para>
- This simplifies management of object permissions
- and makes it easier to utilize database roles for application
- data security.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-alterdefaultprivileges"><command>ALTER
- DEFAULT PRIVILEGES</command></link> command to control privileges
- of objects created later (Petr Jelinek)
- </para>
-
- <para>
- This greatly simplifies the assignment of object privileges in a
- complex database application. Default privileges can be set for
- tables, views, sequences, and functions. Defaults may be assigned on a
- per-schema basis, or database-wide.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the ability to control large object (BLOB) permissions with
- <command>GRANT</command>/<command>REVOKE</command> (KaiGai Kohei)
- </para>
-
- <para>
- Formerly, any database user could read or modify any large object.
- Read and write permissions can now be granted and revoked per
- large object, and the ownership of large objects is tracked.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Utility Operations</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <link linkend="sql-listen"><command>LISTEN</command></link>/<link
- linkend="sql-notify"><command>NOTIFY</command></link> store pending events
- in a memory queue, rather than in a system table (Joachim
- Wieland)
- </para>
-
- <para>
- This substantially improves performance, while retaining the existing
- features of transactional support and guaranteed delivery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-notify"><command>NOTIFY</command></link>
- to pass an optional <quote>payload</quote> string to listeners
- (Joachim Wieland)
- </para>
-
- <para>
- This greatly improves the usefulness of
- <command>LISTEN</command>/<command>NOTIFY</command> as a
- general-purpose event queue system.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-cluster"><command>CLUSTER</command></link>
- on all per-database system catalogs (Tom Lane)
- </para>
-
- <para>
- Shared catalogs still cannot be clustered.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="sql-copy"><command>COPY</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Accept <literal>COPY ... CSV FORCE QUOTE *</literal>
- (Itagaki Takahiro)
- </para>
-
- <para>
- Now <literal>*</literal> can be used as shorthand for <quote>all columns</quote>
- in the <literal>FORCE QUOTE</literal> clause.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <command>COPY</command> syntax that allows options to be
- specified inside parentheses (Robert Haas, Emmanuel Cecchet)
- </para>
-
- <para>
- This allows greater flexibility for future <command>COPY</command> options.
- The old syntax is still supported, but only for pre-existing options.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-explain"><command>EXPLAIN</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <command>EXPLAIN</command> to output in <acronym>XML</acronym>,
- <acronym>JSON</acronym>, or <acronym>YAML</acronym> format (Robert Haas, Greg
- Sabino Mullane)
- </para>
-
- <para>
- The new output formats are easily machine-readable, supporting the
- development of new tools for analysis of <command>EXPLAIN</command> output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <literal>BUFFERS</literal> option to report query
- buffer usage during <command>EXPLAIN ANALYZE</command> (Itagaki Takahiro)
- </para>
-
- <para>
- This allows better query profiling for individual queries.
- Buffer usage is no longer reported in the output for <link
- linkend="runtime-config-statistics-monitor">log_statement_stats</link>
- and related settings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add hash usage information to <command>EXPLAIN</command> output (Robert
- Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <command>EXPLAIN</command> syntax that allows options to be
- specified inside parentheses (Robert Haas)
- </para>
-
- <para>
- This allows greater flexibility for future <command>EXPLAIN</command> options.
- The old syntax is still supported, but only for pre-existing options.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-vacuum"><command>VACUUM</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change <command>VACUUM FULL</command> to rewrite the entire table and
- rebuild its indexes, rather than moving individual rows around to
- compact space (Itagaki Takahiro, Tom Lane)
- </para>
-
- <para>
- The previous method was usually slower and caused index bloat.
- Note that the new method will use more disk space transiently
- during <command>VACUUM FULL</command>; potentially as much as twice
- the space normally occupied by the table and its indexes.
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- Add new <command>VACUUM</command> syntax that allows options to be
- specified inside parentheses (Itagaki Takahiro)
- </para>
-
- <para>
- This allows greater flexibility for future <command>VACUUM</command> options.
- The old syntax is still supported, but only for pre-existing options.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow an index to be named automatically by omitting the index name in
- <link linkend="sql-createindex"><command>CREATE INDEX</command></link>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- By default, multicolumn indexes are now named after all their columns;
- and index expression columns are now named based on their expressions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reindexing shared system catalogs is now fully transactional
- and crash-safe (Tom Lane)
- </para>
-
- <para>
- Formerly, reindexing a shared index was only allowed in standalone
- mode, and a crash during the operation could leave the index in
- worse condition than it was before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>point_ops</literal> operator class for <acronym>GiST</acronym>
- (Teodor Sigaev)
- </para>
-
- <para>
- This feature permits <acronym>GiST</acronym> indexing of <type>point</type>
- columns. The index can be used for several types of queries
- such as <replaceable>point</replaceable> <literal>&lt;@</literal> <replaceable>polygon</replaceable>
- (point is in polygon). This should make many
- <productname>PostGIS</productname> queries faster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use red-black binary trees for <acronym>GIN</acronym> index creation
- (Teodor Sigaev)
- </para>
-
- <para>
- Red-black trees are self-balancing. This avoids slowdowns in
- cases where the input is in nonrandom order.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="datatype-binary"><type>bytea</type></link> values
- to be written in hex notation (Peter Eisentraut)
- </para>
-
- <para>
- The server parameter <link
- linkend="guc-bytea-output"><varname>bytea_output</varname></link> controls
- whether hex or traditional format is used for <type>bytea</type>
- output. Libpq's <function>PQescapeByteaConn()</function> function automatically
- uses the hex format when connected to <productname>PostgreSQL</productname> 9.0
- or newer servers. However, pre-9.0 libpq versions will not
- correctly process hex format from newer servers.
- </para>
-
- <para>
- The new hex format will be directly compatible with more applications
- that use binary data, allowing them to store and retrieve it without
- extra conversion. It is also significantly faster to read and write
- than the traditional format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow server parameter <link
- linkend="guc-extra-float-digits">extra_float_digits</link>
- to be increased to <literal>3</literal> (Tom Lane)
- </para>
-
- <para>
- The previous maximum <varname>extra_float_digits</varname> setting was
- <literal>2</literal>. There are cases where 3 digits are needed to dump and
- restore <type>float4</type> values exactly. <application>pg_dump</application> will
- now use the setting of 3 when dumping from a server that allows it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten input checking for <type>int2vector</type> values (Caleb
- Welton)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="textsearch">Full Text Search</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add prefix support in <literal>synonym</literal> dictionaries
- (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <firstterm>filtering</firstterm> dictionaries (Teodor Sigaev)
- </para>
-
- <para>
- Filtering dictionaries allow tokens to be modified then passed to
- subsequent dictionaries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow underscores in email-address tokens (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use more standards-compliant rules for parsing <acronym>URL</acronym> tokens
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow function calls to supply parameter names and match them to named
- parameters in the function definition (Pavel Stehule)
- </para>
-
- <para>
- For example, if a function is defined to take parameters <literal>a</literal>
- and <literal>b</literal>, it can be called with <literal>func(a := 7, b
- := 12)</literal> or <literal>func(b := 12, a := 7)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support locale-specific <link
- linkend="functions-posix-regexp">regular expression</link>
- processing with <acronym>UTF-8</acronym> server encoding (Tom Lane)
- </para>
-
- <para>
- Locale-specific regular expression functionality includes
- case-insensitive matching and locale-specific character classes.
- Previously, these features worked correctly for non-<acronym>ASCII</acronym>
- characters only if the database used a single-byte server encoding (such
- as LATIN1). They will still misbehave in multi-byte encodings other
- than <acronym>UTF-8</acronym>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for scientific notation in <link
- linkend="functions-formatting"><function>to_char()</function></link>
- (<link linkend="functions-formatting-numeric-table"><literal>EEEE</literal>
- specification</link>)
- (Pavel Stehule, Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>to_char()</function> honor <link
- linkend="functions-formatting-datetimemod-table"><literal>FM</literal></link>
- (fill mode) in <literal>Y</literal>, <literal>YY</literal>, and
- <literal>YYY</literal> specifications (Bruce Momjian, Tom Lane)
- </para>
-
- <para>
- It was already honored by <literal>YYYY</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> to output localized numeric and monetary
- strings in the correct encoding on <productname>Windows</productname>
- (Hiroshi Inoue, Itagaki Takahiro, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correct calculations of <link
- linkend="functions-geometry-op-table"><quote>overlaps</quote></link>
- and <quote>contains</quote> operations for polygons (Teodor Sigaev)
- </para>
-
- <para>
- The polygon <literal>&amp;&amp;</literal> (overlaps) operator formerly just
- checked to see if the two polygons' bounding boxes overlapped. It now
- does a more correct check. The polygon <literal>@&gt;</literal> and
- <literal>&lt;@</literal> (contains/contained by) operators formerly checked
- to see if one polygon's vertexes were all contained in the other;
- this can wrongly report <quote>true</quote> for some non-convex polygons.
- Now they check that all line segments of one polygon are contained in
- the other.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Aggregates</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow aggregate functions to use <link
- linkend="syntax-aggregates"><literal>ORDER BY</literal></link> (Andrew Gierth)
- </para>
-
- <para>
- For example, this is now supported: <literal>array_agg(a ORDER BY
- b)</literal>. This is useful with aggregates for which the order of input
- values is significant, and eliminates the need to use a nonstandard
- subquery to determine the ordering.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Multi-argument aggregate functions can now use <literal>DISTINCT</literal>
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <link
- linkend="functions-aggregate-table"><function>string_agg()</function></link>
- aggregate function to combine values into a single
- string (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Aggregate functions that are called with <literal>DISTINCT</literal> are
- now passed NULL values if the aggregate transition function is
- not marked as <literal>STRICT</literal> (Andrew Gierth)
- </para>
-
- <para>
- For example, <literal>agg(DISTINCT x)</literal> might pass a NULL <literal>x</literal>
- value to <function>agg()</function>. This is more consistent with the behavior
- in non-<literal>DISTINCT</literal> cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Bit Strings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-binarystring-other"><function>get_bit()</function></link>
- and <function>set_bit()</function> functions for <type>bit</type>
- strings, mirroring those for <type>bytea</type> (Leonardo
- F)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <link
- linkend="functions-string-sql"><function>OVERLAY()</function></link>
- (replace) for <type>bit</type> strings and <type>bytea</type>
- (Leonardo F)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Object Information Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-admin-dbsize"><function>pg_table_size()</function></link>
- and <function>pg_indexes_size()</function> to provide a more
- user-friendly interface to the <function>pg_relation_size()</function>
- function (Bernd Helmle)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-info-access-table"><function>has_sequence_privilege()</function></link>
- for sequence permission checking (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the <link linkend="information-schema">information_schema</link>
- views to conform to SQL:2008
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <literal>information_schema</literal> views correctly display maximum
- octet lengths for <type>char</type> and <type>varchar</type> columns (Peter
- Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up <literal>information_schema</literal> privilege views
- (Joachim Wieland)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Function and Trigger Creation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support execution of anonymous code blocks using the <link
- linkend="sql-do"><command>DO</command></link> statement
- (Petr Jelinek, Joshua Tolley, Hannu Valtonen)
- </para>
-
- <para>
- This allows execution of server-side code without the need to create
- and delete a temporary function definition. Code can be executed in
- any language for which the user has permissions to define a function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement SQL-standard-compliant <link
- linkend="sql-createtrigger">per-column triggers</link>
- (Itagaki Takahiro)
- </para>
-
- <para>
- Such triggers are fired only when the specified column(s) are affected
- by the query, e.g. appear in an <command>UPDATE</command>'s <literal>SET</literal>
- list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <literal>WHEN</literal> clause to <link
- linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link>
- to allow control over whether a trigger is fired (Itagaki
- Takahiro)
- </para>
-
- <para>
- While the same type of check can always be performed inside the
- trigger, doing it in an external <literal>WHEN</literal> clause can have
- performance benefits.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add the <literal>OR REPLACE</literal> clause to <link
- linkend="sql-createlanguage"><command>CREATE LANGUAGE</command></link>
- (Tom Lane)
- </para>
-
- <para>
- This is helpful to optionally install a language if it does not
- already exist, and is particularly helpful now that PL/pgSQL is
- installed by default.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side
- Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Install PL/pgSQL by default (Bruce Momjian)
- </para>
-
- <para>
- The language can still be removed from a particular database if the
- administrator has security or performance concerns about making it
- available.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of cases where PL/pgSQL variable names conflict with
- identifiers used in queries within a function
- (Tom Lane)
- </para>
-
- <para>
- The default behavior is now to throw an error when there is a conflict,
- so as to avoid surprising behaviors. This can be modified, via the
- configuration parameter <link
- linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</varname></link>
- or the per-function option <literal>#variable_conflict</literal>, to allow
- either the variable or the query-supplied column to be used. In any
- case PL/pgSQL will no longer attempt to substitute variables in places
- where they would not be syntactically valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/pgSQL use the main lexer, rather than its own version
- (Tom Lane)
- </para>
-
- <para>
- This ensures accurate tracking of the main system's behavior for details
- such as string escaping. Some user-visible details, such as the set
- of keywords considered reserved in PL/pgSQL, have changed in
- consequence.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid throwing an unnecessary error for an invalid record reference
- (Tom Lane)
- </para>
-
- <para>
- An error is now thrown only if the reference is actually fetched,
- rather than whenever the enclosing expression is reached. For
- example, many people have tried to do this in triggers:
-<programlisting>
-if TG_OP = 'INSERT' and NEW.col1 = ... then
-</programlisting>
- This will now actually work as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve PL/pgSQL's ability to handle row types with dropped columns
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow input parameters to be assigned values within
- PL/pgSQL functions (Steve Prentice)
- </para>
-
- <para>
- Formerly, input parameters were treated as being declared
- <literal>CONST</literal>, so the function's code could not change their
- values. This restriction has been removed to simplify
- porting of functions from other DBMSes that do not impose the
- equivalent restriction. An input parameter now acts like a local
- variable initialized to the passed-in value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error location reporting in PL/pgSQL (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <replaceable>count</replaceable> and <literal>ALL</literal> options to <command>MOVE
- FORWARD</command>/<literal>BACKWARD</literal> in PL/pgSQL (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL's <literal>WHERE CURRENT OF</literal> to use a cursor
- variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL's <command>OPEN <replaceable>cursor</replaceable> FOR EXECUTE</command> to
- use parameters (Pavel Stehule, Itagaki Takahiro)
- </para>
-
- <para>
- This is accomplished with a new <literal>USING</literal> clause.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new PL/Perl functions: <link
- linkend="plperl-utility-functions"><function>quote_literal()</function></link>,
- <function>quote_nullable()</function>, <function>quote_ident()</function>,
- <function>encode_bytea()</function>, <function>decode_bytea()</function>,
- <function>looks_like_number()</function>,
- <function>encode_array_literal()</function>,
- <function>encode_array_constructor()</function> (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add server parameter <link
- linkend="guc-plperl-on-init"><varname>plperl.on_init</varname></link> to
- specify a PL/Perl initialization function (Tim
- Bunce)
- </para>
-
- <para>
- <link
- linkend="guc-plperl-on-plperl-init"><varname>plperl.on_plperl_init</varname></link>
- and <link
- linkend="guc-plperl-on-plperl-init"><varname>plperl.on_plperlu_init</varname></link>
- are also available for initialization that is specific to the trusted
- or untrusted language respectively.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <command>END</command> blocks in PL/Perl (Tim Bunce)
- </para>
-
- <para>
- <command>END</command> blocks do not currently allow database access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>use strict</command> in PL/Perl (Tim Bunce)
- </para>
-
- <para>
- Perl <literal>strict</literal> checks can also be globally enabled with the
- new server parameter <link
- linkend="guc-plperl-use-strict"><varname>plperl.use_strict</varname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>require</command> in PL/Perl (Tim Bunce)
- </para>
-
- <para>
- This basically tests to see if the module is loaded, and if not,
- generates an error. It will not allow loading of modules that
- the administrator has not preloaded via the initialization parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>use feature</command> in PL/Perl if Perl version 5.10 or
- later is used (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Verify that PL/Perl return values are valid in the server encoding
- (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add Unicode support in PL/Python (Peter Eisentraut)
- </para>
-
- <para>
- Strings are automatically converted from/to the server encoding as
- necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <type>bytea</type> support in PL/Python (Caleb Welton)
- </para>
-
- <para>
- <type>Bytea</type> values passed into PL/Python are now represented as
- binary, rather than the PostgreSQL <type>bytea</type> text format.
- <type>Bytea</type> values containing null bytes are now also output
- properly from PL/Python. Passing of boolean, integer, and float
- values was also improved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <link linkend="plpython-arrays">arrays</link> as parameters and
- return values in PL/Python (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve mapping of SQL domains to Python types (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>Python</application> 3 support to PL/Python (Peter Eisentraut)
- </para>
-
- <para>
- The new server-side language is called <link
- linkend="plpython-python23"><literal>plpython3u</literal></link>. This
- cannot be used in the same session with the
- <application>Python</application> 2 server-side language.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error location and exception reporting in PL/Python (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add an <option>--analyze-only</option> option to <link
- linkend="app-vacuumdb"><command>vacuumdb</command></link>, to analyze without
- vacuuming (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-psql"><application>psql</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for quoting/escaping the values of <application>psql</application>
- <link linkend="app-psql-variables">variables</link> as SQL strings or
- identifiers (Pavel Stehule, Robert Haas)
- </para>
-
- <para>
- For example, <literal>:'var'</literal> will produce the value of
- <literal>var</literal> quoted and properly escaped as a literal string, while
- <literal>:"var"</literal> will produce its value quoted and escaped as an
- identifier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore a leading UTF-8-encoded Unicode byte-order marker in
- script files read by <application>psql</application> (Itagaki Takahiro)
- </para>
-
- <para>
- This is enabled when the client encoding is <acronym>UTF-8</acronym>.
- It improves compatibility with certain editors, mostly on Windows,
- that insist on inserting such markers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>psql --file -</command> to properly honor <link
- linkend="r1-app-psql-3"><option>--single-transaction</option></link>
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid overwriting of <application>psql</application>'s command-line history when
- two <application>psql</application> sessions are run concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>psql</application>'s tab completion support (Itagaki
- Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show <literal>\timing</literal> output when it is enabled, regardless of
- <quote>quiet</quote> mode (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><application>psql</application> Display</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve display of wrapped columns in <application>psql</application> (Roger
- Leigh)
- </para>
-
- <para>
- This behavior is now the default.
- The previous formatting is available by using <command>\pset linestyle
- old-ascii</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> to use fancy Unicode line-drawing
- characters via <command>\pset linestyle unicode</command> (Roger Leigh)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- <sect5>
- <title><application>psql</application> <link
- linkend="app-psql-meta-commands"><command>\d</command></link>
- Commands</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>\d</command> show child tables that inherit from the specified
- parent (Damien Clochard)
- </para>
-
- <para>
- <command>\d</command> shows only the number of child tables, while
- <command>\d+</command> shows the names of all child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show definitions of index columns in <command>\d index_name</command>
- (Khee Chin)
- </para>
-
- <para>
- The definition is useful for expression indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show a view's defining query only in
- <command>\d+</command>, not in <command>\d</command> (Peter Eisentraut)
- </para>
-
- <para>
- Always including the query was deemed overly verbose.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
- </sect4>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <application>pg_dump</application>/<application>pg_restore</application>
- <link linkend="pg-dump-options"><option>--clean</option></link>
- also remove large objects (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to properly dump large objects when
- <literal>standard_conforming_strings</literal> is enabled (Tom Lane)
- </para>
-
- <para>
- The previous coding could fail when dumping to an archive file
- and then generating script output from <application>pg_restore</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>pg_restore</application> now emits large-object data in hex format
- when generating script output (Tom Lane)
- </para>
-
- <para>
- This could cause compatibility problems if the script is then
- loaded into a pre-9.0 server. To work around that, restore
- directly to the server, instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dump</application> to dump comments attached to columns
- of composite types (Taro Minowa (Higepon))
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> <link
- linkend="pg-dump-options"><option>--verbose</option></link>
- output the <application>pg_dump</application> and server versions
- in text output mode (Jim Cox, Tom Lane)
- </para>
-
- <para>
- These were already provided in custom output mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>pg_restore</application> now complains if any command-line arguments
- remain after the switches and optional file name (Tom Lane)
- </para>
-
- <para>
- Previously, it silently ignored any such arguments.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link
- linkend="app-pg-ctl"><application>pg_ctl</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <application>pg_ctl</application> to be used safely to start the
- <application>postmaster</application> during a system reboot (Tom Lane)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application>'s parent process could have been
- mistakenly identified as a running <application>postmaster</application> based on
- a stale <application>postmaster</application> lock file, resulting in a transient
- failure to start the database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give <application>pg_ctl</application> the ability to initialize the database
- (by invoking <application>initdb</application>) (Zdenek Kotala)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title><application>Development Tools</application></title>
-
- <sect4>
- <title><link linkend="libpq"><application>libpq</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new <application>libpq</application> functions
- <link
- linkend="libpq-connect"><function>PQconnectdbParams()</function></link>
- and <function>PQconnectStartParams()</function> (Guillaume
- Lelarge)
- </para>
-
- <para>
- These functions are similar to <function>PQconnectdb()</function> and
- <function>PQconnectStart()</function> except that they accept a null-terminated
- array of connection options, rather than requiring all options to
- be provided in a single string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>libpq</application> functions <link
- linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</function></link>
- and <function>PQescapeIdentifier()</function> (Robert Haas)
- </para>
-
- <para>
- These functions return appropriately quoted and escaped SQL string
- literals and identifiers. The caller is not required to pre-allocate
- the string result, as is required by <function>PQescapeStringConn()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for a per-user service file (<link
- linkend="libpq-pgservice"><filename>.pg_service.conf</filename></link>),
- which is checked before the site-wide service file
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly report an error if the specified <application>libpq</application> service
- cannot be found (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="libpq-keepalives">TCP keepalive settings</link>
- in libpq (Tollef Fog Heen, Fujii Masao, Robert Haas)
- </para>
-
- <para>
- Keepalive settings were already supported on the server end of
- TCP connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid extra system calls to block and unblock <literal>SIGPIPE</literal>
- in <application>libpq</application>, on platforms that offer alternative methods
- (Jeremy Kerr)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a <link linkend="libpq-pgpass"><filename>.pgpass</filename></link>-supplied
- password fails, mention where the password came from in the error
- message (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Load all SSL certificates given in the client certificate file
- (Tom Lane)
- </para>
-
- <para>
- This improves support for indirectly-signed SSL certificates.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="ecpg"><application>ecpg</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="ecpg-descriptors"><acronym>SQLDA</acronym></link>
- (SQL Descriptor Area) support to <application>ecpg</application>
- (Boszormenyi Zoltan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</command>
- [ <literal>OUTPUT</literal> ]</link> statement to <application>ecpg</application>
- (Boszormenyi Zoltan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an <link linkend="ecpg-library">ECPGtransactionStatus</link>
- function to return the current transaction status (Bernd Helmle)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <literal>string</literal> data type in <application>ecpg</application>
- Informix-compatibility mode (Boszormenyi Zoltan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>ecpg</application> to use <literal>new</literal> and <literal>old</literal>
- variable names without restriction (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>ecpg</application> to use variable names in
- <function>free()</function> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>ecpg_dynamic_type()</function> return zero for non-SQL3 data
- types (Michael Meskes)
- </para>
-
- <para>
- Previously it returned the negative of the data type OID.
- This could be confused with valid type OIDs, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <type>long long</type> types on platforms that already have 64-bit
- <type>long</type> (Michael Meskes)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><application>ecpg</application> Cursors</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add out-of-scope cursor support in <application>ecpg</application>'s native mode
- (Boszormenyi Zoltan)
- </para>
-
- <para>
- This allows <command>DECLARE</command> to use variables that are not in
- scope when <command>OPEN</command> is called. This facility already existed
- in <application>ecpg</application>'s Informix-compatibility mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow dynamic cursor names in <application>ecpg</application> (Boszormenyi Zoltan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>ecpg</application> to use noise words <literal>FROM</literal> and
- <literal>IN</literal> in <command>FETCH</command> and <command>MOVE</command> (Boszormenyi
- Zoltan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Build Options</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Enable client thread safety by default (Bruce Momjian)
- </para>
-
- <para>
- The thread-safety option can be disabled with <link
- linkend="configure"><literal>configure</literal></link>
- <option>--disable-thread-safety</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for controlling the Linux out-of-memory killer
- (Alex Hunsaker, Tom Lane)
- </para>
-
- <para>
- Now that <filename>/proc/self/oom_adj</filename> allows disabling
- of the <productname>Linux</productname> out-of-memory (<acronym>OOM</acronym>)
- killer, it's recommendable to disable OOM kills for the postmaster.
- It may then be desirable to re-enable OOM kills for the postmaster's
- child processes. The new compile-time option <link
- linkend="linux-memory-overcommit"><literal>LINUX_OOM_ADJ</literal></link>
- allows the killer to be reactivated for child processes.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Makefiles</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- New <filename>Makefile</filename> targets <link
- linkend="build"><literal>world</literal></link>,
- <literal>install-world</literal>, and <literal>installcheck-world</literal>
- (Andrew Dunstan)
- </para>
-
- <para>
- These are similar to the existing <literal>all</literal>, <literal>install</literal>,
- and <literal>installcheck</literal> targets, but they also build the
- <acronym>HTML</acronym> documentation, build and test <filename>contrib</filename>,
- and test server-side languages and <application>ecpg</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add data and documentation installation location control to
- <acronym>PGXS</acronym> Makefiles (Mark Cave-Ayland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Makefile rules to build the <productname>PostgreSQL</productname> documentation
- as a single <acronym>HTML</acronym> file or as a single plain-text file
- (Peter Eisentraut, Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Windows</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support compiling on <link
- linkend="install-windows">64-bit
- <productname>Windows</productname></link> and running in 64-bit
- mode (Tsutomu Yamada, Magnus Hagander)
- </para>
-
- <para>
- This allows for large shared memory sizes on <productname>Windows</productname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support server builds using <link
- linkend="install-windows-full"><productname>Visual Studio
- 2008</productname></link> (Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Distribute prebuilt documentation in a subdirectory tree, rather than
- as tar archive files inside the distribution tarball
- (Peter Eisentraut)
- </para>
-
- <para>
- For example, the prebuilt <acronym>HTML</acronym> documentation is now in
- <filename>doc/src/sgml/html/</filename>; the manual pages are packaged
- similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the server's lexer reentrant (Tom Lane)
- </para>
-
- <para>
- This was needed for use of the lexer by PL/pgSQL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of memory allocation (Tom Lane, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- User-defined constraint triggers now have entries in
- <structname>pg_constraint</structname> as well as <structname>pg_trigger</structname>
- (Tom Lane)
- </para>
-
- <para>
- Because of this change,
- <structname>pg_constraint</structname>.<structfield>pgconstrname</structfield> is now
- redundant and has been removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add system catalog columns
- <structname>pg_constraint</structname>.<structfield>conindid</structfield> and
- <structname>pg_trigger</structname>.<structfield>tgconstrindid</structfield>
- to better document the use of indexes for constraint
- enforcement (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow multiple conditions to be communicated to backends using a single
- operating system signal (Fujii Masao)
- </para>
-
- <para>
- This allows new features to be added without a platform-specific
- constraint on the number of signal conditions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve source code test coverage, including <filename>contrib</filename>, PL/Python,
- and PL/Perl (Peter Eisentraut, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the use of flat files for system table bootstrapping
- (Tom Lane, Alvaro Herrera)
- </para>
-
- <para>
- This improves performance when using many roles or
- databases, and eliminates some possible failure conditions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Automatically generate the initial contents of
- <structname>pg_attribute</structname> for <quote>bootstrapped</quote> catalogs
- (John Naylor)
- </para>
-
- <para>
- This greatly simplifies changes to these catalogs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Split the processing of
- <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command> operations out
- of <filename>execMain.c</filename> (Marko Tiikkaja)
- </para>
-
- <para>
- Updates are now executed in a separate ModifyTable node. This change is
- necessary infrastructure for future improvements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Simplify translation of <application>psql</application>'s SQL help text
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the lengths of some file names so that all file paths in the
- distribution tarball are less than 100 characters (Tom Lane)
- </para>
-
- <para>
- Some decompression programs have problems with longer file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a new <link
- linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</literal></link>
- <literal>SQLSTATE</literal> error code (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- With authors' permissions, remove the few remaining personal source code
- copyright notices (Bruce Momjian)
- </para>
-
- <para>
- The personal copyright notices were insignificant but the community
- occasionally had to answer questions about them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new documentation <link linkend="non-durability">section</link>
- about running <productname>PostgreSQL</productname> in non-durable mode
- to improve performance (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restructure the <acronym>HTML</acronym> documentation
- <filename>Makefile</filename> rules to make their dependency checks work
- correctly, avoiding unnecessary rebuilds (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <productname>DocBook</productname> <acronym>XSL</acronym> stylesheets for man page
- building, rather than <productname>Docbook2X</productname> (Peter Eisentraut)
- </para>
-
- <para>
- This changes the set of tools needed to build the man pages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve PL/Perl code structure (Tim Bunce)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error context reports in PL/Perl (Alexey Klyukin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>New Build Requirements</title>
-
- <para>
- Note that these requirements do not apply when building from a
- distribution tarball, since tarballs include the files that these
- programs are used to build.
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Require <application>Autoconf</application> 2.63 to build
- <application>configure</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <application>Flex</application> 2.5.31 or later to build
- from a <acronym>CVS</acronym> checkout (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <application>Perl</application> version 5.8 or later to build
- from a <acronym>CVS</acronym> checkout (John Naylor, Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Portability</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use a more modern <acronym>API</acronym> for <application>Bonjour</application> (Tom Lane)
- </para>
-
- <para>
- Bonjour support now requires <productname>macOS</productname> 10.3 or later.
- The older API has been deprecated by Apple.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add spinlock support for the <productname>SuperH</productname>
- architecture (Nobuhiro Iwamatsu)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-<application>GCC</application> compilers to use inline functions if
- they support them (Kurt Harriman)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove support for platforms that don't have a working 64-bit
- integer data type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restructure use of <literal>LDFLAGS</literal> to be more consistent
- across platforms (Tom Lane)
- </para>
-
- <para>
- <literal>LDFLAGS</literal> is now used for linking both executables and shared
- libraries, and we add on <literal>LDFLAGS_EX</literal> when linking
- executables, or <literal>LDFLAGS_SL</literal> when linking shared libraries.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Programming</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make backend header files safe to include in <productname>C++</productname>
- (Kurt Harriman, Peter Eisentraut)
- </para>
-
- <para>
- These changes remove keyword conflicts that previously made
- <productname>C++</productname> usage difficult in backend code. However, there
- are still other complexities when using <productname>C++</productname> for backend
- functions. <literal>extern "C" { }</literal> is still necessary in
- appropriate places, and memory management and error handling are
- still problematic.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="xaggr"><function>AggCheckCallContext()</function></link>
- for use in detecting if a <productname>C</productname> function is
- being called as an aggregate (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change calling convention for <function>SearchSysCache()</function> and related
- functions to avoid hard-wiring the maximum number of cache keys
- (Robert Haas)
- </para>
-
- <para>
- Existing calls will still work for the moment, but can be expected to
- break in 9.1 or later if not converted to the new style.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require calls of <function>fastgetattr()</function> and
- <function>heap_getattr()</function> backend macros to provide a non-NULL fourth
- argument (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Custom typanalyze functions should no longer rely on
- <structname>VacAttrStats</structname>.<structfield>attr</structfield> to determine the type
- of data they will be passed (Tom Lane)
- </para>
-
- <para>
- This was changed to allow collection of statistics on index columns
- for which the storage type is different from the underlying column
- data type. There are new fields that tell the actual datatype being
- analyzed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Hooks</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add parser hooks for processing ColumnRef and ParamRef nodes
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a ProcessUtility hook so loadable modules can control utility
- commands (Itagaki Takahiro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Binary Upgrade Support</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="pgupgrade"><filename>contrib/pg_upgrade</filename></link>
- to support in-place upgrades (Bruce Momjian)
- </para>
-
- <para>
- This avoids the requirement of dumping/reloading the database when
- upgrading to a new major release of PostgreSQL, thus reducing downtime
- by orders of magnitude. It supports upgrades to 9.0
- from PostgreSQL 8.3 and 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for preserving relation <link
- linkend="catalog-pg-class"><structname>relfilenode</structname></link> values
- during binary upgrades (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for preserving <structname>pg_type</structname>
- and <structname>pg_enum</structname> OIDs during binary upgrades
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move data files within tablespaces into
- <productname>PostgreSQL</productname>-version-specific subdirectories
- (Bruce Momjian)
- </para>
-
- <para>
- This simplifies binary upgrades.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add multithreading option (<option>-j</option>) to <link
- linkend="pgbench"><filename>contrib/pgbench</filename></link>
- (Itagaki Takahiro)
- </para>
-
- <para>
- This allows multiple <acronym>CPU</acronym>s to be used by pgbench,
- reducing the risk of pgbench itself becoming the test bottleneck.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <command>\shell</command> and <command>\setshell</command> meta
- commands to <link
- linkend="pgbench"><filename>contrib/pgbench</filename></link>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- New features for <link
- linkend="dict-xsyn"><filename>contrib/dict_xsyn</filename></link>
- (Sergey Karpov)
- </para>
-
- <para>
- The new options are <literal>matchorig</literal>, <literal>matchsynonyms</literal>,
- and <literal>keepsynonyms</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add full text dictionary <link
- linkend="unaccent"><filename>contrib/unaccent</filename></link>
- (Teodor Sigaev)
- </para>
-
- <para>
- This filtering dictionary removes accents from letters, which
- makes full-text searches over multiple languages much easier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="contrib-dblink-get-notify"><function>dblink_get_notify()</function></link>
- to <filename>contrib/dblink</filename> (Marcus Kempe)
- </para>
-
- <para>
- This allows asynchronous notifications in <productname>dblink</productname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s handling of dropped columns
- (Tom Lane)
- </para>
-
- <para>
- This affects <link
- linkend="contrib-dblink-build-sql-insert"><function>dblink_build_sql_insert()</function></link>
- and related functions. These functions now number columns according
- to logical not physical column numbers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Greatly increase <link
- linkend="hstore"><filename>contrib/hstore</filename></link>'s data
- length limit, and add B-tree and hash support so <literal>GROUP
- BY</literal> and <literal>DISTINCT</literal> operations are possible on
- <type>hstore</type> columns (Andrew Gierth)
- </para>
-
- <para>
- New functions and operators were also added. These improvements
- make <type>hstore</type> a full-function key-value store embedded in
- <productname>PostgreSQL</productname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="passwordcheck"><filename>contrib/passwordcheck</filename></link>
- to support site-specific password strength policies (Laurenz
- Albe)
- </para>
-
- <para>
- The source code of this module should be modified to implement
- site-specific password policies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="pgarchivecleanup"><filename>contrib/pg_archivecleanup</filename></link>
- tool (Simon Riggs)
- </para>
-
- <para>
- This is designed to be used in the
- <literal>archive_cleanup_command</literal>
- server parameter, to remove no-longer-needed archive files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add query text to <link
- linkend="auto-explain"><filename>contrib/auto_explain</filename></link>
- output (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add buffer access counters to <link
- linkend="pgstatstatements"><filename>contrib/pg_stat_statements</filename></link>
- (Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update <link
- linkend="server-start"><filename>contrib/start-scripts/linux</filename></link>
- to use <filename>/proc/self/oom_adj</filename> to disable the
- <link linkend="linux-memory-overcommit"><productname>Linux</productname>
- out-of-memory</link> (<acronym>OOM</acronym>) killer (Alex
- Hunsaker, Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
- </sect2>
-</sect1>
diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml
deleted file mode 100644
index e928bf3cb77..00000000000
--- a/doc/src/sgml/release-9.1.sgml
+++ /dev/null
@@ -1,11760 +0,0 @@
-<!-- doc/src/sgml/release-9.1.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-1-24">
- <title>Release 9.1.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.23.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 9.1.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.24</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-23">
- <title>Release 9.1.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.22.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.1.X release series in September 2016.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.23</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid canceling hot-standby queries during <command>VACUUM FREEZE</command>
- (Simon Riggs, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- <command>VACUUM FREEZE</command> on an otherwise-idle master server could
- result in unnecessary cancellations of queries on its standby
- servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_1_STABLE [d56c02f1a] 2016-06-19 13:45:03 -0400
-Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400
--->
- <para>
- Revert to the old heuristic timeout for <literal>pg_ctl start -w</literal>
- (Tom Lane)
- </para>
-
- <para>
- The new method adopted as of release 9.1.20 does not work
- when <varname>silent_mode</varname> is enabled, so go back to the old way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-22">
- <title>Release 9.1.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.21.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.1.X release series in September 2016.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.22</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-21">
- <title>Release 9.1.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.20.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.21</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-20">
- <title>Release 9.1.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.19.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.20</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform an immediate shutdown if the <filename>postmaster.pid</filename> file
- is removed (Tom Lane)
- </para>
-
- <para>
- The postmaster now checks every minute or so
- that <filename>postmaster.pid</filename> is still there and still contains its
- own PID. If not, it performs an immediate shutdown, as though it had
- received <systemitem>SIGQUIT</systemitem>. The main motivation for this change
- is to ensure that failed buildfarm runs will get cleaned up without
- manual intervention; but it also serves to limit the bad effects if a
- DBA forcibly removes <filename>postmaster.pid</filename> and then starts a new
- postmaster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>SERIALIZABLE</literal> transaction isolation mode, serialization
- anomalies could be missed due to race conditions during insertions
- (Kevin Grittner, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to emit appropriate WAL records when doing <literal>ALTER
- TABLE ... SET TABLESPACE</literal> for unlogged relations (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- Even though the relation's data is unlogged, the move must be logged or
- the relation will be inaccessible after a standby is promoted to master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misinitialization of unlogged relations at the end of
- crash recovery (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to reconstruct inherited check
- constraints properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to change ownership of composite types
- properly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> and <command>ALTER OWNER</command> to correctly
- update granted-permissions lists when changing owners of data types,
- foreign data wrappers, or foreign servers (Bruce Momjian,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to ignore foreign user mappings,
- rather than fail (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more defenses against bad planner cost estimates for GIN index
- scans when the index's internal statistics are very out-of-date
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make planner cope with hypothetical GIN indexes suggested by an index
- advisor plug-in (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of whole-row Vars in <literal>ROW()</literal>
- and <literal>VALUES()</literal> lists (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible internal overflow in <type>numeric</type> division
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix enforcement of restrictions inside parentheses within regular
- expression lookahead constraints (Tom Lane)
- </para>
-
- <para>
- Lookahead constraints aren't allowed to contain backrefs, and
- parentheses within them are always considered non-capturing, according
- to the manual. However, the code failed to handle these cases properly
- inside a parenthesized subexpression, and would give unexpected
- results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Conversion of regular expressions to indexscan bounds could produce
- incorrect bounds from regexps containing lookahead constraints
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular-expression compiler to handle loops of constraint arcs
- (Tom Lane)
- </para>
-
- <para>
- The code added for CVE-2007-4772 was both incomplete, in that it didn't
- handle loops involving more than one state, and incorrect, in that it
- could cause assertion failures (though there seem to be no bad
- consequences of that in a non-assert build). Multi-state loops would
- cause the compiler to run until the query was canceled or it reached
- the too-many-states error condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve memory-usage accounting in regular-expression compiler
- (Tom Lane)
- </para>
-
- <para>
- This causes the code to emit <quote>regular expression is too
- complex</quote> errors in some cases that previously used unreasonable
- amounts of time and memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of regular-expression compiler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure the shared-memory mapping handle gets closed in
- child processes that don't need it (Tom Lane, Amit Kapila)
- </para>
-
- <para>
- This oversight resulted in failure to recover from crashes
- whenever <varname>logging_collector</varname> is turned on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to detect socket EOF in non-blocking mode on
- Windows (Tom Lane)
- </para>
-
- <para>
- It's not entirely clear whether this problem can happen in pre-9.5
- branches, but if it did, the symptom would be that a walsender process
- would wait indefinitely rather than noticing a loss of connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, ensure that <application>libreadline</application>'s idea
- of the screen size is updated when the terminal window size changes
- (Merlin Moncure)
- </para>
-
- <para>
- Previously, <application>libreadline</application> did not notice if the window
- was resized during query output, leading to strange behavior during
- later input of multiline queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>psql</application>'s <literal>\c</literal> command
- when previous connection was via Unix socket and command specifies a
- new hostname and same username (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, test child process status directly
- rather than relying on heuristics (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application> relied on an assumption that the new
- postmaster would always create <filename>postmaster.pid</filename> within five
- seconds. But that can fail on heavily-loaded systems,
- causing <application>pg_ctl</application> to report incorrectly that the
- postmaster failed to start.
- </para>
-
- <para>
- Except on Windows, this change also means that a <literal>pg_ctl start
- -w</literal> done immediately after another such command will now reliably
- fail, whereas previously it would report success if done within two
- seconds of the first command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, don't attempt to use a wildcard listen
- address to connect to the postmaster (Kondo Yuta)
- </para>
-
- <para>
- On Windows, <application>pg_ctl</application> would fail to detect postmaster
- startup if <varname>listen_addresses</varname> is set to <literal>0.0.0.0</literal>
- or <literal>::</literal>, because it would try to use that value verbatim as
- the address to connect to, which doesn't work. Instead assume
- that <literal>127.0.0.1</literal> or <literal>::1</literal>, respectively, is the
- right thing to use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> and <application>pg_basebackup</application>, adopt
- the GNU convention for handling tar-archive members exceeding 8GB
- (Tom Lane)
- </para>
-
- <para>
- The POSIX standard for <literal>tar</literal> file format does not allow
- archive member files to exceed 8GB, but most modern implementations
- of <application>tar</application> support an extension that fixes that. Adopt
- this extension so that <application>pg_dump</application> with <option>-Ft</option> no
- longer fails on tables with more than 8GB of data, and so
- that <application>pg_basebackup</application> can handle files larger than 8GB.
- In addition, fix some portability issues that could cause failures for
- members between 4GB and 8GB on some platforms. Potentially these
- problems could cause unrecoverable data loss due to unreadable backup
- files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that relation option values are properly quoted
- in <application>pg_dump</application> (Kouhei Sutou, Tom Lane)
- </para>
-
- <para>
- A reloption value that isn't a simple identifier or number could lead
- to dump/reload failures due to syntax errors in CREATE statements
- issued by <application>pg_dump</application>. This is not an issue with any
- reloption currently supported by core <productname>PostgreSQL</productname>, but
- extensions could allow reloptions that cause the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s file-copying code to handle errors
- properly on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory situations
- (Michael Paquier, Amit Kapila, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix order of arguments
- in <application>ecpg</application>-generated <literal>typedef</literal> statements
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>%g</literal> not <literal>%f</literal> format
- in <application>ecpg</application>'s <function>PGTYPESnumeric_from_double()</function>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgcrypto</filename>'s <function>crypt()</function>
- function can be interrupted by query cancel (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <application>flex</application> versions later than 2.5.x
- (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Now that flex 2.6.0 has been released, the version checks in our build
- scripts needed to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install our <filename>missing</filename> script where PGXS builds can find it
- (Jim Nasby)
- </para>
-
- <para>
- This allows sane behavior in a PGXS build done on a machine where build
- tools such as <application>bison</application> are missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variant regression test expected-output file to match behavior of
- current <application>libxml2</application> (Tom Lane)
- </para>
-
- <para>
- The fix for <application>libxml2</application>'s CVE-2015-7499 causes it not to
- output error context reports in some cases where it used to do so.
- This seems to be a bug, but we'll probably have to live with it for
- some time, so work around it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-19">
- <title>Release 9.1.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.18.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.19</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Back-patch 9.3-era addition of per-resource-owner lock caches
- (Jeff Janes)
- </para>
-
- <para>
- This substantially improves performance when <application>pg_dump</application>
- tries to dump a large number of tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_1_STABLE [3218f8c33] 2015-08-15 11:02:33 -0400
-Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400
--->
-
- <listitem>
- <para>
- Use fuzzy path cost tiebreaking rule in all supported branches (Tom Lane)
- </para>
-
- <para>
- This change is meant to avoid platform-specific behavior when
- alternative plan choices have effectively-identical estimated costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure standby promotion trigger files are removed at postmaster
- startup (Michael Paquier, Fujii Masao)
- </para>
-
- <para>
- This prevents unwanted promotion from occurring if these files appear
- in a database backup that is used to initialize a new standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Perl</application> to handle non-<acronym>ASCII</acronym> error
- message texts correctly (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> crash when returning the string
- representation of a <type>record</type> result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix output of ISBN-13 numbers that begin
- with 979 (Fabien Coelho)
- </para>
-
- <para>
- EANs beginning with 979 (but not 9790) are considered ISBNs, but they
- must be printed in the new 13-digit format, not the 10-digit format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selection of default <application>zlib</application> compression level
- in <application>pg_dump</application>'s directory output format (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted minor memory leaks in <application>pg_dump</application> and other
- client-side programs (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-18">
- <title>Release 9.1.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.1.17.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.18</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-17">
- <title>Release 9.1.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.1.16.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.17</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.16,
- see <xref linkend="release-9-1-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application> to use TLS protocol versions beyond v1
- (Noah Misch)
- </para>
-
- <para>
- For a long time, <application>libpq</application> was coded so that the only SSL
- protocol it would allow was TLS v1. Now that newer TLS versions are
- becoming popular, allow it to negotiate the highest commonly-supported
- TLS version with the server. (<productname>PostgreSQL</productname> servers were
- already capable of such negotiation, so no change is needed on the
- server side.) This is a back-patch of a change already released in
- 9.4.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-16">
- <title>Release 9.1.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.15.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.16</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you use <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions, see the changelog entry below
- about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.14,
- see <xref linkend="release-9-1-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect declaration of <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions (Tom Lane)
- </para>
-
- <para>
- These functions should return <type>setof text[]</type>, like the core
- functions they are wrappers for; but they were incorrectly declared as
- returning just <type>text[]</type>. This mistake had two results: first,
- if there was no match you got a scalar null result, whereas what you
- should get is an empty set (zero rows). Second, the <literal>g</literal> flag
- was effectively ignored, since you would get only one result array even
- if there were multiple matches.
- </para>
-
- <para>
- While the latter behavior is clearly a bug, there might be applications
- depending on the former behavior; therefore the function declarations
- will not be changed by default until <productname>PostgreSQL</productname> 9.5.
- In pre-9.5 branches, the old behavior exists in version 1.0 of
- the <literal>citext</literal> extension, while we have provided corrected
- declarations in version 1.1 (which is <emphasis>not</emphasis> installed by
- default). To adopt the fix in pre-9.5 branches, execute
- <literal>ALTER EXTENSION citext UPDATE TO '1.1'</literal> in each database in
- which <literal>citext</literal> is installed. (You can also <quote>update</quote>
- back to 1.0 if you need to undo that.) Be aware that either update
- direction will require dropping and recreating any views or rules that
- use <filename>citext</filename>'s <function>regexp_matches()</function> functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid <quote>cannot GetMultiXactIdMembers() during recovery</quote> error
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structfield>tableoid</structfield> of a foreign table is reported
- correctly when a <literal>READ COMMITTED</literal> recheck occurs after
- locking rows in <command>SELECT FOR UPDATE</command>, <command>UPDATE</command>,
- or <command>DELETE</command> (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</literal>
- replication command (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids a possible startup failure
- in <application>pg_receivexlog</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix failure to honor <literal>-Z</literal>
- compression level option together with <literal>-Fd</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> consider foreign key relationships
- between extension configuration tables while choosing dump order
- (Gilles Darold, Michael Paquier, Stephen Frost)
- </para>
-
- <para>
- This oversight could result in producing dumps that fail to reload
- because foreign key constraints are transiently violated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <function>readdir()</function> failures when scanning
- directories in <application>initdb</application> and <application>pg_basebackup</application>
- (Marco Nenciarini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-15">
- <title>Release 9.1.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.14.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.15</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.14,
- see <xref linkend="release-9-1-14"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible data corruption if <command>ALTER DATABASE SET
- TABLESPACE</command> is used to move a database to a new tablespace and then
- shortly later move it back to its original tablespace (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corrupting tables when <command>ANALYZE</command> inside a transaction
- is rolled back (Andres Freund, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If the failing transaction had earlier removed the last index, rule, or
- trigger from the table, the table would be left in a corrupted state
- with the relevant <structname>pg_class</structname> flags not set though they
- should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that unlogged tables are copied correctly
- during <command>CREATE DATABASE</command> or <command>ALTER DATABASE SET
- TABLESPACE</command> (Pavan Deolasee, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>DROP</command>'s dependency searching to correctly handle the
- case where a table column is recursively visited before its table
- (Petr Jelinek, Tom Lane)
- </para>
-
- <para>
- This case is only known to arise when an extension creates both a
- datatype and a table using that datatype. The faulty code might
- refuse a <command>DROP EXTENSION</command> unless <literal>CASCADE</literal> is
- specified, which should not be required.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of <command>SELECT FOR UPDATE</command> when using a partial
- index on a child table (Kyotaro Horiguchi)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, <command>SELECT FOR UPDATE</command> must
- also recheck the partial index's <literal>WHERE</literal> condition when
- rechecking a recently-updated row to see if it still satisfies the
- query's <literal>WHERE</literal> condition. This requirement was missed if the
- index belonged to an inheritance child table, so that it was possible
- to incorrectly return rows that no longer satisfy the query condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner case wherein <command>SELECT FOR UPDATE</command> could return a row
- twice, and possibly miss returning other rows (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, a <command>SELECT FOR UPDATE</command>
- that is scanning an inheritance tree could incorrectly return a row
- from a prior child table instead of the one it should return from a
- later child table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject duplicate column names in the referenced-columns list of
- a <literal>FOREIGN KEY</literal> declaration (David Rowley)
- </para>
-
- <para>
- This restriction is per SQL standard. Previously we did not reject
- the case explicitly, but later on the code would fail with
- bizarre-looking errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in raising a <type>numeric</type> value to a large integral power
- (Tom Lane)
- </para>
-
- <para>
- The previous code could get a wrong answer, or consume excessive
- amounts of time and memory before realizing that the answer must
- overflow.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <function>numeric_recv()</function>, truncate away any fractional digits
- that would be hidden according to the value's <literal>dscale</literal> field
- (Tom Lane)
- </para>
-
- <para>
- A <type>numeric</type> value's display scale (<literal>dscale</literal>) should
- never be less than the number of nonzero fractional digits; but
- apparently there's at least one broken client application that
- transmits binary <type>numeric</type> values in which that's true.
- This leads to strange behavior since the extra digits are taken into
- account by arithmetic operations even though they aren't printed.
- The least risky fix seems to be to truncate away such <quote>hidden</quote>
- digits on receipt, so that the value is indeed what it prints as.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range numeric timezone specifications (Tom Lane)
- </para>
-
- <para>
- Simple numeric timezone specifications exceeding +/- 168 hours (one
- week) would be accepted, but could then cause null-pointer dereference
- crashes in certain operations. There's no use-case for such large UTC
- offsets, so reject them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in <type>tsquery</type> <literal>@&gt;</literal> <type>tsquery</type>
- operator (Heikki Linnakangas)
- </para>
-
- <para>
- Two different terms would be considered to match if they had the same
- CRC. Also, if the second operand had more terms than the first, it
- would be assumed not to be contained in the first; which is wrong
- since it might contain duplicate terms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve ispell dictionary's defenses against bad affix files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
- </para>
-
- <para>
- The previous coding could crash on an oversize dictionary, so this was
- deemed a back-patchable bug fix rather than a feature addition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner problems with nested append relations, such as inherited
- tables within <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fail cleanly when a GiST index tuple doesn't fit on a page, rather
- than going into infinite recursion (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Exempt tables that have per-table <varname>cost_limit</varname>
- and/or <varname>cost_delay</varname> settings from autovacuum's global cost
- balancing rules (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- The previous behavior resulted in basically ignoring these per-table
- settings, which was unintended. Now, a table having such settings
- will be vacuumed using those settings, independently of what is going
- on in other autovacuum workers. This may result in heavier total I/O
- load than before, so such settings should be re-examined for sanity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid wholesale autovacuuming when autovacuum is nominally off
- (Tom Lane)
- </para>
-
- <para>
- Even when autovacuum is nominally off, we will still launch autovacuum
- worker processes to vacuum tables that are at risk of XID wraparound.
- However, such a worker process then proceeded to vacuum all tables in
- the target database, if they met the usual thresholds for
- autovacuuming. This is at best pretty unexpected; at worst it delays
- response to the wraparound threat. Fix it so that if autovacuum is
- turned off, workers <emphasis>only</emphasis> do anti-wraparound vacuums and
- not any other work.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During crash recovery, ensure that unlogged relations are rewritten as
- empty and are synced to disk before recovery is considered complete
- (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- This prevents scenarios in which unlogged relations might contain
- garbage data following database crash recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition between hot standby queries and replaying a
- full-page image (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in transient errors in queries being
- executed in hot standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several cases where recovery logic improperly ignored WAL records
- for <literal>COMMIT/ABORT PREPARED</literal> (Heikki Linnakangas)
- </para>
-
- <para>
- The most notable oversight was
- that <varname>recovery_target_xid</varname> could not be used to stop at
- a two-phase commit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid creating unnecessary <filename>.ready</filename> marker files for
- timeline history files (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible null pointer dereference when an empty prepared statement
- is used and the <varname>log_statement</varname> setting is <literal>mod</literal>
- or <literal>ddl</literal> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SPARC spinlock implementation to ensure correctness if the CPU is
- being run in a non-TSO coherency mode, as some non-Solaris kernels do
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of repeated <literal>dbname</literal> parameters
- in <function>PQconnectdbParams()</function> (Alex Shulgin)
- </para>
-
- <para>
- Unexpected behavior ensued if the first occurrence
- of <literal>dbname</literal> contained a connection string or URI to be
- expanded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>libpq</application> reports a suitable error message on
- unexpected socket EOF (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- Depending on kernel behavior, <application>libpq</application> might return an
- empty error string rather than something useful when the server
- unexpectedly closed the socket.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear any old error message during <function>PQreset()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- If <function>PQreset()</function> is called repeatedly, and the connection
- cannot be re-established, error messages from the failed connection
- attempts kept accumulating in the <structname>PGconn</structname>'s error
- string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle out-of-memory conditions while parsing connection
- options in <application>libpq</application> (Alex Shulgin, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array overrun in <application>ecpg</application>'s version
- of <function>ParseDateTime()</function> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>initdb</application>, give a clearer error message if a password
- file is specified but is empty (Mats Erik Andersson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <command>\s</command> command to work nicely with
- libedit, and add pager support (Stepan Rutz, Tom Lane)
- </para>
-
- <para>
- When using libedit rather than readline, <command>\s</command> printed the
- command history in a fairly unreadable encoded format, and on recent
- libedit versions might fail altogether. Fix that by printing the
- history ourselves rather than having the library do it. A pleasant
- side-effect is that the pager is used if appropriate.
- </para>
-
- <para>
- This patch also fixes a bug that caused newline encoding to be applied
- inconsistently when saving the command history with libedit.
- Multiline history entries written by older <application>psql</application>
- versions will be read cleanly with this patch, but perhaps not
- vice versa, depending on the exact libedit versions involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s expanded-mode display to work
- consistently when using <literal>border</literal> = 3
- and <literal>linestyle</literal> = <literal>ascii</literal> or <literal>unicode</literal>
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <application>pg_dump</application> when the database
- contains many instances of multiple dependency paths between the same
- two objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during parallel restore of a schema-only dump
- (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <literal>pg_dump --binary-upgrade</literal> on zero-column
- composite type (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent WAL files created by <literal>pg_basebackup -x/-X</literal> from
- being archived again when the standby is promoted (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix upgrade-from-unpackaged script for <filename>contrib/citext</filename>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix block number checking
- in <filename>contrib/pageinspect</filename>'s <function>get_raw_page()</function>
- (Tom Lane)
- </para>
-
- <para>
- The incorrect checking logic could prevent access to some pages in
- non-main relation forks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename>'s <function>pgp_sym_decrypt()</function>
- to not fail on messages whose length is 6 less than a power of 2
- (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leak in <filename>contrib/pg_test_fsync</filename>
- (Jeff Janes)
- </para>
-
- <para>
- This could cause failure to remove temporary files on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a possible crash in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Mark Simonetti)
- </para>
-
- <para>
- <application>libxslt</application> seems to have an undocumented dependency on
- the order in which resources are freed; reorder our calls to avoid a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Mark some <filename>contrib</filename> I/O functions with correct volatility
- properties (Tom Lane)
- </para>
-
- <para>
- The previous over-conservative marking was immaterial in normal use,
- but could cause optimization problems or rejection of valid index
- expression definitions. Since the consequences are not large, we've
- just adjusted the function definitions in the extension modules'
- scripts, without changing version numbers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect incompatible OpenLDAP versions during build (Noah Misch)
- </para>
-
- <para>
- With OpenLDAP versions 2.4.24 through 2.4.31,
- inclusive, <productname>PostgreSQL</productname> backends can crash at exit.
- Raise a warning during <application>configure</application> based on the
- compile-time OpenLDAP version number, and test the crashing scenario
- in the <filename>contrib/dblink</filename> regression test.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In non-MSVC Windows builds, ensure <filename>libpq.dll</filename> is installed
- with execute permissions (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone abbreviations lists (Tom Lane)
- </para>
-
- <para>
- Add CST (China Standard Time) to our lists.
- Remove references to ADT as <quote>Arabia Daylight Time</quote>, an
- abbreviation that's been out of use since 2007; therefore, claiming
- there is a conflict with <quote>Atlantic Daylight Time</quote> doesn't seem
- especially helpful.
- Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
- (Fiji); we didn't even have them on the proper side of the date line.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a.
- </para>
-
- <para>
- The IANA timezone database has adopted abbreviations of the form
- <literal>A<replaceable>x</replaceable>ST</literal>/<literal>A<replaceable>x</replaceable>DT</literal>
- for all Australian time zones, reflecting what they believe to be
- current majority practice Down Under. These names do not conflict
- with usage elsewhere (other than ACST for Acre Summer Time, which has
- been in disuse since 1994). Accordingly, adopt these names into
- our <quote>Default</quote> timezone abbreviation set.
- The <quote>Australia</quote> abbreviation set now contains only CST, EAST,
- EST, SAST, SAT, and WST, all of which are thought to be mostly
- historical usage. Note that SAST has also been changed to be South
- Africa Standard Time in the <quote>Default</quote> abbreviation set.
- </para>
-
- <para>
- Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
- (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
- DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
- (America/Grand_Turk), and Fiji. There is a new zone
- Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
- corrections for historical (pre-1970) time zone data.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-14">
- <title>Release 9.1.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.13.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.14</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, this release corrects an index corruption problem in some GiST
- indexes. See the first changelog entry below to find out whether your
- installation has been affected and what steps you should take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.11,
- see <xref linkend="release-9-1-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't clear the right-link of a GiST index page while replaying
- updates from WAL (Heikki Linnakangas)
- </para>
-
- <para>
- This error could lead to transiently wrong answers from GiST index
- scans performed in Hot Standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix feedback status when <xref linkend="guc-hot-standby-feedback"/> is
- turned off on-the-fly (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not find pathkey item to sort</quote> planner failures
- with <literal>UNION ALL</literal> over subqueries reading from tables with
- inheritance children (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent foreign tables from being created with OIDS
- when <literal>default_with_oids</literal> is true
- (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client host name lookup when processing <filename>pg_hba.conf</filename>
- entries that specify host names instead of IP addresses (Tom Lane)
- </para>
-
- <para>
- Ensure that reverse-DNS lookup failures are reported, instead of just
- silently not matching such entries. Also ensure that we make only
- one reverse-DNS lookup attempt per connection, not one per host name
- entry, which is what previously happened if the lookup attempts failed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tablespace creation WAL replay to work on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of socket creation failures on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to do the right thing when an array
- of <type>char *</type> is the target for a FETCH statement returning more
- than one row, as well as some other array-handling fixes
- (Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-13">
- <title>Release 9.1.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.12.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.13</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.11,
- see <xref linkend="release-9-1-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid race condition in checking transaction commit status during
- receipt of a <command>NOTIFY</command> message (Marko Tiikkaja)
- </para>
-
- <para>
- This prevents a scenario wherein a sufficiently fast client might
- respond to a notification before database updates made by the
- notifier have become visible to the recipient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of index endpoint probes during planning (Tom Lane)
- </para>
-
- <para>
- This change fixes a significant performance problem that occurred
- when there were many not-yet-committed rows at the end of the index,
- which is a common situation for indexes on sequentially-assigned
- values such as timestamps or sequence-generated identifiers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>walsender</application>'s failure to shut down cleanly when client
- is <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix test to see if hot standby connections can be allowed immediately
- after a crash (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in PL/Perl when returning a composite result, including
- multiple-OUT-parameter cases (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intermittent <quote>could not reserve shared memory region</quote>
- failures on recent Windows versions (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-12">
- <title>Release 9.1.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.11.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.12</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.11,
- see <xref linkend="release-9-1-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in determining when recovery has reached consistency
- (Tomonari Katsumata, Heikki Linnakangas)
- </para>
-
- <para>
- In some cases WAL replay would mistakenly conclude that the database
- was already consistent at the start of replay, thus possibly allowing
- hot-standby queries before the database was really consistent. Other
- symptoms such as <quote>PANIC: WAL contains references to invalid
- pages</quote> were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper locking of btree index pages while replaying
- a <literal>VACUUM</literal> operation in hot-standby mode (Andres Freund,
- Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This error could result in <quote>PANIC: WAL contains references to
- invalid pages</quote> failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When <literal>pause_at_recovery_target</literal>
- and <literal>recovery_target_inclusive</literal> are both set, ensure the
- target record is applied before pausing, not after (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions in walsender shutdown logic and walreceiver
- SIGHUP signal handler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow keywords that are type names to be used in lists of roles
- (Stephen Frost)
- </para>
-
- <para>
- A previous patch allowed such keywords to be used without quoting
- in places such as role identifiers; but it missed cases where a
- list of role identifiers was permitted, such as <literal>DROP ROLE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parser crash for <literal>EXISTS(SELECT * FROM
- zero_column_table)</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix placement of permissions checks in <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> (Andres Freund, Magnus Hagander)
- </para>
-
- <para>
- The previous coding might attempt to do catalog access when it
- shouldn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible incorrect printing of filenames
- in <application>pg_basebackup</application>'s verbose mode (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including tablespaces inside PGDATA twice in base backups
- (Dimitri Fontaine, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using the deprecated <literal>dllwrap</literal> tool in Cygwin builds
- (Marco Atzeri)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-11">
- <title>Release 9.1.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.10.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.11</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, this release corrects a number of potential data corruption
- issues. See the first two changelog entries below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.9,
- see <xref linkend="release-9-1-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. Users
- upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but
- all later versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initialization of <filename>pg_clog</filename> and <filename>pg_subtrans</filename>
- during hot standby startup (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- This bug can cause data loss on standby servers at the moment they
- start to accept hot-standby queries, by marking committed transactions
- as uncommitted. The likelihood of such corruption is small unless, at
- the time of standby startup, the primary server has executed many
- updating transactions since its last checkpoint. Symptoms include
- missing rows, rows that should have been deleted being still visible,
- and obsolete versions of updated rows being still visible alongside
- their newer versions.
- </para>
-
- <para>
- This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
- Standby servers that have only been running earlier releases are not
- at risk. It's recommended that standby servers that have ever run any
- of the buggy releases be re-cloned from the primary (e.g., with a new
- base backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Truncate <filename>pg_multixact</filename> contents during WAL replay
- (Andres Freund)
- </para>
-
- <para>
- This avoids ever-increasing disk space consumption in standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect generation of optimized MIN()/MAX() plans for
- inheritance trees (Tom Lane)
- </para>
-
- <para>
- The planner could fail in cases where the MIN()/MAX() argument was an
- expression rather than a simple variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> search for quoted cursor names
- case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-10">
- <title>Release 9.1.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.9.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.10</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.9,
- see <xref linkend="release-9-1-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent corruption of multi-byte characters when attempting to
- case-fold identifiers (Andrew Dunstan)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> case-folds non-ASCII characters only
- when using a single-byte server encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checkpoint memory leak in background writer when <literal>wal_level =
- hot_standby</literal> (Naoya Anzai)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory overcommit bug when <varname>work_mem</varname> is using more
- than 24GB of memory (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible SSL state corruption in threaded libpq applications
- (Nick Phillips, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly compute row estimates for boolean columns containing many NULL
- values (Andrew Gierth)
- </para>
-
- <para>
- Previously tests like <literal>col IS NOT TRUE</literal> and <literal>col IS
- NOT FALSE</literal> did not properly factor in NULL values when estimating
- plan costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent pushing down <literal>WHERE</literal> clauses into unsafe
- <literal>UNION/INTERSECT</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Subqueries of a <literal>UNION</literal> or <literal>INTERSECT</literal> that
- contain set-returning functions or volatile functions in their
- <literal>SELECT</literal> lists could be improperly optimized, leading to
- run-time errors or incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare case of <quote>failed to locate grouping columns</quote>
- planner failure (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> of foreign tables with dropped columns (Andrew Dunstan)
- </para>
-
- <para>
- Previously such cases could cause a <application>pg_upgrade</application> error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reorder <application>pg_dump</application> processing of extension-related
- rules and event triggers (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force dumping of extension tables if specified by <command>pg_dump
- -t</command> or <literal>-n</literal> (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view dumping code's handling of dropped columns in referenced
- tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>pg_restore -l</command> with the directory archive to display
- the correct format name (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly record index comments created using <literal>UNIQUE</literal>
- and <literal>PRIMARY KEY</literal> syntax (Andres Freund)
- </para>
-
- <para>
- This fixes a parallel <application>pg_restore</application> failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly guarantee transmission of WAL files before clean switchover
- (Fujii Masao)
- </para>
-
- <para>
- Previously, the streaming replication connection might close before all
- WAL files had been replayed on the standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL segment timeline handling during recovery (Mitsumasa Kondo,
- Heikki Linnakangas)
- </para>
-
- <para>
- WAL file recycling during standby recovery could lead to premature
- recovery completion, resulting in data loss.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REINDEX TABLE</command> and <command>REINDEX DATABASE</command>
- to properly revalidate constraints and mark invalidated indexes as
- valid (Noah Misch)
- </para>
-
- <para>
- <command>REINDEX INDEX</command> has always worked properly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during concurrent <command>CREATE INDEX
- CONCURRENTLY</command> operations (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>regexp_matches()</function> handling of zero-length matches
- (Jeevan Chalke)
- </para>
-
- <para>
- Previously, zero-length matches like '^' could return too many matches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash for overly-complex regular expressions (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression match failures for back references combined with
- non-greedy quantifiers (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER DEFAULT PRIVILEGES</command> to operate on schemas
- without requiring CREATE permission (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Loosen restriction on keywords used in queries (Tom Lane)
- </para>
-
- <para>
- Specifically, lessen keyword restrictions for role names, language
- names, <command>EXPLAIN</command> and <command>COPY</command> options, and
- <command>SET</command> values. This allows <literal>COPY ... (FORMAT
- BINARY)</literal> to work as expected; previously <literal>BINARY</literal> needed
- to be quoted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgp_pub_decrypt()</function> so it works for secret keys with
- passwords (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> use <literal>pg_dump
- --quote-all-identifiers</literal> to avoid problems with keyword changes
- between releases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM ANALYZE</command> still runs the ANALYZE phase
- if its attempt to truncate the file is cancelled due to lock conflicts
- (Kevin Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible failure when performing transaction control commands (e.g
- <command>ROLLBACK</command>) in prepared queries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that floating-point data input accepts standard spellings
- of <quote>infinity</quote> on all platforms (Tom Lane)
- </para>
-
- <para>
- The C99 standard says that allowable spellings are <literal>inf</literal>,
- <literal>+inf</literal>, <literal>-inf</literal>, <literal>infinity</literal>,
- <literal>+infinity</literal>, and <literal>-infinity</literal>. Make sure we
- recognize these even if the platform's <function>strtod</function> function
- doesn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Expand ability to compare rows to records and arrays (Rafal Rzepecki,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013d
- for DST law changes in Israel, Morocco, Palestine, and Paraguay.
- Also, historical zone data corrections for Macquarie Island.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-9">
- <title>Release 9.1.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-04-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.8.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.9</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, this release corrects several errors in management of GiST
- indexes. After installing this update, it is advisable to
- <command>REINDEX</command> any GiST indexes that meet one or more of the
- conditions described below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.6,
- see <xref linkend="release-9-1-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix insecure parsing of server command-line switches (Mitsumasa
- Kondo, Kyotaro Horiguchi)
- </para>
-
- <para>
- A connection request containing a database name that begins with
- <quote><literal>-</literal></quote> could be crafted to damage or destroy
- files within the server's data directory, even if the request is
- eventually rejected. (CVE-2013-1899)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reset OpenSSL randomness state in each postmaster child process
- (Marko Kreen)
- </para>
-
- <para>
- This avoids a scenario wherein random numbers generated by
- <filename>contrib/pgcrypto</filename> functions might be relatively easy for
- another database user to guess. The risk is only significant when
- the postmaster is configured with <varname>ssl</varname> = <literal>on</literal>
- but most connections don't use SSL encryption. (CVE-2013-1900)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make REPLICATION privilege checks test current user not authenticated
- user (Noah Misch)
- </para>
-
- <para>
- An unprivileged database user could exploit this mistake to call
- <function>pg_start_backup()</function> or <function>pg_stop_backup()</function>,
- thus possibly interfering with creation of routine backups.
- (CVE-2013-1901)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GiST indexes to not use <quote>fuzzy</quote> geometric comparisons when
- it's not appropriate to do so (Alexander Korotkov)
- </para>
-
- <para>
- The core geometric types perform comparisons using <quote>fuzzy</quote>
- equality, but <function>gist_box_same</function> must do exact comparisons,
- else GiST indexes using it might become inconsistent. After installing
- this update, users should <command>REINDEX</command> any GiST indexes on
- <type>box</type>, <type>polygon</type>, <type>circle</type>, or <type>point</type>
- columns, since all of these use <function>gist_box_same</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous range-union and penalty logic in GiST indexes that use
- <filename>contrib/btree_gist</filename> for variable-width data types, that is
- <type>text</type>, <type>bytea</type>, <type>bit</type>, and <type>numeric</type>
- columns (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in useless
- index bloat. Users are advised to <command>REINDEX</command> such indexes
- after installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in GiST page splitting code for multi-column indexes
- (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in indexes
- that are unnecessarily inefficient to search. Users are advised to
- <command>REINDEX</command> multi-column GiST indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>gist_point_consistent</function>
- to handle fuzziness consistently (Alexander Korotkov)
- </para>
-
- <para>
- Index scans on GiST indexes on <type>point</type> columns would sometimes
- yield results different from a sequential scan, because
- <function>gist_point_consistent</function> disagreed with the underlying
- operator code about whether to do comparisons exactly or fuzzily.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer leak in WAL replay (Heikki Linnakangas)
- </para>
-
- <para>
- This bug could result in <quote>incorrect local pin count</quote> errors
- during replay, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in <command>DELETE RETURNING</command> (Tom Lane)
- </para>
-
- <para>
- Under the right circumstances, <command>DELETE RETURNING</command> could
- attempt to fetch data from a shared buffer that the current process
- no longer has any pin on. If some other process changed the buffer
- meanwhile, this would lead to garbage <literal>RETURNING</literal> output, or
- even a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite-loop risk in regular expression compilation (Tom Lane,
- Don Porter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential null-pointer dereference in regular expression compilation
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> to use ASCII-only case-folding rules where
- appropriate (Tom Lane)
- </para>
-
- <para>
- This fixes misbehavior of some template patterns that should be
- locale-independent, but mishandled <quote><literal>I</literal></quote> and
- <quote><literal>i</literal></quote> in Turkish locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logic error when a single transaction does <command>UNLISTEN</command>
- then <command>LISTEN</command> (Tom Lane)
- </para>
-
- <para>
- The session wound up not listening for notify events at all, though it
- surely should listen in this case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible planner crash after columns have been added to a view
- that's depended on by another view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove useless <quote>picksplit doesn't support secondary split</quote> log
- messages (Josh Hansen, Tom Lane)
- </para>
-
- <para>
- This message seems to have been added in expectation of code that was
- never written, and probably never will be, since GiST's default
- handling of secondary splits is actually pretty good. So stop nagging
- end users about it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to send a session's last few transaction
- commit/abort counts to the statistics collector (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Eliminate memory leaks in PL/Perl's <function>spi_prepare()</function> function
- (Alex Hunsaker, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to handle database names containing
- <quote><literal>=</literal></quote> correctly (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <application>pg_dump</application> when an incorrect connection
- string is given (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore invalid indexes in <application>pg_dump</application> and
- <application>pg_upgrade</application> (Michael Paquier, Bruce Momjian)
- </para>
-
- <para>
- Dumping invalid indexes can cause problems at restore time, for example
- if the reason the index creation failed was because it tried to enforce
- a uniqueness condition not satisfied by the table's data. Also, if the
- index creation is in fact still in progress, it seems reasonable to
- consider it to be an uncommitted DDL change, which
- <application>pg_dump</application> wouldn't be expected to dump anyway.
- <application>pg_upgrade</application> now also skips invalid indexes rather than
- failing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_basebackup</application>, include only the current server
- version's subdirectory when backing up a tablespace (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a server version check in <application>pg_basebackup</application> and
- <application>pg_receivexlog</application>, so they fail cleanly with version
- combinations that won't work (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s <function>similarity()</function> function
- to return zero for trigram-less strings (Tom Lane)
- </para>
-
- <para>
- Previously it returned <literal>NaN</literal> due to internal division by zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013b
- for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
- Russian areas. Also, historical zone data corrections for numerous
- places.
- </para>
-
- <para>
- Also, update the time zone abbreviation files for recent changes in
- Russia and elsewhere: <literal>CHOT</literal>, <literal>GET</literal>,
- <literal>IRKT</literal>, <literal>KGT</literal>, <literal>KRAT</literal>, <literal>MAGT</literal>,
- <literal>MAWT</literal>, <literal>MSK</literal>, <literal>NOVT</literal>, <literal>OMST</literal>,
- <literal>TKT</literal>, <literal>VLAT</literal>, <literal>WST</literal>, <literal>YAKT</literal>,
- <literal>YEKT</literal> now follow their current meanings, and
- <literal>VOLT</literal> (Europe/Volgograd) and <literal>MIST</literal>
- (Antarctica/Macquarie) are added to the default abbreviations list.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-8">
- <title>Release 9.1.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-02-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.7.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.8</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.6,
- see <xref linkend="release-9-1-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent execution of <function>enum_recv</function> from SQL (Tom Lane)
- </para>
-
- <para>
- The function was misdeclared, allowing a simple SQL command to crash the
- server. In principle an attacker might be able to use it to examine the
- contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP)
- for reporting this issue. (CVE-2013-0255)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple problems in detection of when a consistent database
- state has been reached during WAL replay (Fujii Masao, Heikki
- Linnakangas, Simon Riggs, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update minimum recovery point when truncating a relation file (Heikki
- Linnakangas)
- </para>
-
- <para>
- Once data has been discarded, it's no longer safe to stop recovery at
- an earlier point in the timeline.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recycling of WAL segments after changing recovery target timeline
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
- </para>
-
- <para>
- The need to cancel conflicting hot-standby queries would sometimes be
- missed, allowing those queries to see inconsistent data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent recovery pause feature from pausing before users can connect
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL grammar to allow subscripting or field selection from a
- sub-SELECT result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems with autovacuum truncation in busy workloads
- (Jan Wieck)
- </para>
-
- <para>
- Truncation of empty pages at the end of a table requires exclusive
- lock, but autovacuum was coded to fail (and release the table lock)
- when there are conflicting lock requests. Under load, it is easily
- possible that truncation would never occur, resulting in table bloat.
- Fix by performing a partial truncation, releasing the lock, then
- attempting to re-acquire the lock and continue. This fix also greatly
- reduces the average time before autovacuum releases the lock after a
- conflicting request arrives.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against race conditions when scanning
- <structname>pg_tablespace</structname> (Stephen Frost, Tom Lane)
- </para>
-
- <para>
- <command>CREATE DATABASE</command> and <command>DROP DATABASE</command> could
- misbehave if there were concurrent updates of
- <structname>pg_tablespace</structname> entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>DROP OWNED</command> from trying to drop whole databases or
- tablespaces (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- For safety, ownership of these objects must be reassigned, not dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- implementation (Andres Freund)
- </para>
-
- <para>
- In installations that have existed for more than <link
- linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</varname></link>
- transactions, this mistake prevented autovacuum from using partial-table
- scans, so that a full-table scan would always happen instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misbehavior when a <symbol>RowExpr</symbol> or <symbol>XmlExpr</symbol>
- is parse-analyzed twice (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This mistake could be user-visible in contexts such as
- <literal>CREATE TABLE LIKE INCLUDING INDEXES</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve defenses against integer overflow in hashtable sizing
- calculations (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to ignore leftover temporary tables after a server crash
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range dates in <function>to_date()</function> (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_extension_config_dump()</function> to handle
- extension-update cases properly (Tom Lane)
- </para>
-
- <para>
- This function will now replace any existing entry for the target
- table, making it usable in extension update scripts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python's handling of functions used as triggers on multiple
- tables (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that non-ASCII prompt strings are translated to the correct
- code page on Windows (Alexander Law, Noah Misch)
- </para>
-
- <para>
- This bug affected <application>psql</application> and some other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application>'s <command>\?</command> command
- when not connected to a database (Meng Qingzhong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible error if a relation file is removed while
- <application>pg_basebackup</application> is running (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> exclude data of unlogged tables when
- running on a hot-standby server (Magnus Hagander)
- </para>
-
- <para>
- This would fail anyway because the data is not available on the standby
- server, so it seems most convenient to assume
- <option>--no-unlogged-table-data</option> automatically.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to deal with invalid indexes safely
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <application>libpq</application>'s
- <function>PQprintTuples</function> (Xi Wang)
- </para>
-
- <para>
- This ancient function is not used anywhere by
- <productname>PostgreSQL</productname> itself, but it might still be used by some
- client code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> use translated messages properly
- (Chen Huajun)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly install <application>ecpg_compat</application> and
- <application>pgtypes</application> libraries on MSVC (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include our version of <function>isinf()</function> in
- <application>libecpg</application> if it's not provided by the system
- (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange configure's tests for supplied functions so it is not
- fooled by bogus exports from libedit/libreadline (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure Windows build number increases over time (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgxs</application> build executables with the right
- <literal>.exe</literal> suffix when cross-compiling for Windows
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new timezone abbreviation <literal>FET</literal> (Tom Lane)
- </para>
-
- <para>
- This is now used in some eastern-European time zones.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-7">
- <title>Release 9.1.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-12-06</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.6.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.7</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.6,
- see <xref linkend="release-9-1-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs associated with <command>CREATE INDEX
- CONCURRENTLY</command> (Andres Freund, Tom Lane)
- </para>
-
- <para>
- Fix <command>CREATE INDEX CONCURRENTLY</command> to use
- in-place updates when changing the state of an index's
- <structname>pg_index</structname> row. This prevents race conditions that could
- cause concurrent sessions to miss updating the target index, thus
- resulting in corrupt concurrently-created indexes.
- </para>
-
- <para>
- Also, fix various other operations to ensure that they ignore
- invalid indexes resulting from a failed <command>CREATE INDEX
- CONCURRENTLY</command> command. The most important of these is
- <command>VACUUM</command>, because an auto-vacuum could easily be launched
- on the table before corrective action can be taken to fix or remove
- the invalid index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer locking during WAL replay (Tom Lane)
- </para>
-
- <para>
- The WAL replay code was insufficiently careful about locking buffers
- when replaying WAL records that affect more than one page. This could
- result in hot standby queries transiently seeing inconsistent states,
- resulting in wrong answers or unexpected failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix an error in WAL generation logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in index corruption, if a torn-page failure occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly remove startup process's virtual XID lock when promoting a
- hot standby server to normal running (Simon Riggs)
- </para>
-
- <para>
- This oversight could prevent subsequent execution of certain
- operations such as <command>CREATE INDEX CONCURRENTLY</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid bogus <quote>out-of-sequence timeline ID</quote> errors in standby
- mode (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent the postmaster from launching new child processes after it's
- received a shutdown signal (Tom Lane)
- </para>
-
- <para>
- This mistake could result in shutdown taking longer than it should, or
- even never completing at all without additional user action.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corruption of internal hash tables when out of memory
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent file descriptors for dropped tables from being held open past
- transaction end (Tom Lane)
- </para>
-
- <para>
- This should reduce problems with long-since-dropped tables continuing
- to occupy disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent database-wide crash and restart when a new child process is
- unable to create a pipe for its latch (Tom Lane)
- </para>
-
- <para>
- Although the new process must fail, there is no good reason to force a
- database-wide restart, so avoid that. This improves robustness when
- the kernel is nearly out of file descriptors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of non-strict equivalence clauses above outer joins
- (Tom Lane)
- </para>
-
- <para>
- The planner could derive incorrect constraints from a clause equating
- a non-strict construct to something else, for example
- <literal>WHERE COALESCE(foo, 0) = 0</literal>
- when <literal>foo</literal> is coming from the nullable side of an outer join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>SELECT DISTINCT</command> with index-optimized
- <function>MIN</function>/<function>MAX</function> on an inheritance tree (Tom Lane)
- </para>
-
- <para>
- The planner would fail with <quote>failed to re-find MinMaxAggInfo
- record</quote> given this combination of factors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's ability to prove exclusion constraints from
- equivalence classes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix partial-row matching in hashed subplans to handle cross-type cases
- correctly (Tom Lane)
- </para>
-
- <para>
- This affects multicolumn <literal>NOT IN</literal> subplans, such as
- <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</literal>
- when for instance <literal>b</literal> and <literal>y</literal> are <type>int4</type>
- and <type>int8</type> respectively. This mistake led to wrong answers
- or crashes depending on the specific datatypes involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Acquire buffer lock when re-fetching the old tuple for an
- <literal>AFTER ROW UPDATE/DELETE</literal> trigger (Andres Freund)
- </para>
-
- <para>
- In very unusual circumstances, this oversight could result in passing
- incorrect data to a trigger <literal>WHEN</literal> condition, or to the
- precheck logic for a foreign-key enforcement trigger. That could
- result in a crash, or in an incorrect decision about whether to
- fire the trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to handle inherited check
- constraints properly (Pavan Deolasee)
- </para>
-
- <para>
- This worked correctly in pre-8.4 releases, and now works correctly
- in 8.4 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER EXTENSION SET SCHEMA</command>'s failure to move some
- subsidiary objects into the new schema (&Aacute;lvaro Herrera, Dimitri
- Fontaine)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle grants on tablespaces
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore incorrect <structname>pg_attribute</structname> entries for system
- columns for views (Tom Lane)
- </para>
-
- <para>
- Views do not have any system columns. However, we forgot to
- remove such entries when converting a table to a view. That's fixed
- properly for 9.3 and later, but in previous branches we need to defend
- against existing mis-converted views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rule printing to dump <literal>INSERT INTO <replaceable>table</replaceable>
- DEFAULT VALUES</literal> correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against stack overflow when there are too many
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> clauses
- in a query (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent platform-dependent failures when dividing the minimum possible
- integer value by -1 (Xi Wang, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible access past end of string in date parsing
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to advance XID epoch if XID wraparound happens during a
- checkpoint and <varname>wal_level</varname> is <literal>hot_standby</literal>
- (Tom Lane, Andres Freund)
- </para>
-
- <para>
- While this mistake had no particular impact on
- <productname>PostgreSQL</productname> itself, it was bad for
- applications that rely on <function>txid_current()</function> and related
- functions: the TXID value would appear to go backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of
- <structname>pg_stat_replication</structname>.<structfield>sync_state</structfield> at a
- page boundary (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Produce an understandable error message if the length of the path name
- for a Unix-domain socket exceeds the platform-specific limit
- (Tom Lane, Andrew Dunstan)
- </para>
-
- <para>
- Formerly, this would result in something quite unhelpful, such as
- <quote>Non-recoverable failure in name resolution</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when sending composite column values to the client
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> more robust about reading the
- <filename>postmaster.pid</filename> file (Heikki Linnakangas)
- </para>
-
- <para>
- Fix race conditions and possible file descriptor leakage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application> if incorrectly-encoded data
- is presented and the <varname>client_encoding</varname> setting is a
- client-only encoding, such as SJIS (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> dump <literal>SEQUENCE SET</literal> items in
- the data not pre-data section of the archive (Tom Lane)
- </para>
-
- <para>
- This change fixes dumping of sequences that are marked as extension
- configuration tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in the <filename>restore.sql</filename> script emitted by
- <application>pg_dump</application> in <literal>tar</literal> output format (Tom Lane)
- </para>
-
- <para>
- The script would fail outright on tables whose names include
- upper-case characters. Also, make the script capable of restoring
- data in <option>--inserts</option> mode as well as the regular COPY mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to accept POSIX-conformant
- <literal>tar</literal> files (Brian Weaver, Tom Lane)
- </para>
-
- <para>
- The original coding of <application>pg_dump</application>'s <literal>tar</literal>
- output mode produced files that are not fully conformant with the
- POSIX standard. This has been corrected for version 9.3. This
- patch updates previous branches so that they will accept both the
- incorrect and the corrected formats, in hopes of avoiding
- compatibility problems when 9.3 comes out.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>tar</literal> files emitted by <application>pg_basebackup</application> to
- be POSIX conformant (Brian Weaver, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_resetxlog</application> to locate <filename>postmaster.pid</filename>
- correctly when given a relative path to the data directory (Tom Lane)
- </para>
-
- <para>
- This mistake could lead to <application>pg_resetxlog</application> not noticing
- that there is an active postmaster using the data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s <function>lo_import()</function> and
- <function>lo_export()</function> functions to report file I/O errors properly
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of nested structure pointer
- variables (Muhammad Usama)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s <function>ecpg_get_data</function> function to
- handle arrays properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pageinspect</filename>'s btree page inspection
- functions take buffer locks while examining pages (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <literal>make install</literal> for an extension creates the
- <filename>extension</filename> installation directory (C&eacute;dric Villemain)
- </para>
-
- <para>
- Previously, this step was missed if <varname>MODULEDIR</varname> was set in
- the extension's Makefile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> support for building loadable modules on AIX
- (Tom Lane)
- </para>
-
- <para>
- Building modules outside the original source tree didn't work on AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012j
- for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
- Samoa, and portions of Brazil.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-6">
- <title>Release 9.1.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.5.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.6</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, you may need to perform <command>REINDEX</command> operations to
- recover from the effects of the data corruption bug described in the
- first changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.4,
- see <xref linkend="release-9-1-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix persistence marking of shared buffers during WAL replay
- (Jeff Davis)
- </para>
-
- <para>
- This mistake can result in buffers not being written out during
- checkpoints, resulting in data corruption if the server later crashes
- without ever having written those buffers. Corruption can occur on
- any server following crash recovery, but it is significantly more
- likely to occur on standby slave servers since those perform much
- more WAL replay. There is a low probability of corruption of btree
- and GIN indexes. There is a much higher probability of corruption of
- table <quote>visibility maps</quote>. Fortunately, visibility maps are
- non-critical data in 9.1, so the worst consequence of such corruption
- in 9.1 installations is transient inefficiency of vacuuming. Table
- data proper cannot be corrupted by this bug.
- </para>
-
- <para>
- While no index corruption due to this bug is known to have occurred
- in the field, as a precautionary measure it is recommended that
- production installations <command>REINDEX</command> all btree and GIN
- indexes at a convenient time after upgrading to 9.1.6.
- </para>
-
- <para>
- Also, if you intend to do an in-place upgrade to 9.2.X, before doing
- so it is recommended to perform a <command>VACUUM</command> of all tables
- while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will ensure that any lingering wrong data in the
- visibility maps is corrected before 9.2.X can depend on it. <link
- linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</varname></link>
- can be adjusted to reduce the performance impact of vacuuming, while
- causing it to take longer to finish.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's assignment of executor parameters, and fix executor's
- rescan logic for CTE plan nodes (Tom Lane)
- </para>
-
- <para>
- These errors could result in wrong answers from queries that scan the
- same <literal>WITH</literal> subquery multiple times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior when <link
- linkend="guc-default-transaction-isolation"><varname>default_transaction_isolation</varname></link>
- is set to <literal>serializable</literal> (Kevin Grittner, Tom Lane, Heikki
- Linnakangas)
- </para>
-
- <para>
- Symptoms include crashes at process start on Windows, and crashes in
- hot standby operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selectivity estimation for text search queries involving
- prefixes, i.e. <replaceable>word</replaceable><literal>:*</literal> patterns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
- Robert Haas, Tom Lane)
- </para>
-
- <para>
- Multi-column GiST indexes might suffer unexpected bloat due to this
- error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cascading privilege revoke to stop if privileges are still held
- (Tom Lane)
- </para>
-
- <para>
- If we revoke a grant option from some role <replaceable>X</replaceable>, but
- <replaceable>X</replaceable> still holds that option via a grant from someone
- else, we should not recursively revoke the corresponding privilege
- from role(s) <replaceable>Y</replaceable> that <replaceable>X</replaceable> had granted it
- to.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow extensions from containing the schema they are assigned to
- (Thom Brown)
- </para>
-
- <para>
- This situation creates circular dependencies that confuse
- <application>pg_dump</application> and probably other things. It's confusing
- for humans too, so disallow it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error messages for Hot Standby misconfiguration errors
- (Gurjeet Singh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>configure</application> probe for <function>mbstowcs_l</function> (Tom
- Lane)
- </para>
-
- <para>
- This fixes build failures on some versions of AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>SIGFPE</literal> when PL/Perl is in use (Andres Freund)
- </para>
-
- <para>
- Perl resets the process's <literal>SIGFPE</literal> handler to
- <literal>SIG_IGN</literal>, which could result in crashes later on. Restore
- the normal Postgres signal handler after initializing PL/Perl.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Perl from crashing if a recursive PL/Perl function is
- redefined while being executed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around possible misoptimization in PL/Perl (Tom Lane)
- </para>
-
- <para>
- Some Linux distributions contain an incorrect version of
- <filename>pthread.h</filename> that results in incorrect compiled code in
- PL/Perl, leading to crashes if a PL/Perl function calls another one
- that throws an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in <filename>contrib/pg_trgm</filename>'s <literal>LIKE</literal> pattern
- analysis code (Fujii Masao)
- </para>
-
- <para>
- <literal>LIKE</literal> queries using a trigram index could produce wrong
- results if the pattern contained <literal>LIKE</literal> escape characters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s handling of line endings on Windows
- (Andrew Dunstan)
- </para>
-
- <para>
- Previously, <application>pg_upgrade</application> might add or remove carriage
- returns in places such as function bodies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, make <application>pg_upgrade</application> use backslash path
- separators in the scripts it emits (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove unnecessary dependency on <application>pg_config</application> from
- <application>pg_upgrade</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012f
- for DST law changes in Fiji
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-5">
- <title>Release 9.1.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-08-17</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.4.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.5</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.4,
- see <xref linkend="release-9-1-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via XML entity references
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <function>xml_parse()</function> would attempt to fetch external files or
- URLs as needed to resolve DTD and entity references in an XML value,
- thus allowing unprivileged database users to attempt to fetch data
- with the privileges of the database server. While the external data
- wouldn't get returned directly to the user, portions of it could be
- exposed in error messages if the data didn't parse as valid XML; and
- in any case the mere ability to check existence of a file might be
- useful to an attacker. (CVE-2012-3489)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent access to external files/URLs via <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Peter Eisentraut)
- </para>
-
- <para>
- <application>libxslt</application> offers the ability to read and write both
- files and URLs through stylesheet commands, thus allowing
- unprivileged database users to both read and write data with the
- privileges of the database server. Disable that through proper use
- of <application>libxslt</application>'s security options. (CVE-2012-3488)
- </para>
-
- <para>
- Also, remove <function>xslt_process()</function>'s ability to fetch documents
- and stylesheets from external files/URLs. While this was a
- documented <quote>feature</quote>, it was long regarded as a bad idea.
- The fix for CVE-2012-3489 broke that capability, and rather than
- expend effort on trying to fix it, we're just going to summarily
- remove it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent too-early recycling of btree index pages (Noah Misch)
- </para>
-
- <para>
- When we allowed read-only transactions to skip assigning XIDs, we
- introduced the possibility that a deleted btree page could be
- recycled while a read-only transaction was still in flight to it.
- This would result in incorrect index search results. The probability
- of such an error occurring in the field seems very low because of the
- timing requirements, but nonetheless it should be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
- </para>
-
- <para>
- If <command>ALTER SEQUENCE</command> was executed on a freshly created or
- reset sequence, and then precisely one <function>nextval()</function> call
- was made on it, and then the server crashed, WAL replay would restore
- the sequence to a state in which it appeared that no
- <function>nextval()</function> had been done, thus allowing the first
- sequence value to be returned again by the next
- <function>nextval()</function> call. In particular this could manifest for
- <type>serial</type> columns, since creation of a serial column's sequence
- includes an <command>ALTER SEQUENCE OWNED BY</command> step.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in <literal>enum</literal>-type value comparisons (Robert
- Haas, Tom Lane)
- </para>
-
- <para>
- Comparisons could fail when encountering an enum value added since
- the current query started.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>txid_current()</function> to report the correct epoch when not
- in hot standby (Heikki Linnakangas)
- </para>
-
- <para>
- This fixes a regression introduced in the previous minor release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent selection of unsuitable replication connections as
- the synchronous standby (Fujii Masao)
- </para>
-
- <para>
- The master might improperly choose pseudo-servers such as
- <application>pg_receivexlog</application> or <application>pg_basebackup</application>
- as the synchronous standby, and then wait indefinitely for them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in startup of Hot Standby when a master transaction has many
- subtransactions (Andres Freund)
- </para>
-
- <para>
- This mistake led to failures reported as <quote>out-of-order XID
- insertion in KnownAssignedXids</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the <filename>backup_label</filename> file is fsync'd after
- <function>pg_start_backup()</function> (Dave Kerr)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout handling in walsender processes (Tom Lane)
- </para>
-
- <para>
- WAL sender background processes neglected to establish a
- <systemitem>SIGALRM</systemitem> handler, meaning they would wait forever in
- some corner cases where a timeout ought to happen.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Wake walsenders after each background flush by walwriter (Andres
- Freund, Simon Riggs)
- </para>
-
- <para>
- This greatly reduces replication delay when the workload contains
- only asynchronously-committed transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>LISTEN</literal>/<literal>NOTIFY</literal> to cope better with I/O
- problems, such as out of disk space (Tom Lane)
- </para>
-
- <para>
- After a write failure, all subsequent attempts to send more
- <literal>NOTIFY</literal> messages would fail with messages like
- <quote>Could not read from file "pg_notify/<replaceable>nnnn</replaceable>" at
- offset <replaceable>nnnnn</replaceable>: Success</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only allow autovacuum to be auto-canceled by a directly blocked
- process (Tom Lane)
- </para>
-
- <para>
- The original coding could allow inconsistent behavior in some cases;
- in particular, an autovacuum could get canceled after less than
- <literal>deadlock_timeout</literal> grace period.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve logging of autovacuum cancels (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix log collector so that <literal>log_truncate_on_rotation</literal> works
- during the very first log rotation after server start (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>WITH</literal> attached to a nested set operation
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a whole-row reference to a subquery doesn't include any
- extra <literal>GROUP BY</literal> or <literal>ORDER BY</literal> columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dependencies generated during <literal>ALTER TABLE ... ADD
- CONSTRAINT USING INDEX</literal> (Tom Lane)
- </para>
-
- <para>
- This command left behind a redundant <structname>pg_depend</structname> entry
- for the index, which could confuse later operations, notably
- <literal>ALTER TABLE ... ALTER COLUMN TYPE</literal> on one of the indexed
- columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to work on extensions (Alvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow copying whole-row references in <literal>CHECK</literal>
- constraints and index definitions during <command>CREATE TABLE</command>
- (Tom Lane)
- </para>
-
- <para>
- This situation can arise in <command>CREATE TABLE</command> with
- <literal>LIKE</literal> or <literal>INHERITS</literal>. The copied whole-row
- variable was incorrectly labeled with the row type of the original
- table not the new one. Rejecting the case seems reasonable for
- <literal>LIKE</literal>, since the row types might well diverge later. For
- <literal>INHERITS</literal> we should ideally allow it, with an implicit
- coercion to the parent table's row type; but that will require more
- work than seems safe to back-patch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in <literal>ARRAY(SELECT ...)</literal> subqueries (Heikki
- Linnakangas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to pass correct collation to operator selectivity
- estimators (Tom Lane)
- </para>
-
- <para>
- This was not previously required by any core selectivity estimation
- function, but third-party code might need it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix extraction of common prefixes from regular expressions (Tom Lane)
- </para>
-
- <para>
- The code could get confused by quantified parenthesized
- subexpressions, such as <literal>^(foo)?bar</literal>. This would lead to
- incorrect index optimization of searches for such patterns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs with parsing signed
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable> and
- <replaceable>hh</replaceable><literal>:</literal><replaceable>mm</replaceable><literal>:</literal><replaceable>ss</replaceable>
- fields in <type>interval</type> constants (Amit Kapila, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to better handle views containing partial
- <literal>GROUP BY</literal> lists (Tom Lane)
- </para>
-
- <para>
- A view that lists only a primary key column in <literal>GROUP BY</literal>,
- but uses other table columns as if they were grouped, gets marked as
- depending on the primary key. Improper handling of such primary key
- dependencies in <application>pg_dump</application> resulted in poorly-ordered
- dumps, which at best would be inefficient to restore and at worst
- could result in outright failure of a parallel
- <application>pg_restore</application> run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, avoid setting UTF8 flag when in SQL_ASCII encoding
- (Alex Hunsaker, Kyotaro Horiguchi, Alvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use Postgres' encoding conversion functions, not Python's, when
- converting a Python Unicode string to the server encoding in
- PL/Python (Jan Urbanski)
- </para>
-
- <para>
- This avoids some corner-case problems, notably that Python doesn't
- support all the encodings Postgres does. A notable functional change
- is that if the server encoding is SQL_ASCII, you will get the UTF-8
- representation of the string; formerly, any non-ASCII characters in
- the string would result in an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mapping of PostgreSQL encodings to Python encodings in PL/Python
- (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report errors properly in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012e
- for DST law changes in Morocco and Tokelau
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-4">
- <title>Release 9.1.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-06-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.3.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.4</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you use the <type>citext</type> data type, and you upgraded
- from a previous major release by running <application>pg_upgrade</application>,
- you should run <literal>CREATE EXTENSION citext FROM unpackaged</literal>
- to avoid collation-related failures in <type>citext</type> operations.
- The same is necessary if you restore a dump from a pre-9.1 database
- that contains an instance of the <type>citext</type> data type.
- If you've already run the <command>CREATE EXTENSION</command> command before
- upgrading to 9.1.4, you will instead need to do manual catalog updates
- as explained in the third changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.1.2,
- see <xref linkend="release-9-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect password transformation in
- <filename>contrib/pgcrypto</filename>'s DES <function>crypt()</function> function
- (Solar Designer)
- </para>
-
- <para>
- If a password string contained the byte value <literal>0x80</literal>, the
- remainder of the password was ignored, causing the password to be much
- weaker than it appeared. With this fix, the rest of the string is
- properly included in the DES hash. Any stored password values that are
- affected by this bug will thus no longer match, so the stored values may
- need to be updated. (CVE-2012-2143)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore <literal>SECURITY DEFINER</literal> and <literal>SET</literal> attributes for
- a procedural language's call handler (Tom Lane)
- </para>
-
- <para>
- Applying such attributes to a call handler could crash the server.
- (CVE-2012-2655)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/citext</filename>'s upgrade script fix collations of
- <type>citext</type> arrays and domains over <type>citext</type>
- (Tom Lane)
- </para>
-
- <para>
- Release 9.1.2 provided a fix for collations of <type>citext</type> columns
- and indexes in databases upgraded or reloaded from pre-9.1
- installations, but that fix was incomplete: it neglected to handle arrays
- and domains over <type>citext</type>. This release extends the module's
- upgrade script to handle these cases. As before, if you have already
- run the upgrade script, you'll need to run the collation update
- commands by hand instead. See the 9.1.2 release notes for more
- information about doing this.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow numeric timezone offsets in <type>timestamp</type> input to be up to
- 16 hours away from UTC (Tom Lane)
- </para>
-
- <para>
- Some historical time zones have offsets larger than 15 hours, the
- previous limit. This could result in dumped data values being rejected
- during reload.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timestamp conversion to cope when the given time is exactly the
- last DST transition time for the current timezone (Tom Lane)
- </para>
-
- <para>
- This oversight has been there a long time, but was not noticed
- previously because most DST-using zones are presumed to have an
- indefinite sequence of future DST transitions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <type>text</type> to <type>name</type> and <type>char</type> to <type>name</type>
- casts to perform string truncation correctly in multibyte encodings
- (Karl Schnaitter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory copying bug in <function>to_tsquery()</function> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <function>txid_current()</function> reports the correct epoch when
- executed in hot standby (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's handling of outer PlaceHolderVars within subqueries (Tom
- Lane)
- </para>
-
- <para>
- This bug concerns sub-SELECTs that reference variables coming from the
- nullable side of an outer join of the surrounding query.
- In 9.1, queries affected by this bug would fail with <quote>ERROR:
- Upper-level PlaceHolderVar found where not expected</quote>. But in 9.0 and
- 8.4, you'd silently get possibly-wrong answers, since the value
- transmitted into the subquery wouldn't go to null when it should.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of <literal>UNION ALL</literal> subqueries with output columns
- that are not simple variables (Tom Lane)
- </para>
-
- <para>
- Planning of such cases got noticeably worse in 9.1 as a result of a
- misguided fix for <quote>MergeAppend child's targetlist doesn't match
- MergeAppend</quote> errors. Revert that fix and do it another way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow session startup when <structname>pg_attribute</structname> is very large
- (Tom Lane)
- </para>
-
- <para>
- If <structname>pg_attribute</structname> exceeds one-fourth of
- <varname>shared_buffers</varname>, cache rebuilding code that is sometimes
- needed during session start would trigger the synchronized-scan logic,
- causing it to take many times longer than normal. The problem was
- particularly acute if many new sessions were starting at once.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure sequential scans check for query cancel reasonably often (Merlin
- Moncure)
- </para>
-
- <para>
- A scan encountering many consecutive pages that contain no live tuples
- would not respond to interrupts meanwhile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure the Windows implementation of <function>PGSemaphoreLock()</function>
- clears <varname>ImmediateInterruptOK</varname> before returning (Tom Lane)
- </para>
-
- <para>
- This oversight meant that a query-cancel interrupt received later
- in the same query could be accepted at an unsafe time, with
- unpredictable but not good consequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show whole-row variables safely when printing views or rules
- (Abbas Butt, Tom Lane)
- </para>
-
- <para>
- Corner cases involving ambiguous names (that is, the name could be
- either a table or column name of the query) were printed in an
- ambiguous way, risking that the view or rule would be interpreted
- differently after dump and reload. Avoid the ambiguous case by
- attaching a no-op cast.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>COPY FROM</command> to properly handle null marker strings that
- correspond to invalid encoding (Tom Lane)
- </para>
-
- <para>
- A null marker string such as <literal>E'\\0'</literal> should work, and did
- work in the past, but the case got broken in 8.4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN VERBOSE</command> for writable CTEs containing
- <literal>RETURNING</literal> clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>PREPARE TRANSACTION</command> to work correctly in the presence
- of advisory locks (Tom Lane)
- </para>
-
- <para>
- Historically, <command>PREPARE TRANSACTION</command> has simply ignored any
- session-level advisory locks the session holds, but this case was
- accidentally broken in 9.1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix truncation of unlogged tables (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore missing schemas during non-interactive assignments of
- <varname>search_path</varname> (Tom Lane)
- </para>
-
- <para>
- This re-aligns 9.1's behavior with that of older branches. Previously
- 9.1 would throw an error for nonexistent schemas mentioned in
- <varname>search_path</varname> settings obtained from places such as
- <command>ALTER DATABASE SET</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs with temporary or transient tables used in extension scripts
- (Tom Lane)
- </para>
-
- <para>
- This includes cases such as a rewriting <command>ALTER TABLE</command> within
- an extension update script, since that uses a transient table behind
- the scenes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure autovacuum worker processes perform stack depth checking
- properly (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, infinite recursion in a function invoked by
- auto-<command>ANALYZE</command> could crash worker processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to not lose log coherency under high load (Andrew
- Dunstan)
- </para>
-
- <para>
- The collector previously could fail to reassemble large messages if it
- got too busy.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logging collector to ensure it will restart file rotation
- after receiving <systemitem>SIGHUP</systemitem> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>too many LWLocks taken</quote> failure in GiST indexes (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL replay logic for GIN indexes to not fail if the index was
- subsequently dropped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect SSI conflicts of prepared transactions after a crash
- (Dan Ports)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid synchronous replication delay when committing a transaction that
- only modified temporary tables (Heikki Linnakangas)
- </para>
-
- <para>
- In such a case the transaction's commit record need not be flushed to
- standby servers, but some of the code didn't know that and waited for
- it to happen anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error handling in <application>pg_basebackup</application>
- (Thomas Ogrisegg, Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>walsender</application> to not go into a busy loop if connection
- is terminated (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in PL/pgSQL's <command>RETURN NEXT</command> command (Joe
- Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's <command>GET DIAGNOSTICS</command> command when the target
- is the function's first variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that PL/Perl package-qualifies the <varname>_TD</varname> variable
- (Alex Hunsaker)
- </para>
-
- <para>
- This bug caused trigger invocations to fail when they are nested
- within a function invocation that changes the current package.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python functions returning composite types to accept a string
- for their result value (Jan Urbanski)
- </para>
-
- <para>
- This case was accidentally broken by the 9.1 additions to allow a
- composite result value to be supplied in other formats, such as
- dictionaries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential access off the end of memory in <application>psql</application>'s
- expanded display (<command>\x</command>) mode (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several performance problems in <application>pg_dump</application> when
- the database contains many objects (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> could get very slow if the database contained
- many schemas, or if many objects are in dependency loops, or if there
- are many owned sequences.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory and file descriptor leaks in <application>pg_restore</application>
- when reading a directory-format archive (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> for the case that a database stored in a
- non-default tablespace contains a table in the cluster's default
- tablespace (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, fix rare memory leaks and possible overwrite
- of one byte after the <structname>sqlca_t</structname> structure (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename>'s <function>dblink_exec()</function> to not leak
- temporary database connections upon error (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to report the correct connection name in
- error messages (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/vacuumlo</filename> to use multiple transactions when
- dropping many large objects (Tim Lewis, Robert Haas, Tom Lane)
- </para>
-
- <para>
- This change avoids exceeding <varname>max_locks_per_transaction</varname> when
- many objects need to be dropped. The behavior can be adjusted with the
- new <literal>-l</literal> (limit) option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012c
- for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
- Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
- also historical corrections for Canada.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-3">
- <title>Release 9.1.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-02-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.2.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.3</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.1.2,
- see <xref linkend="release-9-1-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Require execute permission on the trigger function for
- <command>CREATE TRIGGER</command> (Robert Haas)
- </para>
-
- <para>
- This missing check could allow another user to execute a trigger
- function with forged input data, by installing it on a table he owns.
- This is only of significance for trigger functions marked
- <literal>SECURITY DEFINER</literal>, since otherwise trigger functions run
- as the table owner anyway. (CVE-2012-0866)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove arbitrary limitation on length of common name in SSL
- certificates (Heikki Linnakangas)
- </para>
-
- <para>
- Both <application>libpq</application> and the server truncated the common name
- extracted from an SSL certificate at 32 bytes. Normally this would
- cause nothing worse than an unexpected verification failure, but there
- are some rather-implausible scenarios in which it might allow one
- certificate holder to impersonate another. The victim would have to
- have a common name exactly 32 bytes long, and the attacker would have
- to persuade a trusted CA to issue a certificate in which the common
- name has that string as a prefix. Impersonating a server would also
- require some additional exploit to redirect client connections.
- (CVE-2012-0867)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert newlines to spaces in names written in <application>pg_dump</application>
- comments (Robert Haas)
- </para>
-
- <para>
- <application>pg_dump</application> was incautious about sanitizing object names
- that are emitted within SQL comments in its output script. A name
- containing a newline would at least render the script syntactically
- incorrect. Maliciously crafted object names could present a SQL
- injection risk when the script is reloaded. (CVE-2012-0868)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree index corruption from insertions concurrent with vacuuming
- (Tom Lane)
- </para>
-
- <para>
- An index page split caused by an insertion could sometimes cause a
- concurrently-running <command>VACUUM</command> to miss removing index entries
- that it should remove. After the corresponding table rows are removed,
- the dangling index entries would cause errors (such as <quote>could not
- read block N in file ...</quote>) or worse, silently wrong query results
- after unrelated rows are re-inserted at the now-free table locations.
- This bug has been present since release 8.2, but occurs so infrequently
- that it was not diagnosed until now. If you have reason to suspect
- that it has happened in your database, reindexing the affected index
- will fix things.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix transient zeroing of shared buffers during WAL replay (Tom Lane)
- </para>
-
- <para>
- The replay logic would sometimes zero and refill a shared buffer, so
- that the contents were transiently invalid. In hot standby mode this
- can result in a query that's executing in parallel seeing garbage data.
- Various symptoms could result from that, but the most common one seems
- to be <quote>invalid memory alloc request size</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of data-modifying <literal>WITH</literal> subplans in
- <literal>READ COMMITTED</literal> rechecking (Tom Lane)
- </para>
-
- <para>
- A <literal>WITH</literal> clause containing
- <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command> would crash
- if the parent <command>UPDATE</command> or <command>DELETE</command> command needed
- to be re-evaluated at one or more rows due to concurrent updates
- in <literal>READ COMMITTED</literal> mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner case in SSI transaction cleanup
- (Dan Ports)
- </para>
-
- <para>
- When finishing up a read-write serializable transaction,
- a crash could occur if all remaining active serializable transactions
- are read-only.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster to attempt restart after a hot-standby crash (Tom Lane)
- </para>
-
- <para>
- A logic error caused the postmaster to terminate, rather than attempt
- to restart the cluster, if any backend process crashed while operating
- in hot standby mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CLUSTER</command>/<command>VACUUM FULL</command> handling of toast
- values owned by recently-updated rows (Tom Lane)
- </para>
-
- <para>
- This oversight could lead to <quote>duplicate key value violates unique
- constraint</quote> errors being reported against the toast table's index
- during one of these commands.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update per-column permissions, not only per-table permissions, when
- changing table owner (Tom Lane)
- </para>
-
- <para>
- Failure to do this meant that any previously granted column permissions
- were still shown as having been granted by the old owner. This meant
- that neither the new owner nor a superuser could revoke the
- now-untraceable-to-table-owner permissions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support foreign data wrappers and foreign servers in
- <command>REASSIGN OWNED</command> (Alvaro Herrera)
- </para>
-
- <para>
- This command failed with <quote>unexpected classid</quote> errors if
- it needed to change the ownership of any such objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-existent values for some settings in <command>ALTER
- USER/DATABASE SET</command> (Heikki Linnakangas)
- </para>
-
- <para>
- Allow <varname>default_text_search_config</varname>,
- <varname>default_tablespace</varname>, and <varname>temp_tablespaces</varname> to be
- set to names that are not known. This is because they might be known
- in another database where the setting is intended to be used, or for the
- tablespace cases because the tablespace might not be created yet. The
- same issue was previously recognized for <varname>search_path</varname>, and
- these settings now act like that one.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unsupported node type</quote> error caused by <literal>COLLATE</literal>
- in an <command>INSERT</command> expression (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing when we have problems deleting table files post-commit
- (Tom Lane)
- </para>
-
- <para>
- Dropping a table should lead to deleting the underlying disk files only
- after the transaction commits. In event of failure then (for instance,
- because of wrong file permissions) the code is supposed to just emit a
- warning message and go on, since it's too late to abort the
- transaction. This logic got broken as of release 8.4, causing such
- situations to result in a PANIC and an unrestartable database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recover from errors occurring during WAL replay of <command>DROP
- TABLESPACE</command> (Tom Lane)
- </para>
-
- <para>
- Replay will attempt to remove the tablespace's directories, but there
- are various reasons why this might fail (for example, incorrect
- ownership or permissions on those directories). Formerly the replay
- code would panic, rendering the database unrestartable without manual
- intervention. It seems better to log the problem and continue, since
- the only consequence of failure to remove the directories is some
- wasted disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in logging AccessExclusiveLocks for hot standby
- (Simon Riggs)
- </para>
-
- <para>
- Sometimes a lock would be logged as being held by <quote>transaction
- zero</quote>. This is at least known to produce assertion failures on
- slave servers, and might be the cause of more serious problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track the OID counter correctly during WAL replay, even when it wraps
- around (Tom Lane)
- </para>
-
- <para>
- Previously the OID counter would remain stuck at a high value until the
- system exited replay mode. The practical consequences of that are
- usually nil, but there are scenarios wherein a standby server that's
- been promoted to master might take a long time to advance the OID
- counter to a reasonable value once values are needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent emitting misleading <quote>consistent recovery state reached</quote>
- log message at the beginning of crash recovery (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initial value of
- <structname>pg_stat_replication</structname>.<structfield>replay_location</structfield>
- (Fujii Masao)
- </para>
-
- <para>
- Previously, the value shown would be wrong until at least one WAL
- record had been replayed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression back-references with <literal>*</literal> attached
- (Tom Lane)
- </para>
-
- <para>
- Rather than enforcing an exact string match, the code would effectively
- accept any string that satisfies the pattern sub-expression referenced
- by the back-reference symbol.
- </para>
-
- <para>
- A similar problem still afflicts back-references that are embedded in a
- larger quantified expression, rather than being the immediate subject
- of the quantifier. This will be addressed in a future
- <productname>PostgreSQL</productname> release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recently-introduced memory leak in processing of
- <type>inet</type>/<type>cidr</type> values (Heikki Linnakangas)
- </para>
-
- <para>
- A patch in the December 2011 releases of <productname>PostgreSQL</productname>
- caused memory leakage in these operations, which could be significant
- in scenarios such as building a btree index on such a column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's ability to push down index-expression restrictions
- through <literal>UNION ALL</literal> (Tom Lane)
- </para>
-
- <para>
- This type of optimization was inadvertently disabled by a fix for
- another problem in 9.1.2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of <literal>WITH</literal> clauses referenced in
- <command>UPDATE</command>/<command>DELETE</command> on an inherited table
- (Tom Lane)
- </para>
-
- <para>
- This bug led to <quote>could not find plan for CTE</quote> failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GIN cost estimation to handle <literal>column IN (...)</literal>
- index conditions (Marti Raudsepp)
- </para>
-
- <para>
- This oversight would usually lead to crashes if such a condition could
- be used with a GIN index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent assertion failure when exiting a session with an open, failed
- transaction (Tom Lane)
- </para>
-
- <para>
- This bug has no impact on normal builds with asserts not enabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling pointer after <command>CREATE TABLE AS</command>/<command>SELECT
- INTO</command> in a SQL-language function (Tom Lane)
- </para>
-
- <para>
- In most cases this only led to an assertion failure in assert-enabled
- builds, but worse consequences seem possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid double close of file handle in syslogger on Windows (MauMau)
- </para>
-
- <para>
- Ordinarily this error was invisible, but it would cause an exception
- when running on a debug version of Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix I/O-conversion-related memory leaks in plpgsql
- (Andres Freund, Jan Urbanski, Tom Lane)
- </para>
-
- <para>
- Certain operations would leak memory until the end of the current
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around bug in perl's SvPVutf8() function (Andrew Dunstan)
- </para>
-
- <para>
- This function crashes when handed a typeglob or certain read-only
- objects such as <literal>$^V</literal>. Make plperl avoid passing those to
- it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, don't dump contents of an extension's
- configuration tables if the extension itself is not being dumped
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s handling of inherited table columns
- (Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> mishandled situations where a child column has
- a different default expression than its parent column. If the default
- is textually identical to the parent's default, but not actually the
- same (for instance, because of schema search path differences) it would
- not be recognized as different, so that after dump and restore the
- child would be allowed to inherit the parent's default. Child columns
- that are <literal>NOT NULL</literal> where their parent is not could also be
- restored subtly incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s direct-to-database mode for
- INSERT-style table data (Tom Lane)
- </para>
-
- <para>
- Direct-to-database restores from archive files made with
- <option>--inserts</option> or <option>--column-inserts</option> options fail when
- using <application>pg_restore</application> from a release dated September or
- December 2011, as a result of an oversight in a fix for another
- problem. The archive file itself is not at fault, and text-mode
- output is okay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach <application>pg_upgrade</application> to handle renaming of
- <application>plpython</application>'s shared library (Bruce Momjian)
- </para>
-
- <para>
- Upgrading a pre-9.1 database that included plpython would fail because
- of this oversight.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to process tables containing
- <type>regclass</type> columns (Bruce Momjian)
- </para>
-
- <para>
- Since <application>pg_upgrade</application> now takes care to preserve
- <structname>pg_class</structname> OIDs, there was no longer any reason for this
- restriction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>libpq</application> ignore <literal>ENOTDIR</literal> errors
- when looking for an SSL client certificate file
- (Magnus Hagander)
- </para>
-
- <para>
- This allows SSL connections to be established, though without a
- certificate, even when the user's home directory is set to something
- like <literal>/dev/null</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some more field alignment issues in <application>ecpg</application>'s SQLDA area
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>AT</literal> option in <application>ecpg</application>
- <literal>DEALLOCATE</literal> statements (Michael Meskes)
- </para>
-
- <para>
- The infrastructure to support this has been there for awhile, but
- through an oversight there was still an error check rejecting the case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not use the variable name when defining a varchar structure in ecpg
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/auto_explain</filename>'s JSON output mode to produce
- valid JSON (Andrew Dunstan)
- </para>
-
- <para>
- The output used brackets at the top level, when it should have used
- braces.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <filename>contrib/intarray</filename>'s <literal>int[] &amp;
- int[]</literal> operator (Guillaume Lelarge)
- </para>
-
- <para>
- If the smallest integer the two input arrays have in common is 1,
- and there are smaller values in either array, then 1 would be
- incorrectly omitted from the result.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error detection in <filename>contrib/pgcrypto</filename>'s
- <function>encrypt_iv()</function> and <function>decrypt_iv()</function>
- (Marko Kreen)
- </para>
-
- <para>
- These functions failed to report certain types of invalid-input errors,
- and would instead return random garbage values for incorrect input.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <filename>contrib/test_parser</filename>
- (Paul Guyot)
- </para>
-
- <para>
- The code would try to read one more byte than it should, which would
- crash in corner cases.
- Since <filename>contrib/test_parser</filename> is only example code, this is
- not a security issue in itself, but bad example code is still bad.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <function>__sync_lock_test_and_set()</function> for spinlocks on ARM, if
- available (Martin Pitt)
- </para>
-
- <para>
- This function replaces our previous use of the <literal>SWPB</literal>
- instruction, which is deprecated and not available on ARMv6 and later.
- Reports suggest that the old code doesn't fail in an obvious way on
- recent ARM boards, but simply doesn't interlock concurrent accesses,
- leading to bizarre failures in multiprocess operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <option>-fexcess-precision=standard</option> option when building with
- gcc versions that accept it (Andrew Dunstan)
- </para>
-
- <para>
- This prevents assorted scenarios wherein recent versions of gcc will
- produce creative results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow use of threaded Python on FreeBSD (Chris Rees)
- </para>
-
- <para>
- Our configure script previously believed that this combination wouldn't
- work; but FreeBSD fixed the problem, so remove that error check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow MinGW builds to use standardly-named OpenSSL libraries
- (Tomasz Ostrowski)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-2">
- <title>Release 9.1.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.1.1.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.2</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- <para>
- However, a longstanding error was discovered in the definition of the
- <literal>information_schema.referential_constraints</literal> view. If you
- rely on correct results from that view, you should replace its
- definition as explained in the first changelog item below.
- </para>
-
- <para>
- Also, if you use the <type>citext</type> data type, and you upgraded
- from a previous major release by running <application>pg_upgrade</application>,
- you should run <literal>CREATE EXTENSION citext FROM unpackaged</literal>
- to avoid collation-related failures in <type>citext</type> operations.
- The same is necessary if you restore a dump from a pre-9.1 database
- that contains an instance of the <type>citext</type> data type.
- If you've already run the <command>CREATE EXTENSION</command> command before
- upgrading to 9.1.2, you will instead need to do manual catalog updates
- as explained in the second changelog item.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix bugs in <literal>information_schema.referential_constraints</literal> view
- (Tom Lane)
- </para>
-
- <para>
- This view was being insufficiently careful about matching the
- foreign-key constraint to the depended-on primary or unique key
- constraint. That could result in failure to show a foreign key
- constraint at all, or showing it multiple times, or claiming that it
- depends on a different constraint than the one it really does.
- </para>
-
- <para>
- Since the view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can (as a superuser) drop the
- <literal>information_schema</literal> schema then re-create it by sourcing
- <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database
- to be fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/citext</filename>'s upgrade script fix collations of
- <type>citext</type> columns and indexes (Tom Lane)
- </para>
-
- <para>
- Existing <type>citext</type> columns and indexes aren't correctly marked as
- being of a collatable data type during <application>pg_upgrade</application> from
- a pre-9.1 server, or when a pre-9.1 dump containing the <type>citext</type>
- type is loaded into a 9.1 server.
- That leads to operations on these columns failing with errors
- such as <quote>could not determine which collation to use for string
- comparison</quote>. This change allows them to be fixed by the same
- script that upgrades the <type>citext</type> module into a proper 9.1
- extension during <literal>CREATE EXTENSION citext FROM unpackaged</literal>.
- </para>
-
- <para>
- If you have a previously-upgraded database that is suffering from this
- problem, and you already ran the <command>CREATE EXTENSION</command> command,
- you can manually run (as superuser) the <command>UPDATE</command> commands
- found at the end of
- <filename><replaceable>SHAREDIR</replaceable>/extension/citext--unpackaged--1.0.sql</filename>.
- (Run <literal>pg_config --sharedir</literal> if you're uncertain where
- <replaceable>SHAREDIR</replaceable> is.)
- There is no harm in doing this again if unsure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash during <command>UPDATE</command> or <command>DELETE</command> that
- joins to the output of a scalar-returning function (Tom Lane)
- </para>
-
- <para>
- A crash could only occur if the target row had been concurrently
- updated, so this problem surfaced only intermittently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect replay of WAL records for GIN index updates
- (Tom Lane)
- </para>
-
- <para>
- This could result in transiently failing to find index entries after
- a crash, or on a hot-standby server. The problem would be repaired
- by the next <command>VACUUM</command> of the index, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
- SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
- (Tom Lane)
- </para>
-
- <para>
- If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
- attempts to copy its data verbatim to another table could produce
- corrupt results in certain corner cases.
- The problem can only manifest in this precise form in 8.4 and later,
- but we patched earlier versions as well in case there are other code
- paths that could trigger the same bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failures during hot standby startup (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Start hot standby faster when initial snapshot is incomplete
- (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition during toast table access from stale syscache entries
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was transient errors like <quote>missing chunk
- number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited
- toast table would always belong to a system catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track dependencies of functions on items used in parameter default
- expressions (Tom Lane)
- </para>
-
- <para>
- Previously, a referenced object could be dropped without having dropped
- or modified the function, leading to misbehavior when the function was
- used. Note that merely installing this update will not fix the missing
- dependency entries; to do that, you'd need to <command>CREATE OR
- REPLACE</command> each such function afterwards. If you have functions whose
- defaults depend on non-built-in objects, doing so is recommended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect management of placeholder variables in nestloop joins
- (Tom Lane)
- </para>
-
- <para>
- This bug is known to lead to <quote>variable not found in subplan target
- list</quote> planner errors, and could possibly result in wrong query output
- when outer joins are involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix window functions that sort by expressions involving aggregates
- (Tom Lane)
- </para>
-
- <para>
- Previously these could fail with <quote>could not find pathkey item to
- sort</quote> planner errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>MergeAppend child's targetlist doesn't match MergeAppend</quote>
- planner errors (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix index matching for operators with both collatable and noncollatable
- inputs (Tom Lane)
- </para>
-
- <para>
- In 9.1.0, an indexable operator that has a non-collatable left-hand
- input type and a collatable right-hand input type would not be
- recognized as matching the left-hand column's index. An example is
- the <type>hstore</type> <literal>?</literal> <type>text</type> operator.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow inlining of set-returning SQL functions with multiple OUT
- parameters (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't trust deferred-unique indexes for join removal (Tom Lane and Marti
- Raudsepp)
- </para>
-
- <para>
- A deferred uniqueness constraint might not hold intra-transaction,
- so assuming that it does could give incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>DatumGetInetP()</function> unpack inet datums that have a 1-byte
- header, and add a new macro, <function>DatumGetInetPP()</function>, that does
- not (Heikki Linnakangas)
- </para>
-
- <para>
- This change affects no core code, but might prevent crashes in add-on
- code that expects <function>DatumGetInetP()</function> to produce an unpacked
- datum as per usual convention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve locale support in <type>money</type> type's input and output
- (Tom Lane)
- </para>
-
- <para>
- Aside from not supporting all standard
- <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
- formatting options, the input and output functions were inconsistent,
- meaning there were locales in which dumped <type>money</type> values could
- not be re-read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't let <link
- linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
- affect <literal>CASE foo WHEN NULL ...</literal> constructs
- (Heikki Linnakangas)
- </para>
-
- <para>
- <varname>transform_null_equals</varname> is only supposed to affect
- <literal>foo = NULL</literal> expressions written directly by the user, not
- equality checks generated internally by this form of <literal>CASE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change foreign-key trigger creation order to better support
- self-referential foreign keys (Tom Lane)
- </para>
-
- <para>
- For a cascading foreign key that references its own table, a row update
- will fire both the <literal>ON UPDATE</literal> trigger and the
- <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
- trigger must execute first, else the <literal>CHECK</literal> will check a
- non-final state of the row and possibly throw an inappropriate error.
- However, the firing order of these triggers is determined by their
- names, which generally sort in creation order since the triggers have
- auto-generated names following the convention
- <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require
- modifying that convention, which we will do in 9.2, but it seems risky
- to change it in existing releases. So this patch just changes the
- creation order of the triggers. Users encountering this type of error
- should drop and re-create the foreign key constraint to get its
- triggers into the right order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>IF EXISTS</literal> to work correctly in <command>DROP OPERATOR
- FAMILY</command> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow dropping of an extension from within its own script
- (Tom Lane)
- </para>
-
- <para>
- This prevents odd behavior in case of incorrect management of extension
- dependencies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't mark auto-generated types as extension members (Robert Haas)
- </para>
-
- <para>
- Relation rowtypes and automatically-generated array types do not need to
- have their own extension membership entries in <structname>pg_depend</structname>,
- and creating such entries complicates matters for extension upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with invalid pre-existing <varname>search_path</varname> settings during
- <command>CREATE EXTENSION</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid floating-point underflow while tracking buffer allocation rate
- (Greg Matthews)
- </para>
-
- <para>
- While harmless in itself, on certain platforms this would result in
- annoying kernel log messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum transactions from running in serializable mode
- (Tom Lane)
- </para>
-
- <para>
- Autovacuum formerly used the cluster-wide default transaction isolation
- level, but there is no need for it to use anything higher than READ
- COMMITTED, and using SERIALIZABLE could result in unnecessary delays
- for other processes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure walsender processes respond promptly to <systemitem>SIGTERM</systemitem>
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Exclude <filename>postmaster.opts</filename> from base backups
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve configuration file name and line number values when starting
- child processes under Windows (Tom Lane)
- </para>
-
- <para>
- Formerly, these would not be displayed correctly in the
- <structname>pg_settings</structname> view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect field alignment in <application>ecpg</application>'s SQLDA area
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve blank lines within commands in <application>psql</application>'s command
- history (Robert Haas)
- </para>
-
- <para>
- The former behavior could cause problems if an empty line was removed
- from within a string literal, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid platform-specific infinite loop in <application>pg_dump</application>
- (Steve Singer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compression of plain-text output format in <application>pg_dump</application>
- (Adrian Klaver and Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application> has historically understood <literal>-Z</literal> with
- no <literal>-F</literal> switch to mean that it should emit a gzip-compressed
- version of its plain text output. Restore that behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts between
- auto-generated types, such as table rowtypes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed quoting of foreign server names in <application>pg_dump</application>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Assorted fixes for <application>pg_upgrade</application> (Bruce Momjian)
- </para>
-
- <para>
- Handle exclusion constraints correctly, avoid failures on Windows,
- don't complain about mismatched toast table names in 8.4 databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/pgSQL, allow foreign tables to define row types
- (Alexander Soudakov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix up conversions of PL/Perl functions' results
- (Alex Hunsaker and Tom Lane)
- </para>
-
- <para>
- Restore the pre-9.1 behavior that PL/Perl functions returning
- <type>void</type> ignore the result value of their last Perl statement;
- 9.1.0 would throw an error if that statement returned a reference.
- Also, make sure it works to return a string value for a composite type,
- so long as the string meets the type's input format.
- In addition, throw errors for attempts to return Perl arrays or hashes
- when the function's declared result type is not an array or composite
- type, respectively. (Pre-9.1 versions rather uselessly returned
- strings like <literal>ARRAY(0x221a9a0)</literal> or
- <literal>HASH(0x221aa90)</literal> in such cases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure PL/Perl strings are always correctly UTF8-encoded
- (Amit Khandekar and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the preferred version of <application>xsubpp</application> to build PL/Perl,
- not necessarily the operating system's main copy
- (David Wheeler and Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly propagate SQLSTATE in PL/Python exceptions
- (Mika Eloranta and Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not install PL/Python extension files for Python major versions
- other than the one built against (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change all the <filename>contrib</filename> extension script files to report
- a useful error message if they are fed to <application>psql</application>
- (Andrew Dunstan and Tom Lane)
- </para>
-
- <para>
- This should help teach people about the new method of using
- <command>CREATE EXTENSION</command> to load these files. In most cases,
- sourcing the scripts directly would fail anyway, but with
- harder-to-interpret messages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect coding in <filename>contrib/dict_int</filename> and
- <filename>contrib/dict_xsyn</filename> (Tom Lane)
- </para>
-
- <para>
- Some functions incorrectly assumed that memory returned by
- <function>palloc()</function> is guaranteed zeroed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <filename>contrib/sepgsql</filename> tests from the regular regression
- test mechanism (Tom Lane)
- </para>
-
- <para>
- Since these tests require root privileges for setup, they're impractical
- to run automatically. Switch over to a manual approach instead, and
- provide a testing script to help with that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted errors in <filename>contrib/unaccent</filename>'s configuration
- file parsing (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor query cancel interrupts promptly in <function>pgstatindex()</function>
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect quoting of log file name in macOS start script
- (Sidar Lopez)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Revert unintentional enabling of <literal>WAL_DEBUG</literal> (Robert Haas)
- </para>
-
- <para>
- Fortunately, as debugging tools go, this one is pretty cheap;
- but it's not intended to be enabled by default, so revert.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure VPATH builds properly install all server header files
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Shorten file names reported in verbose error messages (Peter Eisentraut)
- </para>
-
- <para>
- Regular builds have always reported just the name of the C file
- containing the error message call, but VPATH builds formerly
- reported an absolute path name.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix interpretation of Windows timezone names for Central America
- (Tom Lane)
- </para>
-
- <para>
- Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not
- <literal>CST6CDT</literal>, because DST is generally not observed anywhere in
- Central America.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2011n
- for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
- also historical corrections for Alaska and British East Africa.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1-1">
- <title>Release 9.1.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-26</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.1.0.
- For information about new features in the 9.1 major release, see
- <xref linkend="release-9-1"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.1.1</title>
-
- <para>
- A dump/restore is not required for those running 9.1.X.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <function>pg_options_to_table</function> return NULL for an option with no
- value (Tom Lane)
- </para>
-
- <para>
- Previously such cases would result in a server crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak at end of a GiST index scan (Tom Lane)
- </para>
-
- <para>
- Commands that perform many separate GiST index scans, such as
- verification of a new GiST-based exclusion constraint on a table
- already containing many rows, could transiently require large amounts of
- memory due to this leak.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix explicit reference to <literal>pg_temp</literal> schema in <command>CREATE
- TEMPORARY TABLE</command> (Robert Haas)
- </para>
-
- <para>
- This used to be allowed, but failed in 9.1.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-1">
- <title>Release 9.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2011-09-12</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- This release shows <productname>PostgreSQL</productname> moving beyond the
- traditional relational-database feature set with new, ground-breaking
- functionality that is unique to <productname>PostgreSQL</productname>.
- The streaming replication feature introduced in release 9.0 is
- significantly enhanced by adding a synchronous-replication option,
- streaming backups, and monitoring improvements.
- Major enhancements include:
- </para>
-
- <itemizedlist>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <listitem>
- <para>
- Allow <link linkend="synchronous-replication">synchronous
- replication</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="sql-createforeigntable">foreign
- tables</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add per-column <link
- linkend="collation">collation</link> support
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="extend-extensions">extensions</link> which
- simplify packaging of additions to <productname>PostgreSQL</productname>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a true <link
- linkend="xact-serializable">serializable isolation level</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support unlogged tables using the <literal>UNLOGGED</literal>
- option in <link linkend="sql-createtable"><command>CREATE
- TABLE</command></link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow data-modification commands
- (<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>) in
- <link linkend="queries-with"><literal>WITH</literal></link> clauses
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add nearest-neighbor (order-by-operator) searching to <link
- linkend="gist"><acronym>GiST</acronym> indexes</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="sql-security-label"><command>SECURITY
- LABEL</command></link> command and support for
- <link linkend="sepgsql"><acronym>SELinux</acronym> permissions control</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the <link linkend="plpython">PL/Python</link> server-side
- language
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.1</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>,
- or use of <application>pg_upgrade</application>, is required
- for those wishing to migrate data from any previous
- release.
- </para>
-
- <para>
- Version 9.1 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>Strings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change the default value of <link
- linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</varname></link>
- to on (Robert Haas)
- </para>
-
- <para>
- By default, backslashes are now ordinary characters in string literals,
- not escape characters. This change removes a long-standing
- incompatibility with the SQL standard. <link
- linkend="guc-escape-string-warning"><varname>escape_string_warning</varname></link>
- has produced warnings about this usage for years. <literal>E''</literal>
- strings are the proper way to embed backslash escapes in strings and are
- unaffected by this change.
- </para>
-
- <warning>
- <para>
- This change can break applications that are not expecting it and
- do their own string escaping according to the old rules. The
- consequences could be as severe as introducing SQL-injection security
- holes. Be sure to test applications that are exposed to untrusted
- input, to ensure that they correctly handle single quotes and
- backslashes in text strings.
- </para>
- </warning>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Casting</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Disallow function-style and attribute-style data type casts for
- composite types (Tom Lane)
- </para>
-
- <para>
- For example, disallow
- <literal><replaceable>composite_value</replaceable>.text</literal> and
- <literal>text(<replaceable>composite_value</replaceable>)</literal>.
- Unintentional uses of this syntax have frequently resulted in bug
- reports; although it was not a bug, it seems better to go back to
- rejecting such expressions.
- The <literal>CAST</literal> and <literal>::</literal> syntaxes are still available
- for use when a cast of an entire composite value is actually intended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten casting checks for domains based on arrays (Tom Lane)
- </para>
-
- <para>
- When a domain is based on an array type, it is allowed to <quote>look
- through</quote> the domain type to access the array elements, including
- subscripting the domain value to fetch or assign an element.
- Assignment to an element of such a domain value, for instance via
- <literal>UPDATE ... SET domaincol[5] = ...</literal>, will now result in
- rechecking the domain type's constraints, whereas before the checks
- were skipped.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Arrays</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change <link
- linkend="array-functions-table"><function>string_to_array()</function></link>
- to return an empty array for a zero-length string (Pavel
- Stehule)
- </para>
-
- <para>
- Previously this returned a null value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <link
- linkend="array-functions-table"><function>string_to_array()</function></link>
- so a <literal>NULL</literal> separator splits the string into characters
- (Pavel Stehule)
- </para>
-
- <para>
- Previously this returned a null value.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Modification</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix improper checks for before/after triggers (Tom Lane)
- </para>
-
- <para>
- Triggers can now be fired in three cases: <literal>BEFORE</literal>,
- <literal>AFTER</literal>, or <literal>INSTEAD OF</literal> some action.
- Trigger function authors should verify that their logic behaves
- sanely in all three cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require superuser or <literal>CREATEROLE</literal> permissions in order to
- set comments on roles (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change <link
- linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</function></link>
- so it never moves backwards (Fujii Masao)
- </para>
-
- <para>
- Previously, the value of <function>pg_last_xlog_receive_location()</function>
- could move backward when streaming replication is restarted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have logging of replication connections honor <link
- linkend="guc-log-connections"><varname>log_connections</varname></link>
- (Magnus Hagander)
- </para>
-
- <para>
- Previously, replication connections were always logged.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Change PL/pgSQL's <literal>RAISE</literal> command without parameters
- to be catchable by the attached exception block (Piyush Newe)
- </para>
-
- <para>
- Previously <literal>RAISE</literal> in a code block was always scoped to
- an attached exception block, so it was uncatchable at the same
- scope.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust PL/pgSQL's error line numbering code to be consistent
- with other PLs (Pavel Stehule)
- </para>
-
- <para>
- Previously, PL/pgSQL would ignore (not count) an empty line at the
- start of the function body. Since this was inconsistent with all
- other languages, the special case was removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/pgSQL complain about conflicting IN and OUT parameter names
- (Tom Lane)
- </para>
-
- <para>
- Formerly, the collision was not detected, and the name would just
- silently refer to only the OUT parameter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Type modifiers of PL/pgSQL variables are now visible to the SQL parser
- (Tom Lane)
- </para>
-
- <para>
- A type modifier (such as a varchar length limit) attached to a PL/pgSQL
- variable was formerly enforced during assignments, but was ignored for
- all other purposes. Such variables will now behave more like table
- columns declared with the same modifier. This is not expected to make
- any visible difference in most cases, but it could result in subtle
- changes for some SQL commands issued by PL/pgSQL functions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- All contrib modules are now installed with <link
- linkend="sql-createextension"><command>CREATE EXTENSION</command></link>
- rather than by manually invoking their SQL scripts
- (Dimitri Fontaine, Tom Lane)
- </para>
-
- <para>
- To update an existing database containing the 9.0 version of a contrib
- module, use <literal>CREATE EXTENSION ... FROM unpackaged</literal>
- to wrap the existing contrib module's objects into an extension. When
- updating from a pre-9.0 version, drop the contrib module's objects
- using its old uninstall script, then use <literal>CREATE EXTENSION</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other Incompatibilities</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <link
- linkend="monitoring-stats-funcs-table"><function>pg_stat_reset()</function></link>
- reset all database-level statistics (Tomas Vondra)
- </para>
-
- <para>
- Some <structname>pg_stat_database</structname> counters were not being reset.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some <link
- linkend="infoschema-triggers"><structname>information_schema.triggers</structname></link>
- column names to match the new SQL-standard names (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Treat <application>ECPG</application> cursor names as case-insensitive
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.1 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support unlogged tables using the <literal>UNLOGGED</literal>
- option in <link linkend="sql-createtable"><command>CREATE
- TABLE</command></link> (Robert Haas)
- </para>
-
- <para>
- Such tables provide better update performance than regular tables,
- but are not crash-safe: their contents are automatically cleared in
- case of a server crash. Their contents do not propagate to
- replication slaves, either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>FULL OUTER JOIN</literal> to be implemented as a
- hash join, and allow either side of a <literal>LEFT OUTER JOIN</literal>
- or <literal>RIGHT OUTER JOIN</literal> to be hashed (Tom Lane)
- </para>
-
- <para>
- Previously <literal>FULL OUTER JOIN</literal> could only be
- implemented as a merge join, and <literal>LEFT OUTER JOIN</literal>
- and <literal>RIGHT OUTER JOIN</literal> could hash only the nullable
- side of the join. These changes provide additional query optimization
- possibilities.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merge duplicate fsync requests (Robert Haas, Greg Smith)
- </para>
-
- <para>
- This greatly improves performance under heavy write loads.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <link
- linkend="guc-commit-siblings"><varname>commit_siblings</varname></link>
- (Greg Smith)
- </para>
-
- <para>
- This allows the use of <varname>commit_siblings</varname> with
- less overhead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the memory requirement for large ispell dictionaries
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaving data files open after <quote>blind writes</quote>
- (Alvaro Herrera)
- </para>
-
- <para>
- This fixes scenarios in which backends might hold files open long
- after they were deleted, preventing the kernel from reclaiming
- disk space.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow inheritance table scans to return meaningfully-sorted
- results (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom Lane)
- </para>
-
- <para>
- This allows better optimization of queries that use <literal>ORDER
- BY</literal>, <literal>LIMIT</literal>, or <literal>MIN</literal>/<literal>MAX</literal> with
- inherited tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve GIN index scan cost estimation (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve cost estimation for aggregates and window functions (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support host names and host suffixes
- (e.g. <literal>.example.com</literal>) in <link
- linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- Previously only host <acronym>IP</acronym> addresses and <acronym>CIDR</acronym>
- values were supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support the key word <literal>all</literal> in the host column of <link
- linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- Previously people used <literal>0.0.0.0/0</literal> or <literal>::/0</literal>
- for this.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject <literal>local</literal> lines in <link
- linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- on platforms that don't support Unix-socket connections
- (Magnus Hagander)
- </para>
-
- <para>
- Formerly, such lines were silently ignored, which could be surprising.
- This makes the behavior more like other unsupported cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="gssapi-auth"><acronym>GSSAPI</acronym></link>
- to be used to authenticate to servers via <link
- linkend="sspi-auth"><acronym>SSPI</acronym></link> (Christian Ullrich)
- </para>
-
- <para>
- Specifically this allows Unix-based <acronym>GSSAPI</acronym> clients
- to do <acronym>SSPI</acronym> authentication with Windows servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="auth-ident"><literal>ident</literal></link>
- authentication over local sockets is now known as
- <link linkend="auth-peer"><literal>peer</literal></link>
- (Magnus Hagander)
- </para>
-
- <para>
- The old term is still accepted for backward compatibility, but since
- the two methods are fundamentally different, it seemed better to adopt
- different names for them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite <link linkend="auth-peer"><acronym>peer</acronym></link>
- authentication to avoid use of credential control messages (Tom Lane)
- </para>
-
- <para>
- This change makes the peer authentication code simpler and
- better-performing. However, it requires the platform to provide the
- <function>getpeereid</function> function or an equivalent socket operation.
- So far as is known, the only platform for which peer authentication
- worked before and now will not is pre-5.0 NetBSD.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add details to the logging of restartpoints and checkpoints,
- which is controlled by <link
- linkend="guc-log-checkpoints"><varname>log_checkpoints</varname></link>
- (Fujii Masao, Greg Smith)
- </para>
-
- <para>
- New details include <acronym>WAL</acronym> file and sync activity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="guc-log-file-mode"><varname>log_file_mode</varname></link>
- which controls the permissions on log files created by the
- logging collector (Martin Pihlak)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the default maximum line length for <application>syslog</application>
- logging to 900 bytes plus prefixes (Noah Misch)
- </para>
-
- <para>
- This avoids truncation of long log lines on syslog implementations
- that have a 1KB length limit, rather than the more common 2KB.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Statistical Views</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <structfield>client_hostname</structfield> column to <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_activity</structname></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- Previously only the client address was reported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_xact_*</structname></link>
- statistics functions and views (Joel Jacobson)
- </para>
-
- <para>
- These are like the database-wide statistics counter views, but
- reflect counts for only the current transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add time of last reset in database-level and background writer
- statistics views (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add columns showing the number of vacuum and analyze operations
- in <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_*_tables</structname></link>
- views (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <structfield>buffers_backend_fsync</structfield> column to <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_bgwriter</structname></link>
- (Greg Smith)
- </para>
-
- <para>
- This new column counts the number of times a backend fsyncs a
- buffer.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Provide auto-tuning of <link
- linkend="guc-wal-buffers"><varname>wal_buffers</varname></link> (Greg
- Smith)
- </para>
-
- <para>
- By default, the value of <varname>wal_buffers</varname> is now chosen
- automatically based on the value of <varname>shared_buffers</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum values for
- <link linkend="guc-deadlock-timeout"><varname>deadlock_timeout</varname></link>,
- <link linkend="guc-log-min-duration-statement"><varname>log_min_duration_statement</varname></link>, and
- <link linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- The maximum value for each of these parameters was previously
- only about 35 minutes. Much larger values are now allowed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <sect4>
- <title>Streaming Replication and Continuous Archiving</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="synchronous-replication">synchronous
- replication</link> (Simon Riggs, Fujii Masao)
- </para>
-
- <para>
- This allows the primary server to wait for a standby to write a
- transaction's information to disk before acknowledging the commit.
- One standby at a time can take the role of the synchronous standby,
- as controlled by the
- <link linkend="guc-synchronous-standby-names"><varname>synchronous_standby_names</varname></link>
- setting. Synchronous replication can be enabled or disabled on a
- per-transaction basis using the
- <link linkend="guc-synchronous-commit"><varname>synchronous_commit</varname></link>
- setting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add protocol support for sending file system backups to standby servers
- using the streaming replication network connection (Magnus Hagander,
- Heikki Linnakangas)
- </para>
-
- <para>
- This avoids the requirement of manually transferring a file
- system backup when setting up a standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add
- <varname>replication_timeout</varname>
- setting (Fujii Masao, Heikki Linnakangas)
- </para>
-
- <para>
- Replication connections that are idle for more than the
- <varname>replication_timeout</varname> interval will be terminated
- automatically. Formerly, a failed connection was typically not
- detected until the TCP timeout elapsed, which is inconveniently
- long in many situations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add command-line tool <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- for creating a new standby server or database backup (Magnus
- Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="sql-createrole">replication permission</link>
- for roles (Magnus Hagander)
- </para>
-
- <para>
- This is a read-only permission used for streaming replication.
- It allows a non-superuser role to be used for replication connections.
- Previously only superusers could initiate replication
- connections; superusers still have this permission by default.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Replication Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add system view <link
- linkend="pg-stat-replication-view"><structname>pg_stat_replication</structname></link>
- which displays activity of <acronym>WAL</acronym> sender processes (Itagaki
- Takahiro, Simon Riggs)
- </para>
-
- <para>
- This reports the status of all connected standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add monitoring function <link
- linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</function></link>
- (Fujii Masao)
- </para>
-
- <para>
- This returns the time at which the primary generated the most
- recent commit or abort record applied on the standby.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Hot Standby</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add configuration parameter <link
- linkend="guc-hot-standby-feedback"><varname>hot_standby_feedback</varname></link>
- to enable standbys to postpone cleanup of old row versions on the
- primary (Simon Riggs)
- </para>
-
- <para>
- This helps avoid canceling long-running queries on the standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_database_conflicts</structname></link>
- system view to show queries that have been canceled and the
- reason (Magnus Hagander)
- </para>
-
- <para>
- Cancellations can occur because of dropped tablespaces, lock
- timeouts, old snapshots, pinned buffers, and deadlocks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <structfield>conflicts</structfield> count to <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_database</structname></link>
- (Magnus Hagander)
- </para>
-
- <para>
- This is the number of conflicts that occurred in the database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum values for
- <link linkend="guc-max-standby-archive-delay"><varname>max_standby_archive_delay</varname></link> and
- <link linkend="guc-max-standby-streaming-delay"><varname>max_standby_streaming_delay</varname></link>
- </para>
-
- <para>
- The maximum value for each of these parameters was previously
- only about 35 minutes. Much larger values are now allowed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="errcodes-table"><literal>ERRCODE_T_R_DATABASE_DROPPED</literal></link>
- error code to report recovery conflicts due to dropped databases
- (Tatsuo Ishii)
- </para>
-
- <para>
- This is useful for connection pooling software.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Recovery Control</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add functions to control streaming replication replay (Simon Riggs)
- </para>
-
- <para>
- The new functions are <link
- linkend="functions-recovery-control-table"><function>pg_xlog_replay_pause()</function></link>,
- <link
- linkend="functions-recovery-control-table"><function>pg_xlog_replay_resume()</function></link>,
- and the status function <link
- linkend="functions-recovery-control-table"><function>pg_is_xlog_replay_paused()</function></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>recovery.conf</filename> setting
- <varname>pause_at_recovery_target</varname>
- to pause recovery at target (Simon Riggs)
- </para>
-
- <para>
- This allows a recovery server to be queried to check whether
- the recovery point is the one desired.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the ability to create named restore points using <link
- linkend="functions-admin-backup-table"><function>pg_create_restore_point()</function></link>
- (Jaime Casanova)
- </para>
-
- <para>
- These named restore points can be specified as recovery
- targets using the new <filename>recovery.conf</filename> setting
- <varname>recovery_target_name</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow standby recovery to switch to a new timeline automatically
- (Heikki Linnakangas)
- </para>
-
- <para>
- Now standby servers scan the archive directory for new
- timelines periodically.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="guc-restart-after-crash"><varname>restart_after_crash</varname></link>
- setting which disables automatic server restart after a backend
- crash (Robert Haas)
- </para>
-
- <para>
- This allows external cluster management software to control
- whether the database server restarts or not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>recovery.conf</filename>
- to use the same quoting behavior as <filename>postgresql.conf</filename>
- (Dimitri Fontaine)
- </para>
-
- <para>
- Previously all values had to be quoted.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a true <link
- linkend="xact-serializable">serializable isolation level</link>
- (Kevin Grittner, Dan Ports)
- </para>
-
- <para>
- Previously, asking for serializable isolation guaranteed only that a
- single MVCC snapshot would be used for the entire transaction, which
- allowed certain documented anomalies. The old snapshot isolation
- behavior is still available by requesting the <link
- linkend="xact-repeatable-read"><literal>REPEATABLE READ</literal></link>
- isolation level.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow data-modification commands
- (<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>) in
- <link linkend="queries-with"><literal>WITH</literal></link> clauses
- (Marko Tiikkaja, Hitoshi Harada)
- </para>
-
- <para>
- These commands can use <literal>RETURNING</literal> to pass data up to the
- containing query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="queries-with"><literal>WITH</literal></link>
- clauses to be attached to <command>INSERT</command>, <command>UPDATE</command>,
- <command>DELETE</command> statements (Marko Tiikkaja, Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow non-<link linkend="queries-group"><literal>GROUP
- BY</literal></link> columns in the query target list when the primary
- key is specified in the <literal>GROUP BY</literal> clause (Peter
- Eisentraut)
- </para>
-
- <para>
- The SQL standard allows this behavior, and
- because of the primary key, the result is unambiguous.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow use of the key word <literal>DISTINCT</literal> in <link
- linkend="queries-union"><literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal></link>
- clauses (Tom Lane)
- </para>
-
- <para>
- <literal>DISTINCT</literal> is the default behavior so use of this
- key word is redundant, but the SQL standard allows it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix ordinary queries with rules to use the same snapshot behavior
- as <command>EXPLAIN ANALYZE</command> (Marko Tiikkaja)
- </para>
-
- <para>
- Previously <command>EXPLAIN ANALYZE</command> used slightly different
- snapshot timing for queries involving rules. The
- <command>EXPLAIN ANALYZE</command> behavior was judged to be more logical.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Strings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add per-column <link
- linkend="collation">collation</link> support
- (Peter Eisentraut, Tom Lane)
- </para>
-
- <para>
- Previously collation (the sort ordering of text strings) could only be
- chosen at database creation.
- Collation can now be set per column, domain, index, or
- expression, via the SQL-standard <literal>COLLATE</literal> clause.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="extend-extensions">extensions</link> which
- simplify packaging of additions to <productname>PostgreSQL</productname>
- (Dimitri Fontaine, Tom Lane)
- </para>
-
- <para>
- Extensions are controlled by the new <link
- linkend="sql-createextension"><command>CREATE</command></link>/<link
- linkend="sql-alterextension"><command>ALTER</command></link>/<link
- linkend="sql-dropextension"><command>DROP EXTENSION</command></link>
- commands. This replaces ad-hoc methods of grouping objects that
- are added to a <productname>PostgreSQL</productname> installation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="sql-createforeigntable">foreign
- tables</link> (Shigeru Hanada, Robert Haas, Jan Urbanski,
- Heikki Linnakangas)
- </para>
-
- <para>
- This allows data stored outside the database to be used like
- native <productname>PostgreSQL</productname>-stored data. Foreign tables
- are currently read-only, however.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow new values to be added to an existing enum type via
- <link linkend="sql-altertype"><command>ALTER TYPE</command></link> (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-altertype"><command>ALTER TYPE ...
- ADD/DROP/ALTER/RENAME ATTRIBUTE</command></link> (Peter Eisentraut)
- </para>
-
- <para>
- This allows modification of composite types.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER</command> Object</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>RESTRICT</literal>/<literal>CASCADE</literal> to <link
- linkend="sql-altertype"><command>ALTER TYPE</command></link> operations
- on typed tables (Peter Eisentraut)
- </para>
-
- <para>
- This controls
- <literal>ADD</literal>/<literal>DROP</literal>/<literal>ALTER</literal>/<literal>RENAME
- ATTRIBUTE</literal> cascading behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>ALTER TABLE <replaceable>name</replaceable> {OF | NOT OF}
- <replaceable>type</replaceable></literal>
- (Noah Misch)
- </para>
-
- <para>
- This syntax allows a standalone table to be made into a typed table,
- or a typed table to be made standalone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for more object types in <command>ALTER ... SET
- SCHEMA</command> commands (Dimitri Fontaine)
- </para>
-
- <para>
- This command is now supported for conversions, operators, operator
- classes, operator families, text search configurations, text search
- dictionaries, text search parsers, and text search templates.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-createtable"><command>CREATE/ALTER TABLE</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <command>ALTER TABLE ...
- ADD UNIQUE/PRIMARY KEY USING INDEX</command>
- (Gurjeet Singh)
- </para>
-
- <para>
- This allows a primary key or unique constraint to be defined using an
- existing unique index, including a concurrently created unique index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER TABLE</command>
- to add foreign keys without validation (Simon Riggs)
- </para>
-
- <para>
- The new option is called <literal>NOT VALID</literal>. The constraint's
- state can later be modified to <literal>VALIDATED</literal> and validation
- checks performed. Together these allow you to add a foreign key
- with minimal impact on read and write operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-altertable"><command>ALTER TABLE
- ... SET DATA TYPE</command></link> to avoid table rewrites in
- appropriate cases (Noah Misch, Robert Haas)
- </para>
-
- <para>
- For example, converting a <type>varchar</type> column to
- <type>text</type> no longer requires a rewrite of the table.
- However, increasing the length constraint on a
- <type>varchar</type> column still requires a table rewrite.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-createtable"><command>CREATE TABLE IF
- NOT EXISTS</command></link> syntax (Robert Haas)
- </para>
-
- <para>
- This allows table creation without causing an error if the
- table already exists.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <quote>tuple concurrently updated</quote> error
- when two backends attempt to add an inheritance
- child to the same table at the same time (Robert Haas)
- </para>
-
- <para>
- <link linkend="sql-altertable"><command>ALTER TABLE</command></link>
- now takes a stronger lock on the parent table, so that the sessions
- cannot try to update it simultaneously.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Object Permissions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <link linkend="sql-security-label"><command>SECURITY
- LABEL</command></link> command (KaiGai Kohei)
- </para>
-
- <para>
- This allows security labels to be assigned to objects.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Utility Operations</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add transaction-level <link linkend="advisory-locks">advisory
- locks</link> (Marko Tiikkaja)
- </para>
-
- <para>
- These are similar to the existing session-level advisory locks,
- but such locks are automatically released at transaction end.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-truncate"><command>TRUNCATE ... RESTART
- IDENTITY</command></link> restart sequences transactionally (Steve
- Singer)
- </para>
-
- <para>
- Previously the counter could have been left out of sync if a
- backend crashed between the on-commit truncation activity and
- commit completion.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="sql-copy"><command>COPY</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <literal>ENCODING</literal> option to <link
- linkend="sql-copy"><command>COPY TO/FROM</command></link> (Hitoshi
- Harada, Itagaki Takahiro)
- </para>
-
- <para>
- This allows the encoding of the <command>COPY</command> file to be
- specified separately from client encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add bidirectional <link linkend="sql-copy"><command>COPY</command></link>
- protocol support (Fujii Masao)
- </para>
-
- <para>
- This is currently only used by streaming replication.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-explain"><command>EXPLAIN</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>EXPLAIN VERBOSE</command> show the function call expression
- in a <literal>FunctionScan</literal> node (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-vacuum"><command>VACUUM</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add additional details to the output of <link
- linkend="sql-vacuum"><command>VACUUM FULL VERBOSE</command></link>
- and <link linkend="sql-cluster"><command>CLUSTER VERBOSE</command></link>
- (Itagaki Takahiro)
- </para>
-
- <para>
- New information includes the live and dead tuple count and
- whether <command>CLUSTER</command> is using an index to rebuild.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <link linkend="autovacuum">autovacuum</link> from
- waiting if it cannot acquire a table lock (Robert Haas)
- </para>
-
- <para>
- It will try to vacuum that table later.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-cluster"><command>CLUSTER</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <command>CLUSTER</command> to sort the table rather than scanning
- the index when it seems likely to be cheaper (Leonardo Francalanci)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add nearest-neighbor (order-by-operator) searching to <link
- linkend="gist"><acronym>GiST</acronym> indexes</link> (Teodor Sigaev, Tom Lane)
- </para>
-
- <para>
- This allows <acronym>GiST</acronym> indexes to quickly return the
- <replaceable>N</replaceable> closest values in a query with <literal>LIMIT</literal>.
- For example
-<programlisting><![CDATA[
-SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
-]]>
-</programlisting>
- finds the ten places closest to a given target point.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="gin"><acronym>GIN</acronym> indexes</link> to index null
- and empty values (Tom Lane)
- </para>
-
- <para>
- This allows full <acronym>GIN</acronym> index scans, and fixes various
- corner cases in which GIN scans would fail.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="gin"><acronym>GIN</acronym> indexes</link> to
- better recognize duplicate search entries (Tom Lane)
- </para>
-
- <para>
- This reduces the cost of index scans, especially in cases where
- it avoids unnecessary full index scans.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link linkend="gist"><acronym>GiST</acronym> indexes</link> to be fully
- crash-safe (Heikki Linnakangas)
- </para>
-
- <para>
- Previously there were rare cases where a <command>REINDEX</command>
- would be required (you would be informed).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <type>numeric</type> to use a more compact, two-byte header
- in common cases (Robert Haas)
- </para>
-
- <para>
- Previously all <type>numeric</type> values had four-byte headers;
- this change saves on disk storage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for dividing <type>money</type> by <type>money</type>
- (Andy Balholm)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow binary I/O on type <type>void</type> (Radoslaw Smogura)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve hypotenuse calculations for geometric operators (Paul Matthews)
- </para>
-
- <para>
- This avoids unnecessary overflows, and may also be more accurate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support hashing array values (Tom Lane)
- </para>
-
- <para>
- This provides additional query optimization possibilities.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't treat a composite type as sortable unless all its column types
- are sortable (Tom Lane)
- </para>
-
- <para>
- This avoids possible <quote>could not identify a comparison function</quote>
- failures at runtime, if it is possible to implement the query without
- sorting. Also, <command>ANALYZE</command> won't try to use inappropriate
- statistics-gathering methods for columns of such composite types.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Casting</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for casting between <type>money</type> and <type>numeric</type>
- (Andy Balholm)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for casting from <type>int4</type> and <type>int8</type>
- to <type>money</type> (Joey Adams)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow casting a table's row type to the table's supertype if
- it's a typed table (Peter Eisentraut)
- </para>
-
- <para>
- This is analogous to the existing facility that allows casting a row
- type to a supertable's row type.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="functions-xml"><acronym>XML</acronym></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <acronym>XML</acronym> function <link
- linkend="xml-exists"><literal>XMLEXISTS</literal></link> and <link
- linkend="xml-exists"><function>xpath_exists()</function></link>
- functions (Mike Fowler)
- </para>
-
- <para>
- These are used for XPath matching.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>XML</acronym> functions <link
- linkend="xml-is-well-formed"><function>xml_is_well_formed()</function></link>,
- <link
- linkend="xml-is-well-formed"><function>xml_is_well_formed_document()</function></link>,
- <link
- linkend="xml-is-well-formed"><function>xml_is_well_formed_content()</function></link>
- (Mike Fowler)
- </para>
-
- <para>
- These check whether the input is properly-formed <acronym>XML</acronym>.
- They provide functionality that was previously available only in
- the deprecated <filename>contrib/xml2</filename> module.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add SQL function <link
- linkend="format"><function>format(text, ...)</function></link>, which
- behaves analogously to C's <function>printf()</function> (Pavel Stehule,
- Robert Haas)
- </para>
-
- <para>
- It currently supports formats for strings, SQL literals, and
- SQL identifiers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add string functions <link
- linkend="functions-string-other"><function>concat()</function></link>,
- <link
- linkend="functions-string-other"><function>concat_ws()</function></link>,
- <link linkend="functions-string-other"><function>left()</function></link>,
- <link linkend="functions-string-other"><function>right()</function></link>,
- and <link
- linkend="functions-string-other"><function>reverse()</function></link>
- (Pavel Stehule)
- </para>
-
- <para>
- These improve compatibility with other database products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function <link
- linkend="functions-admin-genfile"><function>pg_read_binary_file()</function></link>
- to read binary files (Dimitri Fontaine, Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a single-parameter version of function <link
- linkend="functions-admin-genfile"><function>pg_read_file()</function></link>
- to read an entire file (Dimitri Fontaine, Itagaki Takahiro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add three-parameter forms of <link
- linkend="array-functions-table"><function>array_to_string()</function></link>
- and <link
- linkend="array-functions-table"><function>string_to_array()</function></link>
- for null value processing control (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Object Information Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add the <link
- linkend="functions-info-catalog-table"><function>pg_describe_object()</function></link>
- function (Alvaro Herrera)
- </para>
-
- <para>
- This function is used to obtain a human-readable string describing
- an object, based on the <link
- linkend="catalog-pg-class"><structname>pg_class</structname></link>
- OID, object OID, and sub-object ID. It can be used to help
- interpret the contents of <link
- linkend="catalog-pg-depend"><structname>pg_depend</structname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update comments for built-in operators and their underlying
- functions (Tom Lane)
- </para>
-
- <para>
- Functions that are meant to be used via an associated operator
- are now commented as such.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variable <link
- linkend="guc-quote-all-identifiers"><varname>quote_all_identifiers</varname></link>
- to force the quoting of all identifiers in <command>EXPLAIN</command>
- and in system catalog functions like <link
- linkend="functions-info-catalog-table"><function>pg_get_viewdef()</function></link>
- (Robert Haas)
- </para>
-
- <para>
- This makes exporting schemas to tools and other databases with
- different quoting rules easier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add columns to the <link
- linkend="infoschema-sequences"><structname>information_schema.sequences</structname></link>
- system view (Peter Eisentraut)
- </para>
-
- <para>
- Previously, though the view existed, the columns about the
- sequence parameters were unimplemented.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>public</literal> as a pseudo-role name in <link
- linkend="functions-info-access-table"><function>has_table_privilege()</function></link>
- and related functions (Alvaro Herrera)
- </para>
-
- <para>
- This allows checking for public permissions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Function and Trigger Creation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support <link linkend="sql-createtrigger"><literal>INSTEAD
- OF</literal></link> triggers on views (Dean Rasheed)
- </para>
-
- <para>
- This feature can be used to implement fully updatable views.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="plpgsql-foreach-array"><command>FOREACH IN
- ARRAY</command></link> to PL/pgSQL
- (Pavel Stehule)
- </para>
-
- <para>
- This is more efficient and readable than previous methods of
- iterating through the elements of an array value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>RAISE</command> without parameters to be caught in
- the same places that could catch a <command>RAISE ERROR</command>
- from the same location (Piyush Newe)
- </para>
-
- <para>
- The previous coding threw the error
- from the block containing the active exception handler.
- The new behavior is more consistent with other DBMS products.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow generic record arguments to PL/Perl functions (Andrew
- Dunstan)
- </para>
-
- <para>
- PL/Perl functions can now be declared to accept type <type>record</type>.
- The behavior is the same as for any named composite type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert PL/Perl array arguments to Perl arrays (Alexey Klyukin,
- Alex Hunsaker)
- </para>
-
- <para>
- String representations are still available.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert PL/Perl composite-type arguments to Perl hashes
- (Alexey Klyukin, Alex Hunsaker)
- </para>
-
- <para>
- String representations are still available.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add table function support for PL/Python (Jan Urbanski)
- </para>
-
- <para>
- PL/Python can now return multiple <literal>OUT</literal> parameters
- and record sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a validator to PL/Python (Jan Urbanski)
- </para>
-
- <para>
- This allows PL/Python functions to be syntax-checked at function
- creation time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow exceptions for SQL queries in PL/Python (Jan Urbanski)
- </para>
-
- <para>
- This allows access to SQL-generated exception error codes from
- PL/Python exception blocks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add explicit subtransactions to PL/Python (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add PL/Python functions for quoting strings (Jan Urbanski)
- </para>
-
- <para>
- These functions are <link
- linkend="plpython-util"><literal>plpy.quote_ident</literal></link>,
- <link linkend="plpython-util"><literal>plpy.quote_literal</literal></link>,
- and <link
- linkend="plpython-util"><literal>plpy.quote_nullable</literal></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add traceback information to PL/Python errors (Jan Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report PL/Python errors from iterators with <literal>PLy_elog</literal> (Jan
- Urbanski)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix exception handling with Python 3 (Jan Urbanski)
- </para>
-
- <para>
- Exception classes were previously not available in
- <literal>plpy</literal> under Python 3.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Mark <application>createlang</application> and <application>droplang</application>
- as deprecated now that they just invoke extension commands (Tom
- Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-psql"><application>psql</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>psql</application> command <literal>\conninfo</literal>
- to show current connection information (David Christensen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>psql</application> command <literal>\sf</literal> to
- show a function's definition (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>psql</application> command <literal>\dL</literal> to list
- languages (Fernando Ike)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <option>S</option> (<quote>system</quote>) option to <application>psql</application>'s
- <literal>\dn</literal> (list schemas) command (Tom Lane)
- </para>
-
- <para>
- <literal>\dn</literal> without <literal>S</literal> now suppresses system
- schemas.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application>'s <literal>\e</literal> and <literal>\ef</literal>
- commands to accept a line number to be used to position the
- cursor in the editor (Pavel Stehule)
- </para>
-
- <para>
- This is passed to the editor according to the
- <envar>PSQL_EDITOR_LINENUMBER_ARG</envar> environment variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Have <application>psql</application> set the client encoding from the
- operating system locale by default (Heikki Linnakangas)
- </para>
-
- <para>
- This only happens if the <envar>PGCLIENTENCODING</envar> environment
- variable is not set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>\d</literal> distinguish between unique
- indexes and unique constraints (Josh Kupershmidt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>\dt+</literal> report <function>pg_table_size</function>
- instead of <function>pg_relation_size</function> when talking to 9.0 or
- later servers (Bernd Helmle)
- </para>
-
- <para>
- This is a more useful measure of table size, but note that it is
- not identical to what was previously reported in the same display.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Additional tab completion support (Itagaki Takahiro, Pavel Stehule,
- Andrey Popp, Christoph Berg, David Fetter, Josh Kupershmidt)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="app-pgdump"><application>pg_dump</application></link>
- and <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link>
- option <option>--quote-all-identifiers</option> to force quoting
- of all identifiers (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>directory</literal> format to <application>pg_dump</application>
- (Joachim Wieland, Heikki Linnakangas)
- </para>
-
- <para>
- This is internally similar to the <literal>tar</literal>
- <application>pg_dump</application> format.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-pg-ctl"><application>pg_ctl</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <application>pg_ctl</application>
- so it no longer incorrectly reports that the server is not
- running (Bruce Momjian)
- </para>
-
- <para>
- Previously this could happen if the server was running but
- <application>pg_ctl</application> could not authenticate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_ctl</application> start's <quote>wait</quote>
- (<option>-w</option>) option (Bruce Momjian, Tom Lane)
- </para>
-
- <para>
- The wait mode is now significantly more robust. It will not get
- confused by non-default postmaster port numbers, non-default
- Unix-domain socket locations, permission problems, or stale
- postmaster lock files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>promote</literal> option to <application>pg_ctl</application> to
- switch a standby server to primary (Fujii Masao)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title><application>Development Tools</application></title>
-
- <sect4>
- <title><link linkend="libpq"><application>libpq</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a libpq connection option <link
- linkend="libpq-connect-client-encoding"><literal>client_encoding</literal></link>
- which behaves like the <envar>PGCLIENTENCODING</envar> environment
- variable (Heikki Linnakangas)
- </para>
-
- <para>
- The value <literal>auto</literal> sets the client encoding based on
- the operating system locale.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="libpq-pqlibversion"><function>PQlibVersion()</function></link>
- function which returns the libpq library version (Magnus
- Hagander)
- </para>
-
- <para>
- libpq already had <function>PQserverVersion()</function> which returns
- the server version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow libpq-using clients to
- check the user name of the server process
- when connecting via Unix-domain sockets, with the new <link
- linkend="libpq-connect-requirepeer"><literal>requirepeer</literal></link>
- connection option
- (Peter Eisentraut)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> already allowed servers to check
- the client user name when connecting via Unix-domain sockets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="libpq-pqping"><function>PQping()</function></link>
- and <link
- linkend="libpq-pqpingparams"><function>PQpingParams()</function></link>
- to libpq (Bruce Momjian, Tom Lane)
- </para>
-
- <para>
- These functions allow detection of the server's status without
- trying to open a new session.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="ecpg"><application>ECPG</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow ECPG to accept dynamic cursor names even in
- <literal>WHERE CURRENT OF</literal> clauses
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> write <type>double</type> values with a
- precision of 15 digits, not 14 as formerly (Akira Kurosawa)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Build Options</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Use <literal>+Olibmerrno</literal> compile flag with HP-UX C compilers
- that accept it (Ibrar Ahmed)
- </para>
-
- <para>
- This avoids possible misbehavior of math library calls on recent
- HP platforms.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Makefiles</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improved parallel make support (Peter Eisentraut)
- </para>
-
- <para>
- This allows for faster compiles. Also, <literal>make -k</literal>
- now works more consistently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require <acronym>GNU</acronym> <link
- linkend="install-requirements"><application>make</application></link>
- 3.80 or newer (Peter Eisentraut)
- </para>
-
- <para>
- This is necessary because of the parallel-make improvements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>make maintainer-check</literal> target
- (Peter Eisentraut)
- </para>
-
- <para>
- This target performs various source code checks that are not
- appropriate for either the build or the regression tests. Currently:
- duplicate_oids, SGML syntax and tabs check, NLS syntax check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>make check</literal> in <filename>contrib</filename>
- (Peter Eisentraut)
- </para>
-
- <para>
- Formerly only <literal>make installcheck</literal> worked, but now
- there is support for testing in a temporary installation.
- The top-level <literal>make check-world</literal> target now includes
- testing <filename>contrib</filename> this way.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Windows</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- On Windows, allow <link
- linkend="app-pg-ctl"><application>pg_ctl</application></link> to register
- the service as auto-start or start-on-demand (Quan Zongliang)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for collecting <link linkend="windows-crash-dumps">crash
- dumps</link> on Windows (Craig Ringer, Magnus Hagander)
- </para>
-
- <para>
- <productname>minidumps</productname> can now be generated by non-debug
- Windows binaries and analyzed by standard debugging tools.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable building with the MinGW64 compiler (Andrew Dunstan)
- </para>
-
- <para>
- This allows building 64-bit Windows binaries even on non-Windows
- platforms via cross-compiling.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Revise the API for GUC variable assign hooks (Tom Lane)
- </para>
-
- <para>
- The previous functions of assign hooks are now split between check
- hooks and assign hooks, where the former can fail but the latter
- shouldn't. This change will impact add-on modules that define custom
- GUC parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add latches to the source code to support waiting for events (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralize data modification permissions-checking logic
- (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add missing <function>get_<replaceable>object</replaceable>_oid()</function> functions, for consistency
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve ability to use C++ compilers for <link
- linkend="xfunc-c">compiling add-on modules</link> by removing
- conflicting key words (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for DragonFly <acronym>BSD</acronym> (Rumko)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Expose <function>quote_literal_cstr()</function> for backend use
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <link linkend="build">regression tests</link> in the
- default encoding (Peter Eisentraut)
- </para>
-
- <para>
- Regression tests were previously always run with
- <literal>SQL_ASCII</literal> encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>src/tools/git_changelog</application> to replace
- <application>cvs2cl</application> and <application>pgcvslog</application> (Robert
- Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>git-external-diff</application> script to
- <filename>src/tools</filename> (Bruce Momjian)
- </para>
-
- <para>
- This is used to generate context diffs from git.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve support for building with
- <application>Clang</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Server Hooks</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add source code hooks to check permissions (Robert Haas,
- Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add post-object-creation function hooks for use by security
- frameworks (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a client authentication hook (KaiGai Kohei)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Modify <filename>contrib</filename> modules and procedural
- languages to install via the new <link
- linkend="extend-extensions">extension</link> mechanism (Tom Lane,
- Dimitri Fontaine)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="file-fdw"><filename>contrib/file_fdw</filename></link>
- foreign-data wrapper (Shigeru Hanada)
- </para>
-
- <para>
- Foreign tables using this foreign data wrapper can read flat files
- in a manner very similar to <command>COPY</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add nearest-neighbor search support to <link
- linkend="pgtrgm"><filename>contrib/pg_trgm</filename></link> and <link
- linkend="btree-gist"><filename>contrib/btree_gist</filename></link>
- (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="btree-gist"><filename>contrib/btree_gist</filename></link>
- support for searching on not-equals (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="fuzzystrmatch"><filename>contrib/fuzzystrmatch</filename></link>'s
- <function>levenshtein()</function> function to handle multibyte characters
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>ssl_cipher()</function> and <function>ssl_version()</function>
- functions to <link
- linkend="sslinfo"><filename>contrib/sslinfo</filename></link> (Robert
- Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link linkend="intarray"><filename>contrib/intarray</filename></link>
- and <link linkend="hstore"><filename>contrib/hstore</filename></link>
- to give consistent results with indexed empty arrays (Tom Lane)
- </para>
-
- <para>
- Previously an empty-array query that used an index might return
- different results from one that used a sequential scan.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="intarray"><filename>contrib/intarray</filename></link>
- to work properly on multidimensional arrays (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In
- <link linkend="intarray"><filename>contrib/intarray</filename></link>,
- avoid errors complaining about the presence of nulls in cases where no
- nulls are actually present (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In
- <link linkend="intarray"><filename>contrib/intarray</filename></link>,
- fix behavior of containment operators with respect to empty arrays
- (Tom Lane)
- </para>
-
- <para>
- Empty arrays are now correctly considered to be contained in any other
- array.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <link linkend="xml2"><filename>contrib/xml2</filename></link>'s
- arbitrary limit on the number of
- <replaceable>parameter</replaceable>=<replaceable>value</replaceable> pairs that can be
- handled by <function>xslt_process()</function> (Pavel Stehule)
- </para>
-
- <para>
- The previous limit was 10.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <link linkend="pageinspect"><filename>contrib/pageinspect</filename></link>,
- fix heap_page_item to return infomasks as 32-bit values (Alvaro Herrera)
- </para>
-
- <para>
- This avoids returning negative values, which was confusing. The
- underlying value is a 16-bit unsigned integer.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Security</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sepgsql"><filename>contrib/sepgsql</filename></link>
- to interface permission checks with <acronym>SELinux</acronym> (KaiGai Kohei)
- </para>
-
- <para>
- This uses the new <link
- linkend="sql-security-label"><command>SECURITY LABEL</command></link>
- facility.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add contrib module <link
- linkend="auth-delay"><filename>auth_delay</filename></link> (KaiGai
- Kohei)
- </para>
-
- <para>
- This causes the server to pause before returning authentication
- failure; it is designed to make brute force password attacks
- more difficult.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <filename>dummy_seclabel</filename>
- contrib module (KaiGai Kohei)
- </para>
-
- <para>
- This is used for permission regression testing.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <literal>LIKE</literal> and <literal>ILIKE</literal> index
- searches to <link
- linkend="pgtrgm"><filename>contrib/pg_trgm</filename></link> (Alexander
- Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>levenshtein_less_equal()</function> function to <link
- linkend="fuzzystrmatch"><filename>contrib/fuzzystrmatch</filename></link>,
- which is optimized for small distances (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of index lookups on <link
- linkend="seg"><filename>contrib/seg</filename></link> columns (Alexander
- Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <link
- linkend="pgupgrade"><application>pg_upgrade</application></link> for
- databases with many relations (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add flag to <link
- linkend="pgbench"><filename>contrib/pgbench</filename></link> to
- report per-statement latencies (Florian Pflug)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Fsync Testing</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Move <filename>src/tools/test_fsync</filename> to <link
- linkend="pgtestfsync"><filename>contrib/pg_test_fsync</filename></link>
- (Bruce Momjian, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>O_DIRECT</literal> support to <link
- linkend="pgtestfsync"><filename>contrib/pg_test_fsync</filename></link>
- (Bruce Momjian)
- </para>
-
- <para>
- This matches the use of <literal>O_DIRECT</literal> by <link
- linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new tests to <link
- linkend="pgtestfsync"><filename>contrib/pg_test_fsync</filename></link>
- (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Documentation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Extensive <link linkend="ecpg"><application>ECPG</application></link>
- documentation improvements (Satoshi Nagayasu)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Extensive proofreading and documentation improvements
- (Thom Brown, Josh Kupershmidt, Susanne Ebrecht)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add documentation for <link
- linkend="guc-exit-on-error"><varname>exit_on_error</varname></link>
- (Robert Haas)
- </para>
-
- <para>
- This parameter causes sessions to exit on any error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add documentation for <link
- linkend="functions-info-catalog-table"><function>pg_options_to_table()</function></link>
- (Josh Berkus)
- </para>
-
- <para>
- This function shows table storage options in a readable form.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document that it is possible to access all composite type
- fields using <link
- linkend="field-selection"><literal>(compositeval).*</literal></link>
- syntax (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document that <link
- linkend="functions-string-other"><function>translate()</function></link>
- removes characters in <literal>from</literal> that don't have a
- corresponding <literal>to</literal> character (Josh Kupershmidt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merge documentation for <command>CREATE CONSTRAINT TRIGGER</command> and <link
- linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link>
- (Alvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralize <link linkend="ddl-priv">permission</link> and <link
- linkend="upgrading">upgrade</link> documentation (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sysvipc-parameters">kernel tuning
- documentation</link> for Solaris 10 (Josh Berkus)
- </para>
-
- <para>
- Previously only Solaris 9 kernel tuning was documented.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle non-ASCII characters consistently in <filename>HISTORY</filename> file
- (Peter Eisentraut)
- </para>
-
- <para>
- While the <filename>HISTORY</filename> file is in English, we do have to deal
- with non-ASCII letters in contributor names. These are now
- transliterated so that they are reasonably legible without assumptions
- about character set.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-9.2.sgml b/doc/src/sgml/release-9.2.sgml
deleted file mode 100644
index e012f7fb6ca..00000000000
--- a/doc/src/sgml/release-9.2.sgml
+++ /dev/null
@@ -1,12201 +0,0 @@
-<!-- doc/src/sgml/release-9.2.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-2-24">
- <title>Release 9.2.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.23.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname>
- release in the 9.2.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.24</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.22,
- see <xref linkend="release-9-2-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-23">
- <title>Release 9.2.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.2.22.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.2.X release series in September 2017.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.23</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.22,
- see <xref linkend="release-9-2-22"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-22">
- <title>Release 9.2.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.21.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.2.X release series in September 2017.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.22</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.20,
- see <xref linkend="release-9-2-20"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unescaped-braces issue in our build scripts for Microsoft MSVC,
- to avoid a warning or error from recent Perl versions (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-21">
- <title>Release 9.2.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.20.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing updates
- for the 9.2.X release series in September 2017.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.21</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.20,
- see <xref linkend="release-9-2-20"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-2-22"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane)
- </para>
-
- <para>
- This is a back-patch of work previously done in newer branches;
- it's needed since many platforms are adopting newer OpenSSL versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-20">
- <title>Release 9.2.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.19.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.20</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_2_STABLE [38bec1805] 2017-01-25 07:02:25 +0900
--->
- <para>
- Fix WAL page header validation when re-reading segments (Takayuki
- Tsunakawa, Amit Kapila)
- </para>
-
- <para>
- In corner cases, a spurious <quote>out-of-sequence TLI</quote> error
- could be reported during recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-19">
- <title>Release 9.2.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.18.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.19</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress printing of zeroes for unmeasured times
- in <command>EXPLAIN</command> (Maksim Milyutin)
- </para>
-
- <para>
- Certain option combinations resulted in printing zero values for times
- that actually aren't ever measured in that combination. Our general
- policy in <command>EXPLAIN</command> is not to print such fields at all, so
- do that consistently in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, never dump range constructor functions
- (Tom Lane)
- </para>
-
- <para>
- This oversight led to <application>pg_upgrade</application> failures with
- extensions containing range types, due to duplicate creation of the
- constructor functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update Windows time zone mapping to recognize some time zone names
- added in recent Windows versions (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-18">
- <title>Release 9.2.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.17.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.18</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <literal>postgres -C</literal> when the specified variable
- has a null string value (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid canceling hot-standby queries during <command>VACUUM FREEZE</command>
- (Simon Riggs, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- <command>VACUUM FREEZE</command> on an otherwise-idle master server could
- result in unnecessary cancellations of queries on its standby
- servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop in GiST index build for geometric columns
- containing NaN component values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> with both <option>-c</option> and <option>-C</option>
- options, avoid emitting an unwanted <literal>CREATE SCHEMA public</literal>
- command (David Johnston, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-17">
- <title>Release 9.2.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.16.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.17</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of equivalence-class tests in multilevel
- nestloop plans (Tom Lane)
- </para>
-
- <para>
- Given a three-or-more-way equivalence class of variables, such
- as <literal>X.X = Y.Y = Z.Z</literal>, it was possible for the planner to omit
- some of the tests needed to enforce that all the variables are actually
- equal, leading to join rows being output that didn't satisfy
- the <literal>WHERE</literal> clauses. For various reasons, erroneous plans
- were seldom selected in practice, so that this bug has gone undetected
- for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Back-port 9.4-era memory-barrier code changes into 9.2 and 9.3 (Tom Lane)
- </para>
-
- <para>
- These changes were not originally needed in pre-9.4 branches, but we
- recently back-patched a fix that expected the barrier code to work
- properly. Only IA64 (when using icc), HPPA, and Alpha platforms are
- affected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the number of SysV semaphores used by a build configured with
- <option>--disable-spinlocks</option> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-16">
- <title>Release 9.2.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.15.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.16</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-15">
- <title>Release 9.2.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.14.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.15</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform an immediate shutdown if the <filename>postmaster.pid</filename> file
- is removed (Tom Lane)
- </para>
-
- <para>
- The postmaster now checks every minute or so
- that <filename>postmaster.pid</filename> is still there and still contains its
- own PID. If not, it performs an immediate shutdown, as though it had
- received <systemitem>SIGQUIT</systemitem>. The main motivation for this change
- is to ensure that failed buildfarm runs will get cleaned up without
- manual intervention; but it also serves to limit the bad effects if a
- DBA forcibly removes <filename>postmaster.pid</filename> and then starts a new
- postmaster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>SERIALIZABLE</literal> transaction isolation mode, serialization
- anomalies could be missed due to race conditions during insertions
- (Kevin Grittner, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to emit appropriate WAL records when doing <literal>ALTER
- TABLE ... SET TABLESPACE</literal> for unlogged relations (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- Even though the relation's data is unlogged, the move must be logged or
- the relation will be inaccessible after a standby is promoted to master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misinitialization of unlogged relations at the end of
- crash recovery (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to reconstruct inherited check
- constraints properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to change ownership of composite types
- properly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> and <command>ALTER OWNER</command> to correctly
- update granted-permissions lists when changing owners of data types,
- foreign data wrappers, or foreign servers (Bruce Momjian,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to ignore foreign user mappings,
- rather than fail (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more defenses against bad planner cost estimates for GIN index
- scans when the index's internal statistics are very out-of-date
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make planner cope with hypothetical GIN indexes suggested by an index
- advisor plug-in (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of whole-row Vars in <literal>ROW()</literal>
- and <literal>VALUES()</literal> lists (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible internal overflow in <type>numeric</type> division
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix enforcement of restrictions inside parentheses within regular
- expression lookahead constraints (Tom Lane)
- </para>
-
- <para>
- Lookahead constraints aren't allowed to contain backrefs, and
- parentheses within them are always considered non-capturing, according
- to the manual. However, the code failed to handle these cases properly
- inside a parenthesized subexpression, and would give unexpected
- results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Conversion of regular expressions to indexscan bounds could produce
- incorrect bounds from regexps containing lookahead constraints
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular-expression compiler to handle loops of constraint arcs
- (Tom Lane)
- </para>
-
- <para>
- The code added for CVE-2007-4772 was both incomplete, in that it didn't
- handle loops involving more than one state, and incorrect, in that it
- could cause assertion failures (though there seem to be no bad
- consequences of that in a non-assert build). Multi-state loops would
- cause the compiler to run until the query was canceled or it reached
- the too-many-states error condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve memory-usage accounting in regular-expression compiler
- (Tom Lane)
- </para>
-
- <para>
- This causes the code to emit <quote>regular expression is too
- complex</quote> errors in some cases that previously used unreasonable
- amounts of time and memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of regular-expression compiler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure the shared-memory mapping handle gets closed in
- child processes that don't need it (Tom Lane, Amit Kapila)
- </para>
-
- <para>
- This oversight resulted in failure to recover from crashes
- whenever <varname>logging_collector</varname> is turned on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to detect socket EOF in non-blocking mode on
- Windows (Tom Lane)
- </para>
-
- <para>
- It's not entirely clear whether this problem can happen in pre-9.5
- branches, but if it did, the symptom would be that a walsender process
- would wait indefinitely rather than noticing a loss of connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, ensure that <application>libreadline</application>'s idea
- of the screen size is updated when the terminal window size changes
- (Merlin Moncure)
- </para>
-
- <para>
- Previously, <application>libreadline</application> did not notice if the window
- was resized during query output, leading to strange behavior during
- later input of multiline queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>psql</application>'s <literal>\c</literal> command
- when previous connection was via Unix socket and command specifies a
- new hostname and same username (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, test child process status directly
- rather than relying on heuristics (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application> relied on an assumption that the new
- postmaster would always create <filename>postmaster.pid</filename> within five
- seconds. But that can fail on heavily-loaded systems,
- causing <application>pg_ctl</application> to report incorrectly that the
- postmaster failed to start.
- </para>
-
- <para>
- Except on Windows, this change also means that a <literal>pg_ctl start
- -w</literal> done immediately after another such command will now reliably
- fail, whereas previously it would report success if done within two
- seconds of the first command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, don't attempt to use a wildcard listen
- address to connect to the postmaster (Kondo Yuta)
- </para>
-
- <para>
- On Windows, <application>pg_ctl</application> would fail to detect postmaster
- startup if <varname>listen_addresses</varname> is set to <literal>0.0.0.0</literal>
- or <literal>::</literal>, because it would try to use that value verbatim as
- the address to connect to, which doesn't work. Instead assume
- that <literal>127.0.0.1</literal> or <literal>::1</literal>, respectively, is the
- right thing to use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> and <application>pg_basebackup</application>, adopt
- the GNU convention for handling tar-archive members exceeding 8GB
- (Tom Lane)
- </para>
-
- <para>
- The POSIX standard for <literal>tar</literal> file format does not allow
- archive member files to exceed 8GB, but most modern implementations
- of <application>tar</application> support an extension that fixes that. Adopt
- this extension so that <application>pg_dump</application> with <option>-Ft</option> no
- longer fails on tables with more than 8GB of data, and so
- that <application>pg_basebackup</application> can handle files larger than 8GB.
- In addition, fix some portability issues that could cause failures for
- members between 4GB and 8GB on some platforms. Potentially these
- problems could cause unrecoverable data loss due to unreadable backup
- files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that relation option values are properly quoted
- in <application>pg_dump</application> (Kouhei Sutou, Tom Lane)
- </para>
-
- <para>
- A reloption value that isn't a simple identifier or number could lead
- to dump/reload failures due to syntax errors in CREATE statements
- issued by <application>pg_dump</application>. This is not an issue with any
- reloption currently supported by core <productname>PostgreSQL</productname>, but
- extensions could allow reloptions that cause the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s file-copying code to handle errors
- properly on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to localize messages emitted
- by <application>pg_receivexlog</application> and <application>pg_recvlogical</application>
- (Ioseph Kim)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid dump/reload problems when using both <application>plpython2</application>
- and <application>plpython3</application> (Tom Lane)
- </para>
-
- <para>
- In principle, both versions of <application>PL/Python</application> can be used in
- the same database, though not in the same session (because the two
- versions of <application>libpython</application> cannot safely be used concurrently).
- However, <application>pg_restore</application> and <application>pg_upgrade</application> both
- do things that can fall foul of the same-session restriction. Work
- around that by changing the timing of the check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> regression tests to pass with Python 3.5
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory situations
- (Michael Paquier, Amit Kapila, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix order of arguments
- in <application>ecpg</application>-generated <literal>typedef</literal> statements
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>%g</literal> not <literal>%f</literal> format
- in <application>ecpg</application>'s <function>PGTYPESnumeric_from_double()</function>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgcrypto</filename>'s <function>crypt()</function>
- function can be interrupted by query cancel (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <application>flex</application> versions later than 2.5.x
- (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Now that flex 2.6.0 has been released, the version checks in our build
- scripts needed to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install our <filename>missing</filename> script where PGXS builds can find it
- (Jim Nasby)
- </para>
-
- <para>
- This allows sane behavior in a PGXS build done on a machine where build
- tools such as <application>bison</application> are missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variant regression test expected-output file to match behavior of
- current <application>libxml2</application> (Tom Lane)
- </para>
-
- <para>
- The fix for <application>libxml2</application>'s CVE-2015-7499 causes it not to
- output error context reports in some cases where it used to do so.
- This seems to be a bug, but we'll probably have to live with it for
- some time, so work around it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-14">
- <title>Release 9.2.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.13.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.14</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_2_STABLE [0e933fdf9] 2015-08-27 12:22:10 -0400
-Branch: REL9_1_STABLE [9b1b9446f] 2015-08-27 12:22:10 -0400
--->
-
- <listitem>
- <para>
- Back-patch 9.3-era addition of per-resource-owner lock caches
- (Jeff Janes)
- </para>
-
- <para>
- This substantially improves performance when <application>pg_dump</application>
- tries to dump a large number of tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In regular expression execution, correctly record match data for
- capturing parentheses within a quantifier even when the match is
- zero-length (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's performance for <command>UPDATE</command>/<command>DELETE</command>
- on large inheritance sets (Tom Lane, Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure standby promotion trigger files are removed at postmaster
- startup (Michael Paquier, Fujii Masao)
- </para>
-
- <para>
- This prevents unwanted promotion from occurring if these files appear
- in a database backup that is used to initialize a new standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> attempted to recycle such pages, but did so in a
- way that wasn't crash-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Perl</application> to handle non-<acronym>ASCII</acronym> error
- message texts correctly (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> crash when returning the string
- representation of a <type>record</type> result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix output of ISBN-13 numbers that begin
- with 979 (Fabien Coelho)
- </para>
-
- <para>
- EANs beginning with 979 (but not 9790) are considered ISBNs, but they
- must be printed in the new 13-digit format, not the 10-digit format.
- </para>
- </listitem>
-
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/sepgsql</filename>'s handling of <command>SELECT INTO</command>
- statements (Kohei KaiGai)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> handle inherited <literal>NOT VALID</literal>
- check constraints correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selection of default <application>zlib</application> compression level
- in <application>pg_dump</application>'s directory output format (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping data types from pre-9.2 servers, and when dumping
- functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted minor memory leaks in <application>pg_dump</application> and other
- client-side programs (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-13">
- <title>Release 9.2.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.2.12.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.13</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-12">
- <title>Release 9.2.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.2.11.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.12</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.11,
- see <xref linkend="release-9-2-11"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_functiondef()</function> to show
- functions' <literal>LEAKPROOF</literal> property, if set (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application> to use TLS protocol versions beyond v1
- (Noah Misch)
- </para>
-
- <para>
- For a long time, <application>libpq</application> was coded so that the only SSL
- protocol it would allow was TLS v1. Now that newer TLS versions are
- becoming popular, allow it to negotiate the highest commonly-supported
- TLS version with the server. (<productname>PostgreSQL</productname> servers were
- already capable of such negotiation, so no change is needed on the
- server side.) This is a back-patch of a change already released in
- 9.4.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-11">
- <title>Release 9.2.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.10.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.11</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you use <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions, see the changelog entry below
- about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.10,
- see <xref linkend="release-9-2-10"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect declaration of <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions (Tom Lane)
- </para>
-
- <para>
- These functions should return <type>setof text[]</type>, like the core
- functions they are wrappers for; but they were incorrectly declared as
- returning just <type>text[]</type>. This mistake had two results: first,
- if there was no match you got a scalar null result, whereas what you
- should get is an empty set (zero rows). Second, the <literal>g</literal> flag
- was effectively ignored, since you would get only one result array even
- if there were multiple matches.
- </para>
-
- <para>
- While the latter behavior is clearly a bug, there might be applications
- depending on the former behavior; therefore the function declarations
- will not be changed by default until <productname>PostgreSQL</productname> 9.5.
- In pre-9.5 branches, the old behavior exists in version 1.0 of
- the <literal>citext</literal> extension, while we have provided corrected
- declarations in version 1.1 (which is <emphasis>not</emphasis> installed by
- default). To adopt the fix in pre-9.5 branches, execute
- <literal>ALTER EXTENSION citext UPDATE TO '1.1'</literal> in each database in
- which <literal>citext</literal> is installed. (You can also <quote>update</quote>
- back to 1.0 if you need to undo that.) Be aware that either update
- direction will require dropping and recreating any views or rules that
- use <filename>citext</filename>'s <function>regexp_matches()</function> functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of star-schema-style queries (Tom Lane)
- </para>
-
- <para>
- Sometimes, efficient scanning of a large table requires that index
- parameters be provided from more than one other table (commonly,
- dimension tables whose keys are needed to index a large fact table).
- The planner should be able to find such plans, but an overly
- restrictive search heuristic prevented it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_2_STABLE [97ff2a564] 2015-05-18 17:44:21 -0300
-Branch: REL9_1_STABLE [2360eea3b] 2015-05-18 17:44:21 -0300
-Branch: REL9_0_STABLE [850e1a566] 2015-05-18 17:44:21 -0300
--->
-
- <listitem>
- <para>
- Avoid <quote>cannot GetMultiXactIdMembers() during recovery</quote> error
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when doing <literal>COPY IN</literal> to a table with check
- constraints that contain whole-row references (Tom Lane)
- </para>
-
- <para>
- The known failure case only crashes in 9.4 and up, but there is very
- similar code in 9.3 and 9.2, so back-patch those branches as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structfield>tableoid</structfield> of a foreign table is reported
- correctly when a <literal>READ COMMITTED</literal> recheck occurs after
- locking rows in <command>SELECT FOR UPDATE</command>, <command>UPDATE</command>,
- or <command>DELETE</command> (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</literal>
- replication command (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids a possible startup failure
- in <application>pg_receivexlog</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, fix misparsing of empty values in URI
- connection strings (Thomas Fanghaenel)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix failure to honor <literal>-Z</literal>
- compression level option together with <literal>-Fd</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> consider foreign key relationships
- between extension configuration tables while choosing dump order
- (Gilles Darold, Michael Paquier, Stephen Frost)
- </para>
-
- <para>
- This oversight could result in producing dumps that fail to reload
- because foreign key constraints are transiently violated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <function>readdir()</function> failures when scanning
- directories in <application>initdb</application> and <application>pg_basebackup</application>
- (Marco Nenciarini)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100
--->
-
- <listitem>
- <para>
- Fix failure in <application>pg_receivexlog</application> (Andres Freund)
- </para>
-
- <para>
- A patch merge mistake in 9.2.10 led to <quote>could not create archive
- status file</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-10">
- <title>Release 9.2.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.9.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.10</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are a Windows user and are using the <quote>Norwegian
- (Bokm&aring;l)</quote> locale, manual action is needed after the upgrade to
- replace any <quote>Norwegian (Bokm&aring;l)_Norway</quote> locale names stored
- in <productname>PostgreSQL</productname> system catalogs with the plain-ASCII
- alias <quote>Norwegian_Norway</quote>. For details see
- <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></ulink>
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.9,
- see <xref linkend="release-9-2-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</quote>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Non-ASCII locale names are problematic since it's not clear what
- encoding they should be represented in. Map the troublesome locale
- name to a plain-ASCII alias, <quote>Norwegian_Norway</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible data corruption if <command>ALTER DATABASE SET
- TABLESPACE</command> is used to move a database to a new tablespace and then
- shortly later move it back to its original tablespace (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corrupting tables when <command>ANALYZE</command> inside a transaction
- is rolled back (Andres Freund, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If the failing transaction had earlier removed the last index, rule, or
- trigger from the table, the table would be left in a corrupted state
- with the relevant <structname>pg_class</structname> flags not set though they
- should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that unlogged tables are copied correctly
- during <command>CREATE DATABASE</command> or <command>ALTER DATABASE SET
- TABLESPACE</command> (Pavan Deolasee, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>DROP</command>'s dependency searching to correctly handle the
- case where a table column is recursively visited before its table
- (Petr Jelinek, Tom Lane)
- </para>
-
- <para>
- This case is only known to arise when an extension creates both a
- datatype and a table using that datatype. The faulty code might
- refuse a <command>DROP EXTENSION</command> unless <literal>CASCADE</literal> is
- specified, which should not be required.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of <command>SELECT FOR UPDATE</command> when using a partial
- index on a child table (Kyotaro Horiguchi)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, <command>SELECT FOR UPDATE</command> must
- also recheck the partial index's <literal>WHERE</literal> condition when
- rechecking a recently-updated row to see if it still satisfies the
- query's <literal>WHERE</literal> condition. This requirement was missed if the
- index belonged to an inheritance child table, so that it was possible
- to incorrectly return rows that no longer satisfy the query condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner case wherein <command>SELECT FOR UPDATE</command> could return a row
- twice, and possibly miss returning other rows (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, a <command>SELECT FOR UPDATE</command>
- that is scanning an inheritance tree could incorrectly return a row
- from a prior child table instead of the one it should return from a
- later child table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject duplicate column names in the referenced-columns list of
- a <literal>FOREIGN KEY</literal> declaration (David Rowley)
- </para>
-
- <para>
- This restriction is per SQL standard. Previously we did not reject
- the case explicitly, but later on the code would fail with
- bizarre-looking errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore previous behavior of conversion of domains to JSON
- (Tom Lane)
- </para>
-
- <para>
- This change causes domains over numeric and boolean to be treated
- like their base types for purposes of conversion to JSON. It worked
- like that before 9.3.5 and 9.2.9, but was unintentionally changed
- while fixing a related problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in raising a <type>numeric</type> value to a large integral power
- (Tom Lane)
- </para>
-
- <para>
- The previous code could get a wrong answer, or consume excessive
- amounts of time and memory before realizing that the answer must
- overflow.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <function>numeric_recv()</function>, truncate away any fractional digits
- that would be hidden according to the value's <literal>dscale</literal> field
- (Tom Lane)
- </para>
-
- <para>
- A <type>numeric</type> value's display scale (<literal>dscale</literal>) should
- never be less than the number of nonzero fractional digits; but
- apparently there's at least one broken client application that
- transmits binary <type>numeric</type> values in which that's true.
- This leads to strange behavior since the extra digits are taken into
- account by arithmetic operations even though they aren't printed.
- The least risky fix seems to be to truncate away such <quote>hidden</quote>
- digits on receipt, so that the value is indeed what it prints as.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect search for shortest-first regular expression matches
- (Tom Lane)
- </para>
-
- <para>
- Matching would often fail when the number of allowed iterations is
- limited by a <literal>?</literal> quantifier or a bound expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range numeric timezone specifications (Tom Lane)
- </para>
-
- <para>
- Simple numeric timezone specifications exceeding +/- 168 hours (one
- week) would be accepted, but could then cause null-pointer dereference
- crashes in certain operations. There's no use-case for such large UTC
- offsets, so reject them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in <type>tsquery</type> <literal>@&gt;</literal> <type>tsquery</type>
- operator (Heikki Linnakangas)
- </para>
-
- <para>
- Two different terms would be considered to match if they had the same
- CRC. Also, if the second operand had more terms than the first, it
- would be assumed not to be contained in the first; which is wrong
- since it might contain duplicate terms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve ispell dictionary's defenses against bad affix files (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
- </para>
-
- <para>
- The previous coding could crash on an oversize dictionary, so this was
- deemed a back-patchable bug fix rather than a feature addition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that whole-row variables expose nonempty column names
- to functions that pay attention to column names within composite
- arguments (Tom Lane)
- </para>
-
- <para>
- In some contexts, constructs like <literal>row_to_json(tab.*)</literal> may
- not produce the expected column names. This is fixed properly as of
- 9.4; in older branches, just ensure that we produce some nonempty
- name. (In some cases this will be the underlying table's column name
- rather than the query-assigned alias that should theoretically be
- visible.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of system columns,
- particularly <structfield>tableoid</structfield>, in FDW queries (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid doing <literal><replaceable>indexed_column</replaceable> = ANY
- (<replaceable>array</replaceable>)</literal> as an index qualifier if that leads
- to an inferior plan (Andrew Gierth)
- </para>
-
- <para>
- In some cases, <literal>= ANY</literal> conditions applied to non-first index
- columns would be done as index conditions even though it would be
- better to use them as simple filter conditions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner problems with nested append relations, such as inherited
- tables within <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fail cleanly when a GiST index tuple doesn't fit on a page, rather
- than going into infinite recursion (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Exempt tables that have per-table <varname>cost_limit</varname>
- and/or <varname>cost_delay</varname> settings from autovacuum's global cost
- balancing rules (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- The previous behavior resulted in basically ignoring these per-table
- settings, which was unintended. Now, a table having such settings
- will be vacuumed using those settings, independently of what is going
- on in other autovacuum workers. This may result in heavier total I/O
- load than before, so such settings should be re-examined for sanity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid wholesale autovacuuming when autovacuum is nominally off
- (Tom Lane)
- </para>
-
- <para>
- Even when autovacuum is nominally off, we will still launch autovacuum
- worker processes to vacuum tables that are at risk of XID wraparound.
- However, such a worker process then proceeded to vacuum all tables in
- the target database, if they met the usual thresholds for
- autovacuuming. This is at best pretty unexpected; at worst it delays
- response to the wraparound threat. Fix it so that if autovacuum is
- turned off, workers <emphasis>only</emphasis> do anti-wraparound vacuums and
- not any other work.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During crash recovery, ensure that unlogged relations are rewritten as
- empty and are synced to disk before recovery is considered complete
- (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- This prevents scenarios in which unlogged relations might contain
- garbage data following database crash recovery.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition between hot standby queries and replaying a
- full-page image (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in transient errors in queries being
- executed in hot standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several cases where recovery logic improperly ignored WAL records
- for <literal>COMMIT/ABORT PREPARED</literal> (Heikki Linnakangas)
- </para>
-
- <para>
- The most notable oversight was
- that <varname>recovery_target_xid</varname> could not be used to stop at
- a two-phase commit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent latest WAL file from being archived a second time at completion
- of crash recovery (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid creating unnecessary <filename>.ready</filename> marker files for
- timeline history files (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible null pointer dereference when an empty prepared statement
- is used and the <varname>log_statement</varname> setting is <literal>mod</literal>
- or <literal>ddl</literal> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SPARC spinlock implementation to ensure correctness if the CPU is
- being run in a non-TSO coherency mode, as some non-Solaris kernels do
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of repeated <literal>dbname</literal> parameters
- in <function>PQconnectdbParams()</function> (Alex Shulgin)
- </para>
-
- <para>
- Unexpected behavior ensued if the first occurrence
- of <literal>dbname</literal> contained a connection string or URI to be
- expanded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>libpq</application> reports a suitable error message on
- unexpected socket EOF (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- Depending on kernel behavior, <application>libpq</application> might return an
- empty error string rather than something useful when the server
- unexpectedly closed the socket.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear any old error message during <function>PQreset()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- If <function>PQreset()</function> is called repeatedly, and the connection
- cannot be re-established, error messages from the failed connection
- attempts kept accumulating in the <structname>PGconn</structname>'s error
- string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle out-of-memory conditions while parsing connection
- options in <application>libpq</application> (Alex Shulgin, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array overrun in <application>ecpg</application>'s version
- of <function>ParseDateTime()</function> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>initdb</application>, give a clearer error message if a password
- file is specified but is empty (Mats Erik Andersson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <command>\s</command> command to work nicely with
- libedit, and add pager support (Stepan Rutz, Tom Lane)
- </para>
-
- <para>
- When using libedit rather than readline, <command>\s</command> printed the
- command history in a fairly unreadable encoded format, and on recent
- libedit versions might fail altogether. Fix that by printing the
- history ourselves rather than having the library do it. A pleasant
- side-effect is that the pager is used if appropriate.
- </para>
-
- <para>
- This patch also fixes a bug that caused newline encoding to be applied
- inconsistently when saving the command history with libedit.
- Multiline history entries written by older <application>psql</application>
- versions will be read cleanly with this patch, but perhaps not
- vice versa, depending on the exact libedit versions involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s expanded-mode display to work
- consistently when using <literal>border</literal> = 3
- and <literal>linestyle</literal> = <literal>ascii</literal> or <literal>unicode</literal>
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <application>pg_dump</application> when the database
- contains many instances of multiple dependency paths between the same
- two objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to restore its ability to dump from
- pre-8.1 servers (Gilles Darold)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during parallel restore of a schema-only dump
- (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix core dump in <literal>pg_dump --binary-upgrade</literal> on zero-column
- composite type (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent WAL files created by <literal>pg_basebackup -x/-X</literal> from
- being archived again when the standby is promoted (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <filename>contrib/auto_explain</filename> to print per-node
- timing information when doing <command>EXPLAIN ANALYZE</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix upgrade-from-unpackaged script for <filename>contrib/citext</filename>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix block number checking
- in <filename>contrib/pageinspect</filename>'s <function>get_raw_page()</function>
- (Tom Lane)
- </para>
-
- <para>
- The incorrect checking logic could prevent access to some pages in
- non-main relation forks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename>'s <function>pgp_sym_decrypt()</function>
- to not fail on messages whose length is 6 less than a power of 2
- (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leak in <filename>contrib/pg_test_fsync</filename>
- (Jeff Janes)
- </para>
-
- <para>
- This could cause failure to remove temporary files on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a possible crash in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Mark Simonetti)
- </para>
-
- <para>
- <application>libxslt</application> seems to have an undocumented dependency on
- the order in which resources are freed; reorder our calls to avoid a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Mark some <filename>contrib</filename> I/O functions with correct volatility
- properties (Tom Lane)
- </para>
-
- <para>
- The previous over-conservative marking was immaterial in normal use,
- but could cause optimization problems or rejection of valid index
- expression definitions. Since the consequences are not large, we've
- just adjusted the function definitions in the extension modules'
- scripts, without changing version numbers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect incompatible OpenLDAP versions during build (Noah Misch)
- </para>
-
- <para>
- With OpenLDAP versions 2.4.24 through 2.4.31,
- inclusive, <productname>PostgreSQL</productname> backends can crash at exit.
- Raise a warning during <application>configure</application> based on the
- compile-time OpenLDAP version number, and test the crashing scenario
- in the <filename>contrib/dblink</filename> regression test.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In non-MSVC Windows builds, ensure <filename>libpq.dll</filename> is installed
- with execute permissions (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone abbreviations lists (Tom Lane)
- </para>
-
- <para>
- Add CST (China Standard Time) to our lists.
- Remove references to ADT as <quote>Arabia Daylight Time</quote>, an
- abbreviation that's been out of use since 2007; therefore, claiming
- there is a conflict with <quote>Atlantic Daylight Time</quote> doesn't seem
- especially helpful.
- Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
- (Fiji); we didn't even have them on the proper side of the date line.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a.
- </para>
-
- <para>
- The IANA timezone database has adopted abbreviations of the form
- <literal>A<replaceable>x</replaceable>ST</literal>/<literal>A<replaceable>x</replaceable>DT</literal>
- for all Australian time zones, reflecting what they believe to be
- current majority practice Down Under. These names do not conflict
- with usage elsewhere (other than ACST for Acre Summer Time, which has
- been in disuse since 1994). Accordingly, adopt these names into
- our <quote>Default</quote> timezone abbreviation set.
- The <quote>Australia</quote> abbreviation set now contains only CST, EAST,
- EST, SAST, SAT, and WST, all of which are thought to be mostly
- historical usage. Note that SAST has also been changed to be South
- Africa Standard Time in the <quote>Default</quote> abbreviation set.
- </para>
-
- <para>
- Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
- (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
- DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
- (America/Grand_Turk), and Fiji. There is a new zone
- Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
- corrections for historical (pre-1970) time zone data.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-9">
- <title>Release 9.2.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.8.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.9</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, this release corrects an index corruption problem in some GiST
- indexes. See the first changelog entry below to find out whether your
- installation has been affected and what steps you should take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.6,
- see <xref linkend="release-9-2-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't clear the right-link of a GiST index page while replaying
- updates from WAL (Heikki Linnakangas)
- </para>
-
- <para>
- This error could lead to transiently wrong answers from GiST index
- scans performed in Hot Standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case infinite loop during insertion into an SP-GiST text
- index (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix feedback status when <xref linkend="guc-hot-standby-feedback"/> is
- turned off on-the-fly (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's mishandling of nested PlaceHolderVars generated in
- nested-nestloop plans (Tom Lane)
- </para>
-
- <para>
- This oversight could result in <quote>variable not found in subplan
- target lists</quote> errors, or in silently wrong query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not find pathkey item to sort</quote> planner failures
- with <literal>UNION ALL</literal> over subqueries reading from tables with
- inheritance children (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner to drop constant-NULL inputs
- of <literal>AND</literal>/<literal>OR</literal> when possible (Tom Lane)
- </para>
-
- <para>
- This change fixes some cases where the more aggressive parameter
- substitution done by 9.2 and later can lead to a worse plan than
- older versions produced.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix identification of input type category in <function>to_json()</function>
- and friends (Tom Lane)
- </para>
-
- <para>
- This is known to have led to inadequate quoting of <type>money</type>
- fields in the <type>JSON</type> result, and there may have been wrong
- results for other data types as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent foreign tables from being created with OIDS
- when <literal>default_with_oids</literal> is true
- (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client host name lookup when processing <filename>pg_hba.conf</filename>
- entries that specify host names instead of IP addresses (Tom Lane)
- </para>
-
- <para>
- Ensure that reverse-DNS lookup failures are reported, instead of just
- silently not matching such entries. Also ensure that we make only
- one reverse-DNS lookup attempt per connection, not one per host name
- entry, which is what previously happened if the lookup attempts failed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the root user to use <literal>postgres -C variable</literal> and
- <literal>postgres --describe-config</literal> (MauMau)
- </para>
-
- <para>
- The prohibition on starting the server as root does not need to extend
- to these operations, and relaxing it prevents failure
- of <application>pg_ctl</application> in some scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tablespace creation WAL replay to work on Windows (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of socket creation failures on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to do the right thing when an array
- of <type>char *</type> is the target for a FETCH statement returning more
- than one row, as well as some other array-handling fixes
- (Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> for cases where the new server creates
- a TOAST table but the old version did not (Bruce Momjian)
- </para>
-
- <para>
- This rare situation would manifest as <quote>relation OID mismatch</quote>
- errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <filename>contrib/auto_explain</filename> from changing the output of
- a user's <command>EXPLAIN</command> (Tom Lane)
- </para>
-
- <para>
- If <filename>auto_explain</filename> is active, it could cause
- an <literal>EXPLAIN (ANALYZE, TIMING OFF)</literal> command to nonetheless
- print timing information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak in <filename>contrib/dblink</filename>
- (MauMau, Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent use of already-freed memory in
- <filename>contrib/pgstattuple</filename>'s <function>pgstat_heap()</function>
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-8">
- <title>Release 9.2.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.7.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.8</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.6,
- see <xref linkend="release-9-2-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid race condition in checking transaction commit status during
- receipt of a <command>NOTIFY</command> message (Marko Tiikkaja)
- </para>
-
- <para>
- This prevents a scenario wherein a sufficiently fast client might
- respond to a notification before database updates made by the
- notifier have become visible to the recipient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of index endpoint probes during planning (Tom Lane)
- </para>
-
- <para>
- This change fixes a significant performance problem that occurred
- when there were many not-yet-committed rows at the end of the index,
- which is a common situation for indexes on sequentially-assigned
- values such as timestamps or sequence-generated identifiers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>walsender</application>'s failure to shut down cleanly when client
- is <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check WAL level and hot standby parameters correctly when doing crash
- recovery that will be followed by archive recovery (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix test to see if hot standby connections can be allowed immediately
- after a crash (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in PL/Perl when returning a composite result, including
- multiple-OUT-parameter cases (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tracking of <application>psql</application> script line numbers
- during <literal>\copy</literal> from out-of-line data
- (Kumar Rajeev Rastogi, Amit Khandekar)
- </para>
-
- <para>
- <literal>\copy ... from</literal> incremented the script file line number
- for each data line, even if the data was not coming from the script
- file. This mistake resulted in wrong line numbers being reported for
- any errors occurring later in the same script file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intermittent <quote>could not reserve shared memory region</quote>
- failures on recent Windows versions (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-7">
- <title>Release 9.2.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.6.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.7</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.6,
- see <xref linkend="release-9-2-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in determining when recovery has reached consistency
- (Tomonari Katsumata, Heikki Linnakangas)
- </para>
-
- <para>
- In some cases WAL replay would mistakenly conclude that the database
- was already consistent at the start of replay, thus possibly allowing
- hot-standby queries before the database was really consistent. Other
- symptoms such as <quote>PANIC: WAL contains references to invalid
- pages</quote> were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper locking of btree index pages while replaying
- a <literal>VACUUM</literal> operation in hot-standby mode (Andres Freund,
- Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This error could result in <quote>PANIC: WAL contains references to
- invalid pages</quote> failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When <literal>pause_at_recovery_target</literal>
- and <literal>recovery_target_inclusive</literal> are both set, ensure the
- target record is applied before pausing, not after (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race conditions in walsender shutdown logic and walreceiver
- SIGHUP signal handler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow keywords that are type names to be used in lists of roles
- (Stephen Frost)
- </para>
-
- <para>
- A previous patch allowed such keywords to be used without quoting
- in places such as role identifiers; but it missed cases where a
- list of role identifiers was permitted, such as <literal>DROP ROLE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parser crash for <literal>EXISTS(SELECT * FROM
- zero_column_table)</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE</literal> of an inherited target table
- that has <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Without this fix, <literal>UNION ALL</literal> subqueries aren't correctly
- inserted into the update plans for inheritance child tables after the
- first one, typically resulting in no update happening for those child
- table(s).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly distinguish numbers from non-numbers when generating JSON
- output (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix placement of permissions checks in <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> (Andres Freund, Magnus Hagander)
- </para>
-
- <para>
- The previous coding might attempt to do catalog access when it
- shouldn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>*</literal>-qualification of named parameters in SQL-language
- functions (Tom Lane)
- </para>
-
- <para>
- Given a composite-type parameter
- named <literal>foo</literal>, <literal>$1.*</literal> worked fine,
- but <literal>foo.*</literal> not so much.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect translation handling in
- some <application>psql</application> <literal>\d</literal> commands
- (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <application>pg_basebackup</application>'s background process is killed
- when exiting its foreground process (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible incorrect printing of filenames
- in <application>pg_basebackup</application>'s verbose mode (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid including tablespaces inside PGDATA twice in base backups
- (Dimitri Fontaine, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_stat_statement</filename>'s handling
- of <literal>CURRENT_DATE</literal> and related constructs (Kyotaro
- Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using the deprecated <literal>dllwrap</literal> tool in Cygwin builds
- (Marco Atzeri)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-6">
- <title>Release 9.2.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.5.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.6</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, this release corrects a number of potential data corruption
- issues. See the first two changelog entries below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.4,
- see <xref linkend="release-9-2-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. In 9.2.0
- and later, the probability of loss is higher, and it's also possible
- to get <quote>could not access status of transaction</quote> errors as a
- consequence of this bug. Users upgrading from releases 9.0.4 or 8.4.8
- or earlier are not affected, but all later versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initialization of <filename>pg_clog</filename> and <filename>pg_subtrans</filename>
- during hot standby startup (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- This bug can cause data loss on standby servers at the moment they
- start to accept hot-standby queries, by marking committed transactions
- as uncommitted. The likelihood of such corruption is small unless, at
- the time of standby startup, the primary server has executed many
- updating transactions since its last checkpoint. Symptoms include
- missing rows, rows that should have been deleted being still visible,
- and obsolete versions of updated rows being still visible alongside
- their newer versions.
- </para>
-
- <para>
- This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
- Standby servers that have only been running earlier releases are not
- at risk. It's recommended that standby servers that have ever run any
- of the buggy releases be re-cloned from the primary (e.g., with a new
- base backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in fast-path locking (Tom Lane)
- </para>
-
- <para>
- This could lead to corruption of the lock data structures in shared
- memory, causing <quote>lock already held</quote> and other odd errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Truncate <filename>pg_multixact</filename> contents during WAL replay
- (Andres Freund)
- </para>
-
- <para>
- This avoids ever-increasing disk space consumption in standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an anti-wraparound <command>VACUUM</command> counts a page as scanned
- when it's only verified that no tuples need freezing (Sergey
- Burladyan, Jeff Janes)
- </para>
-
- <para>
- This bug could result in failing to
- advance <structfield>relfrozenxid</structfield>, so that the table would still be
- thought to need another anti-wraparound vacuum. In the worst case the
- database might even shut down to prevent wraparound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected spgdoinsert() failure</quote> error during SP-GiST
- index creation (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning in cases where the same non-strict expression
- appears in multiple <literal>WHERE</literal> and outer <literal>JOIN</literal>
- equality clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner crash with whole-row reference to a subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect generation of optimized MIN()/MAX() plans for
- inheritance trees (Tom Lane)
- </para>
-
- <para>
- The planner could fail in cases where the MIN()/MAX() argument was an
- expression rather than a simple variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intra-transaction memory leak when printing range values
- (Tom Lane)
- </para>
-
- <para>
- This fix actually cures transient memory leaks in any datatype output
- function, but range types are the only ones known to have had a
- significant problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent incorrect display of dropped columns in NOT NULL and CHECK
- constraint violation messages (Michael Paquier and Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow default arguments and named-argument notation for window
- functions (Tom Lane)
- </para>
-
- <para>
- Previously, these cases were likely to crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> search for quoted cursor names
- case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-5">
- <title>Release 9.2.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.4.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.5</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.4,
- see <xref linkend="release-9-2-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent corruption of multi-byte characters when attempting to
- case-fold identifiers (Andrew Dunstan)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> case-folds non-ASCII characters only
- when using a single-byte server encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when creating B-tree indexes on range columns
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix checkpoint memory leak in background writer when <literal>wal_level =
- hot_standby</literal> (Naoya Anzai)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory overcommit bug when <varname>work_mem</varname> is using more
- than 24GB of memory (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible SSL state corruption in threaded libpq applications
- (Nick Phillips, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve estimate of planner cost when choosing between generic and
- custom plans (Tom Lane)
- </para>
-
- <para>
- This change will favor generic plans when planning cost is high.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly compute row estimates for boolean columns containing many NULL
- values (Andrew Gierth)
- </para>
-
- <para>
- Previously tests like <literal>col IS NOT TRUE</literal> and <literal>col IS
- NOT FALSE</literal> did not properly factor in NULL values when estimating
- plan costs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix accounting for qualifier evaluation costs in <literal>UNION ALL</literal>
- and inheritance queries (Tom Lane)
- </para>
-
- <para>
- This fixes cases where suboptimal query plans could be chosen if
- some <literal>WHERE</literal> clauses are expensive to calculate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent pushing down <literal>WHERE</literal> clauses into unsafe
- <literal>UNION/INTERSECT</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Subqueries of a <literal>UNION</literal> or <literal>INTERSECT</literal> that
- contain set-returning functions or volatile functions in their
- <literal>SELECT</literal> lists could be improperly optimized, leading to
- run-time errors or incorrect query results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare case of <quote>failed to locate grouping columns</quote>
- planner failure (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> of foreign tables with dropped columns (Andrew Dunstan)
- </para>
-
- <para>
- Previously such cases could cause a <application>pg_upgrade</application> error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reorder <application>pg_dump</application> processing of extension-related
- rules and event triggers (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force dumping of extension tables if specified by <command>pg_dump
- -t</command> or <literal>-n</literal> (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view dumping code's handling of dropped columns in referenced
- tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>pg_restore -l</command> with the directory archive to display
- the correct format name (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly record index comments created using <literal>UNIQUE</literal>
- and <literal>PRIMARY KEY</literal> syntax (Andres Freund)
- </para>
-
- <para>
- This fixes a parallel <application>pg_restore</application> failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <command>pg_basebackup -x</command> with an empty xlog directory
- to throw an error rather than crashing (Magnus Hagander, Haruka
- Takatsuka)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly guarantee transmission of WAL files before clean switchover
- (Fujii Masao)
- </para>
-
- <para>
- Previously, the streaming replication connection might close before all
- WAL files had been replayed on the standby.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL segment timeline handling during recovery (Mitsumasa Kondo,
- Heikki Linnakangas)
- </para>
-
- <para>
- WAL file recycling during standby recovery could lead to premature
- recovery completion, resulting in data loss.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent errors in WAL replay due to references to uninitialized empty
- pages (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REINDEX TABLE</command> and <command>REINDEX DATABASE</command>
- to properly revalidate constraints and mark invalidated indexes as
- valid (Noah Misch)
- </para>
-
- <para>
- <command>REINDEX INDEX</command> has always worked properly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlocks during insertion into SP-GiST indexes (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock during concurrent <command>CREATE INDEX
- CONCURRENTLY</command> operations (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GiST index lookup crash (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>regexp_matches()</function> handling of zero-length matches
- (Jeevan Chalke)
- </para>
-
- <para>
- Previously, zero-length matches like '^' could return too many matches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash for overly-complex regular expressions (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expression match failures for back references combined with
- non-greedy quantifiers (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>ALTER DEFAULT PRIVILEGES</command> to operate on schemas
- without requiring CREATE permission (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Loosen restriction on keywords used in queries (Tom Lane)
- </para>
-
- <para>
- Specifically, lessen keyword restrictions for role names, language
- names, <command>EXPLAIN</command> and <command>COPY</command> options, and
- <command>SET</command> values. This allows <literal>COPY ... (FORMAT
- BINARY)</literal> to work as expected; previously <literal>BINARY</literal> needed
- to be quoted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Print proper line number during <command>COPY</command> failure (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pgp_pub_decrypt()</function> so it works for secret keys with
- passwords (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> use <literal>pg_dump
- --quote-all-identifiers</literal> to avoid problems with keyword changes
- between releases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM ANALYZE</command> still runs the ANALYZE phase
- if its attempt to truncate the file is cancelled due to lock conflicts
- (Kevin Grittner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible failure when performing transaction control commands (e.g
- <command>ROLLBACK</command>) in prepared queries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that floating-point data input accepts standard spellings
- of <quote>infinity</quote> on all platforms (Tom Lane)
- </para>
-
- <para>
- The C99 standard says that allowable spellings are <literal>inf</literal>,
- <literal>+inf</literal>, <literal>-inf</literal>, <literal>infinity</literal>,
- <literal>+infinity</literal>, and <literal>-infinity</literal>. Make sure we
- recognize these even if the platform's <function>strtod</function> function
- doesn't.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary reporting when <varname>track_activities</varname> is off
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Expand ability to compare rows to records and arrays (Rafal Rzepecki,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <application>psql</application>'s <envar>PSQLRC</envar> variable
- contains a tilde (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add spinlock support for ARM64 (Mark Salter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013d
- for DST law changes in Israel, Morocco, Palestine, and Paraguay.
- Also, historical zone data corrections for Macquarie Island.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-4">
- <title>Release 9.2.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-04-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.3.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.4</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, this release corrects several errors in management of GiST
- indexes. After installing this update, it is advisable to
- <command>REINDEX</command> any GiST indexes that meet one or more of the
- conditions described below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.2.2,
- see <xref linkend="release-9-2-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix insecure parsing of server command-line switches (Mitsumasa
- Kondo, Kyotaro Horiguchi)
- </para>
-
- <para>
- A connection request containing a database name that begins with
- <quote><literal>-</literal></quote> could be crafted to damage or destroy
- files within the server's data directory, even if the request is
- eventually rejected. (CVE-2013-1899)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reset OpenSSL randomness state in each postmaster child process
- (Marko Kreen)
- </para>
-
- <para>
- This avoids a scenario wherein random numbers generated by
- <filename>contrib/pgcrypto</filename> functions might be relatively easy for
- another database user to guess. The risk is only significant when
- the postmaster is configured with <varname>ssl</varname> = <literal>on</literal>
- but most connections don't use SSL encryption. (CVE-2013-1900)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make REPLICATION privilege checks test current user not authenticated
- user (Noah Misch)
- </para>
-
- <para>
- An unprivileged database user could exploit this mistake to call
- <function>pg_start_backup()</function> or <function>pg_stop_backup()</function>,
- thus possibly interfering with creation of routine backups.
- (CVE-2013-1901)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GiST indexes to not use <quote>fuzzy</quote> geometric comparisons when
- it's not appropriate to do so (Alexander Korotkov)
- </para>
-
- <para>
- The core geometric types perform comparisons using <quote>fuzzy</quote>
- equality, but <function>gist_box_same</function> must do exact comparisons,
- else GiST indexes using it might become inconsistent. After installing
- this update, users should <command>REINDEX</command> any GiST indexes on
- <type>box</type>, <type>polygon</type>, <type>circle</type>, or <type>point</type>
- columns, since all of these use <function>gist_box_same</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix erroneous range-union and penalty logic in GiST indexes that use
- <filename>contrib/btree_gist</filename> for variable-width data types, that is
- <type>text</type>, <type>bytea</type>, <type>bit</type>, and <type>numeric</type>
- columns (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in useless
- index bloat. Users are advised to <command>REINDEX</command> such indexes
- after installing this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in GiST page splitting code for multi-column indexes
- (Tom Lane)
- </para>
-
- <para>
- These errors could result in inconsistent indexes in which some keys
- that are present would not be found by searches, and also in indexes
- that are unnecessarily inefficient to search. Users are advised to
- <command>REINDEX</command> multi-column GiST indexes after installing this
- update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>gist_point_consistent</function>
- to handle fuzziness consistently (Alexander Korotkov)
- </para>
-
- <para>
- Index scans on GiST indexes on <type>point</type> columns would sometimes
- yield results different from a sequential scan, because
- <function>gist_point_consistent</function> disagreed with the underlying
- operator code about whether to do comparisons exactly or fuzzily.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer leak in WAL replay (Heikki Linnakangas)
- </para>
-
- <para>
- This bug could result in <quote>incorrect local pin count</quote> errors
- during replay, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure we do crash recovery before entering archive recovery, if the
- database was not stopped cleanly and a <filename>recovery.conf</filename> file
- is present (Heikki Linnakangas, Kyotaro Horiguchi, Mitsumasa Kondo)
- </para>
-
- <para>
- This is needed to ensure that the database is consistent in certain
- scenarios, such as initializing a standby server with a filesystem
- snapshot from a running server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deleting not-yet-archived WAL files during crash recovery
- (Heikki Linnakangas, Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in <command>DELETE RETURNING</command> (Tom Lane)
- </para>
-
- <para>
- Under the right circumstances, <command>DELETE RETURNING</command> could
- attempt to fetch data from a shared buffer that the current process
- no longer has any pin on. If some other process changed the buffer
- meanwhile, this would lead to garbage <literal>RETURNING</literal> output, or
- even a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite-loop risk in regular expression compilation (Tom Lane,
- Don Porter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential null-pointer dereference in regular expression compilation
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>to_char()</function> to use ASCII-only case-folding rules where
- appropriate (Tom Lane)
- </para>
-
- <para>
- This fixes misbehavior of some template patterns that should be
- locale-independent, but mishandled <quote><literal>I</literal></quote> and
- <quote><literal>i</literal></quote> in Turkish locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</literal>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-language functions to be safely usable as support
- functions for range types (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logic error when a single transaction does <command>UNLISTEN</command>
- then <command>LISTEN</command> (Tom Lane)
- </para>
-
- <para>
- The session wound up not listening for notify events at all, though it
- surely should listen in this case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible planner crash after columns have been added to a view
- that's depended on by another view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance issue in <literal>EXPLAIN (ANALYZE, TIMING OFF)</literal>
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove useless <quote>picksplit doesn't support secondary split</quote> log
- messages (Josh Hansen, Tom Lane)
- </para>
-
- <para>
- This message seems to have been added in expectation of code that was
- never written, and probably never will be, since GiST's default
- handling of secondary splits is actually pretty good. So stop nagging
- end users about it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove vestigial secondary-split support in
- <function>gist_box_picksplit()</function> (Tom Lane)
- </para>
-
- <para>
- Not only was this implementation of secondary-split not better than the
- default implementation, it's actually worse. So remove it and let the
- default code path handle the case.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to send a session's last few transaction
- commit/abort counts to the statistics collector (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Eliminate memory leaks in PL/Perl's <function>spi_prepare()</function> function
- (Alex Hunsaker, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to handle database names containing
- <quote><literal>=</literal></quote> correctly (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <application>pg_dump</application> when an incorrect connection
- string is given (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore invalid indexes in <application>pg_dump</application> and
- <application>pg_upgrade</application> (Michael Paquier, Bruce Momjian)
- </para>
-
- <para>
- Dumping invalid indexes can cause problems at restore time, for example
- if the reason the index creation failed was because it tried to enforce
- a uniqueness condition not satisfied by the table's data. Also, if the
- index creation is in fact still in progress, it seems reasonable to
- consider it to be an uncommitted DDL change, which
- <application>pg_dump</application> wouldn't be expected to dump anyway.
- <application>pg_upgrade</application> now also skips invalid indexes rather than
- failing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_basebackup</application>, include only the current server
- version's subdirectory when backing up a tablespace (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a server version check in <application>pg_basebackup</application> and
- <application>pg_receivexlog</application>, so they fail cleanly with version
- combinations that won't work (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/dblink</filename> to handle inconsistent settings of
- <varname>DateStyle</varname> or <varname>IntervalStyle</varname> safely (Daniel
- Farina, Tom Lane)
- </para>
-
- <para>
- Previously, if the remote server had different settings of these
- parameters, ambiguous dates might be read incorrectly. This fix
- ensures that datetime and interval columns fetched by a
- <filename>dblink</filename> query will be interpreted correctly. Note however
- that inconsistent settings are still risky, since literal values
- appearing in SQL commands sent to the remote server might be
- interpreted differently than they would be locally.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s <function>similarity()</function> function
- to return zero for trigram-less strings (Tom Lane)
- </para>
-
- <para>
- Previously it returned <literal>NaN</literal> due to internal division by zero.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable building <productname>PostgreSQL</productname> with Microsoft Visual
- Studio 2012 (Brar Piening, Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013b
- for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
- Russian areas. Also, historical zone data corrections for numerous
- places.
- </para>
-
- <para>
- Also, update the time zone abbreviation files for recent changes in
- Russia and elsewhere: <literal>CHOT</literal>, <literal>GET</literal>,
- <literal>IRKT</literal>, <literal>KGT</literal>, <literal>KRAT</literal>, <literal>MAGT</literal>,
- <literal>MAWT</literal>, <literal>MSK</literal>, <literal>NOVT</literal>, <literal>OMST</literal>,
- <literal>TKT</literal>, <literal>VLAT</literal>, <literal>WST</literal>, <literal>YAKT</literal>,
- <literal>YEKT</literal> now follow their current meanings, and
- <literal>VOLT</literal> (Europe/Volgograd) and <literal>MIST</literal>
- (Antarctica/Macquarie) are added to the default abbreviations list.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-3">
- <title>Release 9.2.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-02-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.2.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.3</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.2.2,
- see <xref linkend="release-9-2-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent execution of <function>enum_recv</function> from SQL (Tom Lane)
- </para>
-
- <para>
- The function was misdeclared, allowing a simple SQL command to crash the
- server. In principle an attacker might be able to use it to examine the
- contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP)
- for reporting this issue. (CVE-2013-0255)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple problems in detection of when a consistent database
- state has been reached during WAL replay (Fujii Masao, Heikki
- Linnakangas, Simon Riggs, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix detection of end-of-backup point when no actual redo work is
- required (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in incorrect <quote>WAL ends before end of
- online backup</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update minimum recovery point when truncating a relation file (Heikki
- Linnakangas)
- </para>
-
- <para>
- Once data has been discarded, it's no longer safe to stop recovery at
- an earlier point in the timeline.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recycling of WAL segments after changing recovery target timeline
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly restore timeline history files from archive on cascading
- standby servers (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix lock conflict detection on hot-standby servers (Andres Freund,
- Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
- </para>
-
- <para>
- The need to cancel conflicting hot-standby queries would sometimes be
- missed, allowing those queries to see inconsistent data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent recovery pause feature from pausing before users can connect
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL grammar to allow subscripting or field selection from a
- sub-SELECT result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems with autovacuum truncation in busy workloads
- (Jan Wieck)
- </para>
-
- <para>
- Truncation of empty pages at the end of a table requires exclusive
- lock, but autovacuum was coded to fail (and release the table lock)
- when there are conflicting lock requests. Under load, it is easily
- possible that truncation would never occur, resulting in table bloat.
- Fix by performing a partial truncation, releasing the lock, then
- attempting to re-acquire the lock and continue. This fix also greatly
- reduces the average time before autovacuum releases the lock after a
- conflicting request arrives.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <function>SPI_execute</function> and related
- functions, thereby improving PL/pgSQL's <literal>EXECUTE</literal>
- (Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- Remove some data-copying overhead that was added in 9.2 as a
- consequence of revisions in the plan caching mechanism. This
- eliminates a performance regression compared to 9.1, and also saves
- memory, especially when the query string to be executed contains many
- SQL statements.
- </para>
-
- <para>
- A side benefit is that multi-statement query strings are now
- processed fully serially, that is we complete execution of earlier
- statements before running parse analysis and planning on the
- following ones. This eliminates a long-standing issue, in that DDL
- that should affect the behavior of a later statement will now behave as
- expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore pre-9.2 cost estimates for index usage (Tom Lane)
- </para>
-
- <para>
- An ill-considered change of a fudge factor led to undesirably high
- cost estimates for use of very large indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix intermittent crash in <literal>DROP INDEX CONCURRENTLY</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential corruption of shared-memory lock table during
- <command>CREATE/DROP INDEX CONCURRENTLY</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>COPY</command>'s multiple-tuple-insertion code for the case of
- a tuple larger than page size minus fillfactor (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding could get into an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against race conditions when scanning
- <structname>pg_tablespace</structname> (Stephen Frost, Tom Lane)
- </para>
-
- <para>
- <command>CREATE DATABASE</command> and <command>DROP DATABASE</command> could
- misbehave if there were concurrent updates of
- <structname>pg_tablespace</structname> entries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>DROP OWNED</command> from trying to drop whole databases or
- tablespaces (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- For safety, ownership of these objects must be reassigned, not dropped.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error in <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- implementation (Andres Freund)
- </para>
-
- <para>
- In installations that have existed for more than <link
- linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</varname></link>
- transactions, this mistake prevented autovacuum from using partial-table
- scans, so that a full-table scan would always happen instead.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent misbehavior when a <symbol>RowExpr</symbol> or <symbol>XmlExpr</symbol>
- is parse-analyzed twice (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This mistake could be user-visible in contexts such as
- <literal>CREATE TABLE LIKE INCLUDING INDEXES</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve defenses against integer overflow in hashtable sizing
- calculations (Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some bugs associated with privileges on datatypes (Tom Lane)
- </para>
-
- <para>
- There were some issues with default privileges for types, and
- <application>pg_dump</application> failed to dump such privileges at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to ignore leftover temporary tables after a server crash
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to rotate postmaster log files for size reasons on
- Windows (Jeff Janes, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reject out-of-range dates in <function>to_date()</function> (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_extension_config_dump()</function> to handle
- extension-update cases properly (Tom Lane)
- </para>
-
- <para>
- This function will now replace any existing entry for the target
- table, making it usable in extension update scripts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/pgSQL's reporting of plan-time errors in possibly-simple
- expressions (Tom Lane)
- </para>
-
- <para>
- The previous coding resulted in sometimes omitting the first line in
- the <literal>CONTEXT</literal> traceback for the error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Python's handling of functions used as triggers on multiple
- tables (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that non-ASCII prompt strings are translated to the correct
- code page on Windows (Alexander Law, Noah Misch)
- </para>
-
- <para>
- This bug affected <application>psql</application> and some other client programs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application>'s <command>\?</command> command
- when not connected to a database (Meng Qingzhong)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible error if a relation file is removed while
- <application>pg_basebackup</application> is running (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tolerate timeline switches while <literal>pg_basebackup -X fetch</literal>
- is backing up a standby server (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> exclude data of unlogged tables when
- running on a hot-standby server (Magnus Hagander)
- </para>
-
- <para>
- This would fail anyway because the data is not available on the standby
- server, so it seems most convenient to assume
- <option>--no-unlogged-table-data</option> automatically.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to deal with invalid indexes safely
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s -O/-o options (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <application>libpq</application>'s
- <function>PQprintTuples</function> (Xi Wang)
- </para>
-
- <para>
- This ancient function is not used anywhere by
- <productname>PostgreSQL</productname> itself, but it might still be used by some
- client code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpglib</application> use translated messages properly
- (Chen Huajun)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly install <application>ecpg_compat</application> and
- <application>pgtypes</application> libraries on MSVC (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include our version of <function>isinf()</function> in
- <application>libecpg</application> if it's not provided by the system
- (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange configure's tests for supplied functions so it is not
- fooled by bogus exports from libedit/libreadline (Christoph Berg)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure Windows build number increases over time (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgxs</application> build executables with the right
- <literal>.exe</literal> suffix when cross-compiling for Windows
- (Zoltan Boszormenyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new timezone abbreviation <literal>FET</literal> (Tom Lane)
- </para>
-
- <para>
- This is now used in some eastern-European time zones.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-2">
- <title>Release 9.2.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-12-06</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.1.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.2</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, you may need to perform <command>REINDEX</command> operations to
- correct problems in concurrently-built indexes, as described in the first
- changelog item below.
- </para>
-
- <para>
- Also, if you are upgrading from version 9.2.0,
- see <xref linkend="release-9-2-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix multiple bugs associated with <command>CREATE/DROP INDEX
- CONCURRENTLY</command> (Andres Freund, Tom Lane, Simon Riggs, Pavan Deolasee)
- </para>
-
- <para>
- An error introduced while adding <command>DROP INDEX CONCURRENTLY</command>
- allowed incorrect indexing decisions to be made during the initial
- phase of <command>CREATE INDEX CONCURRENTLY</command>; so that indexes built
- by that command could be corrupt. It is recommended that indexes
- built in 9.2.X with <command>CREATE INDEX CONCURRENTLY</command> be rebuilt
- after applying this update.
- </para>
-
- <para>
- In addition, fix <command>CREATE/DROP INDEX CONCURRENTLY</command> to use
- in-place updates when changing the state of an index's
- <structname>pg_index</structname> row. This prevents race conditions that could
- cause concurrent sessions to miss updating the target index, thus
- again resulting in corrupt concurrently-created indexes.
- </para>
-
- <para>
- Also, fix various other operations to ensure that they ignore
- invalid indexes resulting from a failed <command>CREATE INDEX
- CONCURRENTLY</command> command. The most important of these is
- <command>VACUUM</command>, because an auto-vacuum could easily be launched
- on the table before corrective action can be taken to fix or remove
- the invalid index.
- </para>
-
- <para>
- Also fix <command>DROP INDEX CONCURRENTLY</command> to not disable
- insertions into the target index until all queries using it are done.
- </para>
-
- <para>
- Also fix misbehavior if <command>DROP INDEX CONCURRENTLY</command> is
- canceled: the previous coding could leave an un-droppable index behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correct predicate locking for <command>DROP INDEX CONCURRENTLY</command>
- (Kevin Grittner)
- </para>
-
- <para>
- Previously, SSI predicate locks were processed at the wrong time,
- possibly leading to incorrect behavior of serializable transactions
- executing in parallel with the <command>DROP</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix buffer locking during WAL replay (Tom Lane)
- </para>
-
- <para>
- The WAL replay code was insufficiently careful about locking buffers
- when replaying WAL records that affect more than one page. This could
- result in hot standby queries transiently seeing inconsistent states,
- resulting in wrong answers or unexpected failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix an error in WAL generation logic for GIN indexes (Tom Lane)
- </para>
-
- <para>
- This could result in index corruption, if a torn-page failure occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix an error in WAL replay logic for SP-GiST indexes (Tom Lane)
- </para>
-
- <para>
- This could result in index corruption after a crash, or on a standby
- server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect detection of end-of-base-backup location during WAL
- recovery (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake allowed hot standby mode to start up before the database
- reaches a consistent state.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly remove startup process's virtual XID lock when promoting a
- hot standby server to normal running (Simon Riggs)
- </para>
-
- <para>
- This oversight could prevent subsequent execution of certain
- operations such as <command>CREATE INDEX CONCURRENTLY</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid bogus <quote>out-of-sequence timeline ID</quote> errors in standby
- mode (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent the postmaster from launching new child processes after it's
- received a shutdown signal (Tom Lane)
- </para>
-
- <para>
- This mistake could result in shutdown taking longer than it should, or
- even never completing at all without additional user action.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the syslogger process to not fail when
- <varname>log_rotation_age</varname> exceeds 2^31 milliseconds (about 25 days)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>WaitLatch()</function> to return promptly when the requested
- timeout expires (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- With the previous coding, a steady stream of non-wait-terminating
- interrupts could delay return from <function>WaitLatch()</function>
- indefinitely. This has been shown to be a problem for the autovacuum
- launcher process, and might cause trouble elsewhere as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corruption of internal hash tables when out of memory
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent file descriptors for dropped tables from being held open past
- transaction end (Tom Lane)
- </para>
-
- <para>
- This should reduce problems with long-since-dropped tables continuing
- to occupy disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent database-wide crash and restart when a new child process is
- unable to create a pipe for its latch (Tom Lane)
- </para>
-
- <para>
- Although the new process must fail, there is no good reason to force a
- database-wide restart, so avoid that. This improves robustness when
- the kernel is nearly out of file descriptors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid planner crash with joins to unflattened subqueries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of non-strict equivalence clauses above outer joins
- (Tom Lane)
- </para>
-
- <para>
- The planner could derive incorrect constraints from a clause equating
- a non-strict construct to something else, for example
- <literal>WHERE COALESCE(foo, 0) = 0</literal>
- when <literal>foo</literal> is coming from the nullable side of an outer join.
- 9.2 showed this type of error in more cases than previous releases,
- but the basic bug has been there for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>SELECT DISTINCT</command> with index-optimized
- <function>MIN</function>/<function>MAX</function> on an inheritance tree (Tom Lane)
- </para>
-
- <para>
- The planner would fail with <quote>failed to re-find MinMaxAggInfo
- record</quote> given this combination of factors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure the planner sees implicit and explicit casts as equivalent
- for all purposes, except in the minority of cases where there's
- actually a semantic difference (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include join clauses when considering whether partial indexes can be
- used for a query (Tom Lane)
- </para>
-
- <para>
- A strict join clause can be sufficient to establish an
- <replaceable>x</replaceable> <literal>IS NOT NULL</literal> predicate, for example.
- This fixes a planner regression in 9.2, since previous versions could
- make comparable deductions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit growth of planning time when there are many indexable join
- clauses for the same index (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's ability to prove exclusion constraints from
- equivalence classes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix partial-row matching in hashed subplans to handle cross-type cases
- correctly (Tom Lane)
- </para>
-
- <para>
- This affects multicolumn <literal>NOT IN</literal> subplans, such as
- <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</literal>
- when for instance <literal>b</literal> and <literal>y</literal> are <type>int4</type>
- and <type>int8</type> respectively. This mistake led to wrong answers
- or crashes depending on the specific datatypes involved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix btree mark/restore functions to handle array keys (Tom Lane)
- </para>
-
- <para>
- This oversight could result in wrong answers from merge joins whose
- inner side is an index scan using an
- <literal><replaceable>indexed_column</replaceable> =
- ANY(<replaceable>array</replaceable>)</literal> condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Revert patch for taking fewer snapshots (Tom Lane)
- </para>
-
- <para>
- The 9.2 change to reduce the number of snapshots taken during query
- execution led to some anomalous behaviors not seen in previous
- releases, because execution would proceed with a snapshot acquired
- before locking the tables used by the query. Thus, for example,
- a query would not be guaranteed to see updates committed by a
- preceding transaction even if that transaction had exclusive lock.
- We'll probably revisit this in future releases, but meanwhile put it
- back the way it was before 9.2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Acquire buffer lock when re-fetching the old tuple for an
- <literal>AFTER ROW UPDATE/DELETE</literal> trigger (Andres Freund)
- </para>
-
- <para>
- In very unusual circumstances, this oversight could result in passing
- incorrect data to a trigger <literal>WHEN</literal> condition, or to the
- precheck logic for a foreign-key enforcement trigger. That could
- result in a crash, or in an incorrect decision about whether to
- fire the trigger.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to handle inherited check
- constraints properly (Pavan Deolasee)
- </para>
-
- <para>
- This worked correctly in pre-8.4 releases, and now works correctly
- in 8.4 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER EXTENSION SET SCHEMA</command>'s failure to move some
- subsidiary objects into the new schema (&Aacute;lvaro Herrera, Dimitri
- Fontaine)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle <command>CREATE TABLE AS EXECUTE</command> correctly in extended query
- protocol (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't modify the input parse tree in <command>DROP RULE IF NOT
- EXISTS</command> and <command>DROP TRIGGER IF NOT EXISTS</command> (Tom Lane)
- </para>
-
- <para>
- This mistake would cause errors if a cached statement of one of these
- types was re-executed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to handle grants on tablespaces
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore incorrect <structname>pg_attribute</structname> entries for system
- columns for views (Tom Lane)
- </para>
-
- <para>
- Views do not have any system columns. However, we forgot to
- remove such entries when converting a table to a view. That's fixed
- properly for 9.3 and later, but in previous branches we need to defend
- against existing mis-converted views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rule printing to dump <literal>INSERT INTO <replaceable>table</replaceable>
- DEFAULT VALUES</literal> correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against stack overflow when there are too many
- <literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> clauses
- in a query (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent platform-dependent failures when dividing the minimum possible
- integer value by -1 (Xi Wang, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible access past end of string in date parsing
- (Hitoshi Harada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to advance XID epoch if XID wraparound happens during a
- checkpoint and <varname>wal_level</varname> is <literal>hot_standby</literal>
- (Tom Lane, Andres Freund)
- </para>
-
- <para>
- While this mistake had no particular impact on
- <productname>PostgreSQL</productname> itself, it was bad for
- applications that rely on <function>txid_current()</function> and related
- functions: the TXID value would appear to go backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_terminate_backend()</function> and
- <function>pg_cancel_backend()</function> to not throw error for a non-existent
- target process (Josh Kupershmidt)
- </para>
-
- <para>
- This case already worked as intended when called by a superuser,
- but not so much when called by ordinary users.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix display of
- <structname>pg_stat_replication</structname>.<structfield>sync_state</structfield> at a
- page boundary (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Produce an understandable error message if the length of the path name
- for a Unix-domain socket exceeds the platform-specific limit
- (Tom Lane, Andrew Dunstan)
- </para>
-
- <para>
- Formerly, this would result in something quite unhelpful, such as
- <quote>Non-recoverable failure in name resolution</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when sending composite column values to the client
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save some cycles by not searching for subtransaction locks at commit
- (Simon Riggs)
- </para>
-
- <para>
- In a transaction holding many exclusive locks, this useless activity
- could be quite costly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> more robust about reading the
- <filename>postmaster.pid</filename> file (Heikki Linnakangas)
- </para>
-
- <para>
- This fixes race conditions and possible file descriptor leakage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <application>psql</application> if incorrectly-encoded data
- is presented and the <varname>client_encoding</varname> setting is a
- client-only encoding, such as SJIS (Jiang Guiqing)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> dump <literal>SEQUENCE SET</literal> items in
- the data not pre-data section of the archive (Tom Lane)
- </para>
-
- <para>
- This fixes an undesirable inconsistency between the meanings of
- <option>--data-only</option> and <option>--section=data</option>, and also fixes
- dumping of sequences that are marked as extension configuration tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s handling of <command>DROP DATABASE</command>
- commands in <option>--clean</option> mode (Guillaume Lelarge)
- </para>
-
- <para>
- Beginning in 9.2.0, <literal>pg_dump --clean</literal> would issue a
- <command>DROP DATABASE</command> command, which was either useless or
- dangerous depending on the usage scenario. It no longer does that.
- This change also fixes the combination of <option>--clean</option> and
- <option>--create</option> to work sensibly, i.e., emit <command>DROP
- DATABASE</command> then <command>CREATE DATABASE</command> before reconnecting to the
- target database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> for views with circular dependencies and
- no relation options (Tom Lane)
- </para>
-
- <para>
- The previous fix to dump relation options when a view is
- involved in a circular dependency didn't work right for the case
- that the view has no options; it emitted <literal>ALTER VIEW foo
- SET ()</literal> which is invalid syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in the <filename>restore.sql</filename> script emitted by
- <application>pg_dump</application> in <literal>tar</literal> output format (Tom Lane)
- </para>
-
- <para>
- The script would fail outright on tables whose names include
- upper-case characters. Also, make the script capable of restoring
- data in <option>--inserts</option> mode as well as the regular COPY mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> to accept POSIX-conformant
- <literal>tar</literal> files (Brian Weaver, Tom Lane)
- </para>
-
- <para>
- The original coding of <application>pg_dump</application>'s <literal>tar</literal>
- output mode produced files that are not fully conformant with the
- POSIX standard. This has been corrected for version 9.3. This
- patch updates previous branches so that they will accept both the
- incorrect and the corrected formats, in hopes of avoiding
- compatibility problems when 9.3 comes out.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>tar</literal> files emitted by <application>pg_basebackup</application> to
- be POSIX conformant (Brian Weaver, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_resetxlog</application> to locate <filename>postmaster.pid</filename>
- correctly when given a relative path to the data directory (Tom Lane)
- </para>
-
- <para>
- This mistake could lead to <application>pg_resetxlog</application> not noticing
- that there is an active postmaster using the data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s <function>lo_import()</function> and
- <function>lo_export()</function> functions to report file I/O errors properly
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of nested structure pointer
- variables (Muhammad Usama)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s <function>ecpg_get_data</function> function to
- handle arrays properly (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <application>pg_upgrade</application> from trying to process TOAST tables
- for system catalogs (Bruce Momjian)
- </para>
-
- <para>
- This fixes an error seen when the <literal>information_schema</literal> has
- been dropped and recreated. Other failures were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_upgrade</application> performance by setting
- <varname>synchronous_commit</varname> to <literal>off</literal> in the new cluster
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/pageinspect</filename>'s btree page inspection
- functions take buffer locks while examining pages (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around unportable behavior of <literal>malloc(0)</literal> and
- <literal>realloc(NULL, 0)</literal> (Tom Lane)
- </para>
-
- <para>
- On platforms where these calls return <literal>NULL</literal>, some code
- mistakenly thought that meant out-of-memory.
- This is known to have broken <application>pg_dump</application> for databases
- containing no user-defined aggregates. There might be other cases
- as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <literal>make install</literal> for an extension creates the
- <filename>extension</filename> installation directory (C&eacute;dric Villemain)
- </para>
-
- <para>
- Previously, this step was missed if <varname>MODULEDIR</varname> was set in
- the extension's Makefile.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgxs</application> support for building loadable modules on AIX
- (Tom Lane)
- </para>
-
- <para>
- Building modules outside the original source tree didn't work on AIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012j
- for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
- Samoa, and portions of Brazil.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2-1">
- <title>Release 9.2.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.2.0.
- For information about new features in the 9.2 major release, see
- <xref linkend="release-9-2"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.2.1</title>
-
- <para>
- A dump/restore is not required for those running 9.2.X.
- </para>
-
- <para>
- However, you may need to perform <command>REINDEX</command> and/or
- <command>VACUUM</command> operations to recover from the effects of the data
- corruption bug described in the first changelog item below.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix persistence marking of shared buffers during WAL replay
- (Jeff Davis)
- </para>
-
- <para>
- This mistake can result in buffers not being written out during
- checkpoints, resulting in data corruption if the server later crashes
- without ever having written those buffers. Corruption can occur on
- any server following crash recovery, but it is significantly more
- likely to occur on standby slave servers since those perform much
- more WAL replay. There is a low probability of corruption of btree
- and GIN indexes. There is a much higher probability of corruption
- of table <quote>visibility maps</quote>, which might lead to wrong answers
- from index-only scans. Table data proper cannot be corrupted by this
- bug.
- </para>
-
- <para>
- While no index corruption due to this bug is known to have occurred
- in the field, as a precautionary measure it is recommended that
- production installations <command>REINDEX</command> all btree and GIN
- indexes at a convenient time after upgrading to 9.2.1.
- </para>
-
- <para>
- Also, it is recommended to perform a <command>VACUUM</command> of all tables
- while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any incorrect visibility map data. <link
- linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</varname></link>
- can be adjusted to reduce the performance impact of vacuuming, while
- causing it to take longer to finish.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible incorrect sorting of output from queries involving
- <literal>WHERE <replaceable>indexed_column</replaceable> IN
- (<replaceable>list_of_values</replaceable>)</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failure for queries involving <literal>GROUP BY</literal>
- expressions along with window functions and aggregates (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's assignment of executor parameters (Tom Lane)
- </para>
-
- <para>
- This error could result in wrong answers from queries that scan the
- same <literal>WITH</literal> subquery multiple times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's handling of join conditions in index scans (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selectivity estimation for text search queries involving
- prefixes, i.e. <replaceable>word</replaceable><literal>:*</literal> patterns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix delayed recognition of permissions changes (Tom Lane)
- </para>
-
- <para>
- A command that needed no locks other than ones its transaction already
- had might fail to notice a concurrent <command>GRANT</command> or
- <command>REVOKE</command> that committed since the start of its transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command> to not fail when a column is a domain over an
- array type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent PL/Perl from crashing if a recursive PL/Perl function is
- redefined while being executed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work around possible misoptimization in PL/Perl (Tom Lane)
- </para>
-
- <para>
- Some Linux distributions contain an incorrect version of
- <filename>pthread.h</filename> that results in incorrect compiled code in
- PL/Perl, leading to crashes if a PL/Perl function calls another one
- that throws an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove unnecessary dependency on <application>pg_config</application> from
- <application>pg_upgrade</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2012f
- for DST law changes in Fiji
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-2">
- <title>Release 9.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2012-09-10</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- This release has been largely focused on performance improvements, though
- new SQL features are not lacking. Work also continues in the area of
- replication support. Major enhancements include:
- </para>
-
- <itemizedlist>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <listitem>
- <para>
- Allow queries to retrieve data only from indexes, avoiding heap
- access (<firstterm>index-only scans</firstterm>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the planner to generate custom plans for specific parameter
- values even when using prepared statements
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the planner's ability to use nested loops with inner
- index scans
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow streaming replication slaves to forward data to other slaves
- (<link linkend="cascading-replication"><firstterm>cascading
- replication</firstterm></link>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- to make base backups from standby servers
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- tool to archive WAL file changes as they are written
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <link linkend="spgist">SP-GiST</link> (Space-Partitioned
- GiST) index access method
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="rangetypes">range data types</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="datatype-json"><type>JSON</type></link>
- data type
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link
- linkend="sql-createview"><literal>security_barrier</literal></link>
- option for views
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>libpq</application> connection strings to have the format of a
- <link linkend="libpq-connstring"><acronym>URI</acronym></link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="libpq-single-row-mode">single-row processing
- mode</link> to <application>libpq</application> for better handling of large
- result sets
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.2</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>, or use of
- <application>pg_upgrade</application>, is required for those wishing
- to migrate data from any previous release.
- </para>
-
- <para>
- Version 9.2 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>System Catalogs</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove the <structfield>spclocation</structfield> field from <link
- linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>
- (Magnus Hagander)
- </para>
-
- <para>
- This field was duplicative of the symbolic links that actually define
- tablespace locations, and thus risked errors of omission when moving
- a tablespace. This change allows tablespace directories to be moved
- while the server is down, by manually adjusting the symbolic links.
- To replace this field, we have added <link
- linkend="functions-info-catalog-table"><function>pg_tablespace_location()</function></link>
- to allow querying of the symbolic links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move <type>tsvector</type> most-common-element statistics to new
- <link linkend="view-pg-stats"><structname>pg_stats</structname></link> columns
- (Alexander Korotkov)
- </para>
-
- <para>
- Consult <structfield>most_common_elems</structfield>
- and <structfield>most_common_elem_freqs</structfield> for the data formerly
- available in <structfield>most_common_vals</structfield>
- and <structfield>most_common_freqs</structfield> for a <type>tsvector</type> column.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</literal>
- operator (Robert Haas)
- </para>
-
- <para>
- Users should now use <function>hstore(text, text)</function>. Since
- <productname>PostgreSQL</productname> 9.0, a warning message has been
- emitted when an operator named <literal>=&gt;</literal> is created because
- the <acronym>SQL</acronym> standard reserves that token for
- another use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <link
- linkend="functions-xml-processing"><function>xpath()</function></link>
- escapes special characters in string values (Florian Pflug)
- </para>
-
- <para>
- Without this it is possible for the result not to be valid
- <acronym>XML</acronym>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-admin-dbobject"><function>pg_relation_size()</function></link>
- and friends return NULL if the object does not exist (Phil Sorber)
- </para>
-
- <para>
- This prevents queries that call these functions from returning
- errors immediately after a concurrent <command>DROP</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-datetime-extract"><function>EXTRACT(EPOCH FROM
- <replaceable>timestamp without time zone</replaceable>)</function></link>
- measure the epoch from local midnight, not <acronym>UTC</acronym>
- midnight (Tom Lane)
- </para>
-
- <para>
- This change reverts an ill-considered change made in release 7.3.
- Measuring from <acronym>UTC</acronym> midnight was inconsistent
- because it made the result dependent on the <link
- linkend="guc-timezone"><varname>timezone</varname></link> setting, which
- computations for <type>timestamp without time zone</type> should not be.
- The previous behavior remains available by casting the input value
- to <type>timestamp with time zone</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly parse time strings with trailing <literal>yesterday</literal>,
- <literal>today</literal>, and <literal>tomorrow</literal> (Dean Rasheed)
- </para>
-
- <para>
- Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
- returned yesterday's date at midnight.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="functions-formatting"><function>to_date()</function></link> and
- <function>to_timestamp()</function> to wrap incomplete dates toward 2020
- (Bruce Momjian)
- </para>
-
- <para>
- Previously, supplied years and year masks of less than four digits
- wrapped inconsistently.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Modification</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent <link linkend="sql-alterdomain"><command>ALTER
- DOMAIN</command></link> from working on non-domain types (Peter
- Eisentraut)
- </para>
-
- <para>
- Owner and schema changes were previously possible on non-domain
- types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- No longer forcibly lowercase procedural language names in <link
- linkend="sql-createfunction"><command>CREATE FUNCTION</command></link>
- (Robert Haas)
- </para>
-
- <para>
- While unquoted language identifiers are still lowercased, strings
- and quoted identifiers are no longer forcibly down-cased.
- Thus for example <literal>CREATE FUNCTION ... LANGUAGE 'C'</literal>
- will no longer work; it must be spelled <literal>'c'</literal>, or better
- omit the quotes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change system-generated names of foreign key enforcement triggers
- (Tom Lane)
- </para>
-
- <para>
- This change ensures that the triggers fire in the correct order in
- some corner cases involving self-referential foreign key constraints.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Command-Line Tools</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Provide consistent backquote, variable
- expansion, and quoted substring behavior in <link
- linkend="app-psql"><application>psql</application></link> meta-command
- arguments (Tom Lane)
- </para>
-
- <para>
- Previously, such references were treated oddly when not separated by
- whitespace from adjacent text. For example <literal>'FOO'BAR</literal> was
- output as <literal>FOO BAR</literal> (unexpected insertion of a space) and
- <literal>FOO'BAR'BAZ</literal> was output unchanged (not removing the quotes
- as most would expect).
- </para>
- </listitem>
-
- <listitem>
- <para>
- No longer treat <link
- linkend="app-clusterdb"><application>clusterdb</application></link>
- table names as double-quoted; no longer treat <link
- linkend="app-reindexdb"><application>reindexdb</application></link> table
- and index names as double-quoted (Bruce Momjian)
- </para>
-
- <para>
- Users must now include double-quotes in the command arguments if
- quoting is wanted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="app-createuser"><application>createuser</application></link>
- no longer prompts for option settings by default (Peter Eisentraut)
- </para>
-
- <para>
- Use <option>--interactive</option> to obtain the old behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable prompting for the user name in <link
- linkend="app-dropuser"><application>dropuser</application></link> unless
- <option>--interactive</option> is specified (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add server parameters for specifying the <link
- linkend="guc-ssl-ca-file">locations of server-side
- <acronym>SSL</acronym> files</link> (Peter Eisentraut)
- </para>
-
- <para>
- This allows changing the names and locations of the files that were
- previously hard-coded as <filename>server.crt</filename>,
- <filename>server.key</filename>, <filename>root.crt</filename>, and
- <filename>root.crl</filename> in the data directory.
- <emphasis>The server will no longer examine <filename>root.crt</filename> or
- <filename>root.crl</filename> by default</emphasis>; to load these files, the
- associated parameters must be set to non-default values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <varname>silent_mode</varname> parameter (Heikki Linnakangas)
- </para>
-
- <para>
- Similar behavior can be obtained with <command>pg_ctl start
- -l postmaster.log</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <varname>wal_sender_delay</varname> parameter,
- as it is no longer needed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <varname>custom_variable_classes</varname> parameter (Tom Lane)
- </para>
-
- <para>
- The checking provided by this setting was dubious. Now any
- setting can be prefixed by any class name.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Rename <link
- linkend="monitoring-stats-views-table"><structname>pg_stat_activity</structname></link><structfield>.procpid</structfield>
- to <structfield>pid</structfield>, to match other system tables (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a separate <structfield>pg_stat_activity</structfield> column to
- report process state (Scott Mead, Magnus Hagander)
- </para>
-
- <para>
- The previous <structfield>query</structfield> and <structfield>query_start</structfield>
- values now remain available for an idle session, allowing enhanced
- analysis.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename <structname>pg_stat_activity</structname>.<structfield>current_query</structfield> to
- <structfield>query</structfield> because it is not cleared when the query
- completes (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change all <acronym>SQL</acronym>-level statistics timing values
- to be <type>float8</type> columns measured in milliseconds (Tom Lane)
- </para>
-
- <para>
- This change eliminates the designed-in assumption that the values
- are accurate to microseconds and no more (since the <type>float8</type>
- values can be fractional).
- The columns affected are
- <structname>pg_stat_user_functions</structname>.<structfield>total_time</structfield>,
- <structname>pg_stat_user_functions</structname>.<structfield>self_time</structfield>,
- <structname>pg_stat_xact_user_functions</structname>.<structfield>total_time</structfield>,
- and
- <structname>pg_stat_xact_user_functions</structname>.<structfield>self_time</structfield>.
- The statistics functions underlying these columns now also return
- <type>float8</type> milliseconds, rather than <type>bigint</type>
- microseconds.
- <filename>contrib/pg_stat_statements</filename>'
- <structfield>total_time</structfield> column is now also measured in
- milliseconds.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.2 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Performance</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Allow queries to retrieve data only from indexes, avoiding heap
- access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This feature is often called <firstterm>index-only scans</firstterm>.
- Heap access can be skipped for heap pages containing only tuples that
- are visible to all sessions, as reported by the visibility map; so
- the benefit applies mainly to mostly-static data. The visibility map
- was made crash-safe as a necessary part of implementing this feature.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <link linkend="spgist">SP-GiST</link> (Space-Partitioned
- GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
- Lane)
- </para>
-
- <para>
- SP-GiST is comparable to GiST in flexibility, but supports
- unbalanced partitioned search structures rather than balanced
- trees. For suitable problems, SP-GiST can be faster than GiST in both
- index build time and search time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow group commit to work effectively under heavy load (Peter
- Geoghegan, Simon Riggs, Heikki Linnakangas)
- </para>
-
- <para>
- Previously, batching of commits became ineffective as the write
- workload increased, because of internal lock contention.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow uncontended locks to be managed using a new
- fast-path lock mechanism (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce overhead of creating virtual transaction ID locks (Robert
- Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the overhead of serializable isolation level locks (Dan
- Ports)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve PowerPC and Itanium spinlock performance (Manabu Ori,
- Robert Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce overhead for shared invalidation cache messages (Robert
- Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move the frequently accessed members of the <structname>PGPROC</structname>
- shared memory array to a separate array (Pavan
- Deolasee, Heikki Linnakangas, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>COPY</command> performance by adding tuples to
- the heap in batches (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve GiST index performance for geometric data types by producing
- better trees with less memory allocation overhead (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve GiST index build times (Alexander Korotkov, Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow hint bits to be set sooner for temporary and unlogged tables
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow sorting to be performed by inlined,
- non-<acronym>SQL</acronym>-callable comparison functions (Peter
- Geoghegan, Robert Haas, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the number of CLOG buffers scale based on <link
- linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
- (Robert Haas, Simon Riggs, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of buffer pool scans that occur when tables or
- databases are dropped (Jeff Janes, Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of checkpointer's fsync-request queue
- when many tables are being dropped or truncated (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pass the safe number of file descriptors to child processes on Windows
- (Heikki Linnakangas)
- </para>
-
- <para>
- This allows Windows sessions to use more open file descriptors than
- before.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Process Management</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Create a dedicated background process to perform checkpoints (Simon
- Riggs)
- </para>
-
- <para>
- Formerly the background writer did both dirty-page writing and
- checkpointing. Separating this into two processes allows each goal
- to be accomplished more predictably.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve asynchronous commit behavior by waking the walwriter sooner
- (Simon Riggs)
- </para>
-
- <para>
- Previously, only <link
- linkend="guc-wal-writer-delay"><varname>wal_writer_delay</varname></link>
- triggered <acronym>WAL</acronym> flushing to disk; now filling a
- <acronym>WAL</acronym> buffer also triggers <acronym>WAL</acronym>
- writes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the bgwriter, walwriter, checkpointer, statistics collector,
- log collector, and archiver background processes to sleep more
- efficiently during periods of inactivity (Peter Geoghegan, Tom Lane)
- </para>
-
- <para>
- This series of changes reduces the frequency of process wake-ups when
- there is nothing to do, dramatically reducing power consumption on
- idle servers.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the planner to generate custom plans for specific parameter
- values even when using prepared statements
- (Tom Lane)
- </para>
-
- <para>
- In the past, a prepared statement always had a single
- <quote>generic</quote> plan that was used for all parameter values, which
- was frequently much inferior to the plans used for non-prepared
- statements containing explicit constant values. Now, the planner
- attempts to generate custom plans for specific parameter values.
- A generic plan will only be used after custom plans have repeatedly
- proven to provide no benefit. This change should eliminate the
- performance penalties formerly seen from use of prepared statements
- (including non-dynamic statements in PL/pgSQL).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the planner's ability to use nested loops with inner
- index scans (Tom Lane)
- </para>
-
- <para>
- The new <quote>parameterized path</quote> mechanism allows inner
- index scans to use values from relations that are more than one join
- level up from the scan. This can greatly improve performance in
- situations where semantic restrictions (such as outer joins) limit
- the allowed join orderings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the planning <acronym>API</acronym> for foreign data wrappers
- (Etsuro Fujita, Shigeru Hanada, Tom Lane)
- </para>
-
- <para>
- Wrappers can now provide multiple access <quote>paths</quote> for their
- tables, allowing more flexibility in join planning.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recognize self-contradictory restriction clauses for non-table
- relations (Tom Lane)
- </para>
-
- <para>
- This check is only performed when <link
- linkend="guc-constraint-exclusion"><varname>constraint_exclusion</varname></link>
- is <literal>on</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>indexed_col op ANY(ARRAY[...])</literal> conditions to be
- used in plain index scans and index-only scans (Tom Lane)
- </para>
-
- <para>
- Formerly such conditions could only be used in bitmap index scans.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <function>MIN</function>/<function>MAX</function> index optimizations on
- <type>boolean</type> columns (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Account for set-returning functions in <command>SELECT</command> target
- lists when setting row count estimates (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to handle indexes with duplicated columns more reliably
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Collect and use element-frequency statistics for arrays (Alexander
- Korotkov, Tom Lane)
- </para>
-
- <para>
- This change improves selectivity estimation for the array
- <literal>&lt;@</literal>, <literal>&amp;&amp;</literal>, and
- <literal>@&gt;</literal> operators (array containment and overlaps).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow statistics to be collected for foreign tables
- (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve cost estimates for use of partial indexes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the planner's ability to use statistics for columns
- referenced in subqueries (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve statistical estimates for subqueries using
- <literal>DISTINCT</literal> (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Do not treat role names and <literal>samerole</literal> specified in <link
- linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- as automatically including superusers (Andrew Dunstan)
- </para>
-
- <para>
- This makes it easier to use <literal>reject</literal> lines with group roles.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <filename>pg_hba.conf</filename> processing to handle token
- parsing more consistently (Brendan Jurd, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
- </para>
-
- <para>
- This was done to more quickly detect misconfiguration.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make superuser privilege imply replication privilege (Noah Misch)
- </para>
-
- <para>
- This avoids the need to explicitly assign such privileges.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Attempt to log the current query string during a backend crash
- (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make logging of autovacuum I/O activity more verbose (Greg
- Smith, Noah Misch)
- </para>
-
- <para>
- This logging is triggered by <link
- linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <acronym>WAL</acronym> replay report failures sooner
- (Fujii Masao)
- </para>
-
- <para>
- There were some cases where failures were only reported once the
- server went into master mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-admin-backup"><function>pg_xlog_location_diff()</function></link>
- to simplify WAL location comparisons (Euler Taveira de Oliveira)
- </para>
-
- <para>
- This is useful for computing replication lag.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support configurable event log application names on Windows
- (MauMau, Magnus Hagander)
- </para>
-
- <para>
- This allows different instances to use the event log
- with different identifiers, by setting the <link
- linkend="guc-event-source"><varname>event_source</varname></link>
- server parameter, which is similar to how <link
- linkend="guc-syslog-ident"><varname>syslog_ident</varname></link> works.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <quote>unexpected EOF</quote> messages to <literal>DEBUG1</literal> level,
- except when there is an open transaction (Magnus Hagander)
- </para>
-
- <para>
- This change reduces log chatter caused by applications that close
- database connections ungracefully.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Statistical Views</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Track temporary file sizes and file counts in the <link
- linkend="pg-stat-database-view"><structname>pg_stat_database</structname></link>
- system view (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a deadlock counter to the <structname>pg_stat_database</structname>
- system view (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a server parameter <link
- linkend="guc-track-io-timing"><varname>track_io_timing</varname></link>
- to track I/O timings (Ants Aasma, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report checkpoint timing information in <link
- linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</structname></link>
- (Greg Smith, Peter Geoghegan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Silently ignore nonexistent schemas specified in <link
- linkend="guc-search-path"><varname>search_path</varname></link> (Tom Lane)
- </para>
-
- <para>
- This makes it more convenient to use generic path settings, which
- might include some schemas that don't exist in all databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow superusers to set <link
- linkend="guc-deadlock-timeout"><varname>deadlock_timeout</varname></link>
- per-session, not just per-cluster (Noah Misch)
- </para>
-
- <para>
- This allows <varname>deadlock_timeout</varname> to be reduced for
- transactions that are likely to be involved in a deadlock, thus
- detecting the failure more quickly. Alternatively, increasing the
- value can be used to reduce the chances of a session being chosen for
- cancellation due to a deadlock.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a server parameter <link
- linkend="guc-temp-file-limit"><varname>temp_file_limit</varname></link>
- to constrain temporary file space usage per session (Mark Kirkwood)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a superuser to <command>SET</command> an extension's
- superuser-only custom variable before loading the associated
- extension (Tom Lane)
- </para>
-
- <para>
- The system now remembers whether a <command>SET</command> was
- performed by a superuser, so that proper privilege checking can be
- done when the extension is loaded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="app-postmaster">postmaster</link> <option>-C</option>
- option to query configuration parameters (Bruce Momjian)
- </para>
-
- <para>
- This allows <application>pg_ctl</application> to better handle cases where
- <envar>PGDATA</envar> or <option>-D</option> points to a configuration-only
- directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Replace an empty locale name with the implied value in
- <command>CREATE DATABASE</command>
- (Tom Lane)
- </para>
-
- <para>
- This prevents cases where
- <structname>pg_database</structname>.<structfield>datcollate</structfield> or
- <structfield>datctype</structfield> could be interpreted differently after a
- server restart.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><filename>postgresql.conf</filename></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow multiple errors in <filename>postgresql.conf</filename>
- to be reported, rather than just the first one (Alexey Klyukin,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a reload of <filename>postgresql.conf</filename> to be
- processed by all sessions, even if there are some settings that
- are invalid for particular sessions (Alexey Klyukin)
- </para>
-
- <para>
- Previously, such not-valid-within-session values would cause all
- setting changes to be ignored by that session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an <literal>include_if_exists</literal> facility for configuration
- files (Greg Smith)
- </para>
-
- <para>
- This works the same as <literal>include</literal>, except that an error
- is not thrown if the file is missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Identify the server time zone during <application>initdb</application>, and set
- <filename>postgresql.conf</filename> entries
- <link linkend="guc-timezone"><varname>timezone</varname></link> and
- <link linkend="guc-log-timezone"><varname>log_timezone</varname></link>
- accordingly (Tom Lane)
- </para>
-
- <para>
- This avoids expensive time zone probes during server start.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="view-pg-settings"><structname>pg_settings</structname></link> to
- report <filename>postgresql.conf</filename> line numbers on Windows
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow streaming replication slaves to forward data to other slaves
- (<link linkend="cascading-replication"><firstterm>cascading
- replication</firstterm></link>) (Fujii Masao)
- </para>
-
- <para>
- Previously, only the master server could supply streaming
- replication log files to standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <link
- linkend="guc-synchronous-commit"><varname>synchronous_commit</varname></link>
- mode <literal>remote_write</literal> (Fujii Masao, Simon Riggs)
- </para>
-
- <para>
- This mode waits for the standby server to write transaction data to
- its own operating system, but does not wait for the data to be
- flushed to the standby's disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- tool to archive WAL file changes as they are written, rather
- than waiting for completed WAL files (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- to make base backups from standby servers (Jun Ishizuka, Fujii Masao)
- </para>
-
- <para>
- This feature lets the work of making new base backups be off-loaded
- from the primary server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow streaming of WAL files while <application>pg_basebackup</application>
- is performing a backup (Magnus Hagander)
- </para>
-
- <para>
- This allows passing of WAL files to the standby before they are
- discarded on the primary.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Cancel the running query if the client gets disconnected
- (Florian Pflug)
- </para>
-
- <para>
- If the backend detects loss of client connection during a query, it
- will now cancel the query rather than attempting to finish it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Retain column names at run time for row expressions
- (Andrew Dunstan, Tom Lane)
- </para>
-
- <para>
- This change allows better results when a row value is converted to
- <type>hstore</type> or <type>json</type> type: the fields of the resulting
- value will now have the expected names.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve column labels used for sub-<command>SELECT</command> results
- (Marti Raudsepp)
- </para>
-
- <para>
- Previously, the generic label <literal>?column?</literal> was used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve heuristics for determining the types of unknown values
- (Tom Lane)
- </para>
-
- <para>
- The longstanding rule that an unknown constant might have the
- same type as the value on the other side of the operator using it
- is now applied when considering polymorphic operators, not only
- for simple operator matches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Warn about creating casts to or from domain types (Robert Haas)
- </para>
-
- <para>
- Such casts have no effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a row fails a <literal>CHECK</literal> or <literal>NOT NULL</literal>
- constraint, show the row's contents as error detail (Jan
- Kundr&aacute;t)
- </para>
-
- <para>
- This should make it easier to identify which row is problematic
- when an insert or update is processing many rows.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Provide more reliable operation during concurrent
- <acronym>DDL</acronym> (Robert Haas, Noah Misch)
- </para>
-
- <para>
- This change adds locking that should eliminate <quote>cache lookup
- failed</quote> errors in many scenarios. Also, it is no longer possible
- to add relations to a schema that is being concurrently dropped, a
- scenario that formerly led to inconsistent system catalog contents.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>CONCURRENTLY</literal> option to <link
- linkend="sql-dropindex"><command>DROP INDEX</command></link>
- (Simon Riggs)
- </para>
-
- <para>
- This allows index removal without blocking other sessions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow foreign data wrappers to have per-column options (Shigeru Hanada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve pretty-printing of view definitions (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Constraints</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="ddl-constraints"><literal>CHECK</literal></link>
- constraints to be declared <literal>NOT VALID</literal> (&Aacute;lvaro
- Herrera)
- </para>
-
- <para>
- Adding a <literal>NOT VALID</literal> constraint does not cause the table to
- be scanned to verify that existing rows meet the constraint.
- Subsequently, newly added or updated rows are checked.
- Such constraints are ignored by the planner when considering
- <varname>constraint_exclusion</varname>, since it is not certain that all
- rows meet the constraint.
- </para>
-
- <para>
- The new <command>ALTER TABLE VALIDATE</command> command allows <literal>NOT
- VALID</literal> constraints to be checked for existing rows, after which
- they are converted into ordinary constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>CHECK</literal> constraints to be declared <literal>NO
- INHERIT</literal> (Nikhil Sontakke, Alex Hunsaker, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This makes them enforceable only on the parent table, not on
- child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the ability to <link linkend="sql-altertable">rename</link>
- constraints (Peter Eisentraut)
- </para>
- </listitem>
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><command>ALTER</command></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Reduce need to rebuild tables and indexes for certain <link
- linkend="sql-altertable"><command>ALTER TABLE</command></link>
- ... <literal>ALTER COLUMN TYPE</literal> operations (Noah Misch)
- </para>
-
- <para>
- Increasing the length limit for a <type>varchar</type> or <type>varbit</type>
- column, or removing the limit altogether, no longer requires a table
- rewrite. Similarly, increasing the allowable precision of a
- <type>numeric</type> column, or changing a column from constrained
- <type>numeric</type> to unconstrained <type>numeric</type>, no longer
- requires a table rewrite. Table rewrites are also avoided in similar
- cases involving the <type>interval</type>, <type>timestamp</type>, and
- <type>timestamptz</type> types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid having <link linkend="sql-altertable"><command>ALTER
- TABLE</command></link> revalidate foreign key constraints in some
- cases where it is not necessary (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>IF EXISTS</literal> options to some <command>ALTER</command>
- commands (Pavel Stehule)
- </para>
-
- <para>
- For example, <command>ALTER FOREIGN TABLE IF EXISTS foo RENAME
- TO bar</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-alterforeigndatawrapper"><command>ALTER
- FOREIGN DATA WRAPPER</command></link> ... <literal>RENAME</literal>
- and <link linkend="sql-alterserver"><command>ALTER
- SERVER</command></link> ... <literal>RENAME</literal> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-alterdomain"><command>ALTER
- DOMAIN</command></link> ... <literal>RENAME</literal> (Peter Eisentraut)
- </para>
-
- <para>
- You could already rename domains using <command>ALTER
- TYPE</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw an error for <command>ALTER DOMAIN</command> ... <literal>DROP
- CONSTRAINT</literal> on a nonexistent constraint (Peter Eisentraut)
- </para>
-
- <para>
- An <literal>IF EXISTS</literal> option has been added to provide the
- previous behavior.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sql-createtable"><command>CREATE TABLE</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
- tables, views, and composite types (Peter Eisentraut)
- </para>
-
- <para>
- For example, this allows a table to be created whose schema matches a
- view.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
- conflicts when copying index comments (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</literal>
- to handle <literal>WITH NO DATA</literal> and column name specifications
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Object Permissions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <link
- linkend="sql-createview"><literal>security_barrier</literal></link>
- option for views (KaiGai Kohei, Robert Haas)
- </para>
-
- <para>
- This option prevents optimizations that might allow view-protected
- data to be exposed to users, for example pushing a clause involving
- an insecure function into the <literal>WHERE</literal> clause of the view.
- Such views can be expected to perform more poorly than ordinary
- views.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a new <link
- linkend="sql-createfunction"><literal>LEAKPROOF</literal></link> function
- attribute to mark functions that can safely be pushed down
- into <literal>security_barrier</literal> views (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for privileges on data types (Peter Eisentraut)
- </para>
-
- <para>
- This adds support for the <acronym>SQL</acronym>-conforming
- <literal>USAGE</literal> privilege on types and domains. The intent is
- to be able to restrict which users can create dependencies on types,
- since such dependencies limit the owner's ability to alter the type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for <command>INSERT</command> privileges in <command>SELECT
- INTO</command> / <command>CREATE TABLE AS</command> (KaiGai Kohei)
- </para>
-
- <para>
- Because the object is being created by <command>SELECT INTO</command>
- or <command>CREATE TABLE AS</command>, the creator would ordinarily
- have insert permissions; but there are corner cases where this is not
- true, such as when <literal>ALTER DEFAULT PRIVILEGES</literal> has removed
- such permissions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Utility Operations</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="sql-vacuum"><command>VACUUM</command></link> to more
- easily skip pages that cannot be locked (Simon Riggs, Robert Haas)
- </para>
-
- <para>
- This change should greatly reduce the incidence of <command>VACUUM</command>
- getting <quote>stuck</quote> waiting for other sessions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-explain"><command>EXPLAIN</command></link>
- <literal>(BUFFERS)</literal> count blocks dirtied and written (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXPLAIN ANALYZE</command> report the number of rows
- rejected by filter steps (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
- time values are not wanted (Tomas Vondra)
- </para>
-
- <para>
- This is accomplished by setting the new <literal>TIMING</literal> option to
- <literal>FALSE</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <link linkend="rangetypes">range data types</link>
- (Jeff Davis, Tom Lane, Alexander Korotkov)
- </para>
-
- <para>
- A range data type stores a lower and upper bound belonging to its
- base data type. It supports operations like contains, overlaps, and
- intersection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="datatype-json"><type>JSON</type></link>
- data type (Robert Haas)
- </para>
-
- <para>
- This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
- data with proper validation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-json"><function>array_to_json()</function></link>
- and <function>row_to_json()</function> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="datatype-serial"><type>SMALLSERIAL</type></link>
- data type (Mike Pultz)
- </para>
-
- <para>
- This is like <type>SERIAL</type>, except it stores the sequence in
- a two-byte integer column (<type>int2</type>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createdomain">domains</link> to be
- declared <literal>NOT VALID</literal> (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This option can be set at domain creation time, or via <command>ALTER
- DOMAIN</command> ... <literal>ADD CONSTRAINT</literal> ... <literal>NOT
- VALID</literal>. <command>ALTER DOMAIN</command> ... <literal>VALIDATE
- CONSTRAINT</literal> fully validates the constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support more locale-specific formatting options for the <link
- linkend="datatype-money"><type>money</type></link> data type (Tom Lane)
- </para>
-
- <para>
- Specifically, honor all the POSIX options for ordering of the value,
- sign, and currency symbol in monetary output. Also, make sure that
- the thousands separator is only inserted to the left of the decimal
- point, as required by POSIX.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add bitwise <quote>and</quote>, <quote>or</quote>, and <quote>not</quote>
- operators for the <type>macaddr</type> data type (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-xml-processing"><function>xpath()</function></link> to
- return a single-element <acronym>XML</acronym> array when supplied a
- scalar value (Florian Pflug)
- </para>
-
- <para>
- Previously, it returned an empty array. This change will also
- cause <function>xpath_exists()</function> to return true, not false,
- for such expressions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <acronym>XML</acronym> error handling to be more robust
- (Florian Pflug)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow non-superusers to use <link
- linkend="functions-admin-signal"><function>pg_cancel_backend()</function></link>
- and <link
- linkend="functions-admin-signal"><function>pg_terminate_backend()</function></link>
- on other sessions belonging to the same user
- (Magnus Hagander, Josh Kupershmidt, Dan Farina)
- </para>
-
- <para>
- Previously only superusers were allowed to use these functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow importing and exporting of transaction snapshots (Joachim
- Wieland, Tom Lane)
- </para>
-
- <para>
- This allows multiple transactions to share identical views of the
- database state.
- Snapshots are exported via <link
- linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</function></link>
- and imported via <link linkend="sql-set-transaction"><command>SET
- TRANSACTION SNAPSHOT</command></link>. Only snapshots from
- currently-running transactions can be imported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <link
- linkend="functions-info-catalog-table"><literal>COLLATION
- FOR</literal></link> on expressions (Peter Eisentraut)
- </para>
-
- <para>
- This returns a string representing the collation of the expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</function></link>
- (Josh Kupershmidt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <type>numeric</type> variant of <link
- linkend="functions-admin-dbsize"><function>pg_size_pretty()</function></link>
- for use with <function>pg_xlog_location_diff()</function> (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link
- linkend="functions-info-session-table"><function>pg_trigger_depth()</function></link>
- function (Kevin Grittner)
- </para>
-
- <para>
- This reports the current trigger call depth.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-aggregate-table"><function>string_agg()</function></link>
- to process <type>bytea</type> values (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular expressions in which a back-reference occurs within
- a larger quantified subexpression (Tom Lane)
- </para>
-
- <para>
- For example, <literal>^(\w+)( \1)+$</literal>. Previous releases did not
- check that the back-reference actually matched the first occurrence.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title><link linkend="information-schema">Information Schema</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add information schema views
- <structname>role_udt_grants</structname>, <structname>udt_privileges</structname>,
- and <structname>user_defined_types</structname> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add composite-type attributes to the
- information schema <structname>element_types</structname> view
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <structfield>interval_type</structfield> columns in the information
- schema (Peter Eisentraut)
- </para>
-
- <para>
- Formerly these columns read as nulls.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement collation-related columns in the information schema
- <structname>attributes</structname>, <structname>columns</structname>,
- <structname>domains</structname>, and <structname>element_types</structname>
- views (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement the <structfield>with_hierarchy</structfield> column in the
- information schema <structname>table_privileges</structname> view (Peter
- Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add display of sequence <literal>USAGE</literal> privileges to information
- schema (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the information schema show default privileges (Peter
- Eisentraut)
- </para>
-
- <para>
- Previously, non-empty default permissions were not represented in the
- views.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow the PL/pgSQL <command>OPEN</command> cursor command to supply
- parameters by name (Yeb Havinga)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <command>GET STACKED DIAGNOSTICS</command> PL/pgSQL command
- to retrieve exception info (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up PL/pgSQL array assignment by caching type information
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance and memory consumption for long chains of
- <literal>ELSIF</literal> clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Output the function signature, not just the name, in PL/pgSQL
- error messages (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add PL/Python <acronym>SPI</acronym> cursor support (Jan
- Urbanski)
- </para>
-
- <para>
- This allows PL/Python to read partial result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add result metadata functions to PL/Python (Peter Eisentraut)
- </para>
-
- <para>
- Specifically, this adds result object functions
- <literal>.colnames</literal>, <literal>.coltypes</literal>, and
- <literal>.coltypmods</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove support for Python 2.2 (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="xfunc-sql">SQL</link> Server-Side Language</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Allow <acronym>SQL</acronym>-language functions to reference
- parameters by name (Matthew Draper)
- </para>
-
- <para>
- To use this, simply name the function arguments and then reference
- the argument names in the <acronym>SQL</acronym> function body.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="app-initdb"><application>initdb</application></link>
- options <option>--auth-local</option> and <option>--auth-host</option>
- (Peter Eisentraut)
- </para>
-
- <para>
- This allows separate control of <literal>local</literal> and
- <literal>host</literal> <filename>pg_hba.conf</filename> authentication
- settings. <option>--auth</option> still controls both.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--replication</option>/<option>--no-replication</option> flags to
- <link linkend="app-createuser"><application>createuser</application></link>
- to control replication permission (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the <option>--if-exists</option> option to <link
- linkend="app-dropdb"><application>dropdb</application></link> and <link
- linkend="app-dropuser"><application>dropuser</application></link> (Josh
- Kupershmidt)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give command-line tools the ability to specify the name of the
- database to connect to, and fall back to <literal>template1</literal>
- if a <literal>postgres</literal> database connection fails (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-psql"><application>psql</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a display mode to auto-expand output based on the
- display width (Peter Eisentraut)
- </para>
-
- <para>
- This adds the <literal>auto</literal> option to the <command>\x</command>
- command, which switches to the expanded mode when the normal
- output would be wider than the screen.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow inclusion of a script file that is named relative to the
- directory of the file from which it was invoked (Gurjeet Singh)
- </para>
-
- <para>
- This is done with a new command <command>\ir</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for non-<acronym>ASCII</acronym> characters in
- <application>psql</application> variable names (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for major-version-specific <filename>.psqlrc</filename> files
- (Bruce Momjian)
- </para>
-
- <para>
- <application>psql</application> already supported minor-version-specific
- <filename>.psqlrc</filename> files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide environment variable overrides for <application>psql</application>
- history and startup file locations (Andrew Dunstan)
- </para>
-
- <para>
- <envar>PSQL_HISTORY</envar> and <envar>PSQLRC</envar> now
- determine these file names if set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <command>\setenv</command> command to modify
- the environment variables passed to child processes (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Name <application>psql</application>'s temporary editor files with a
- <filename>.sql</filename> extension (Peter Eisentraut)
- </para>
-
- <para>
- This allows extension-sensitive editors to select the right mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> to use zero-byte field and record
- separators (Peter Eisentraut)
- </para>
-
- <para>
- Various shell tools use zero-byte (NUL) separators,
- e.g. <application>find</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <command>\timing</command> option report times for
- failed queries (Magnus Hagander)
- </para>
-
- <para>
- Previously times were reported only for successful queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unify and tighten <application>psql</application>'s treatment of <command>\copy</command>
- and SQL <command>COPY</command> (Noah Misch)
- </para>
-
- <para>
- This fix makes failure behavior more predictable and honors
- <command>\set ON_ERROR_ROLLBACK</command>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Informational Commands</title>
-
- <itemizedlist>
- <listitem>
- <para>
- Make <command>\d</command> on a sequence show the
- table/column name owning it (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show statistics target for columns in <command>\d+</command> (Magnus
- Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show role password expiration dates in <command>\du</command>
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Display comments for casts, conversions, domains, and languages
- (Josh Kupershmidt)
- </para>
-
- <para>
- These are included in the output of <command>\dC+</command>,
- <command>\dc+</command>, <command>\dD+</command>, and <command>\dL</command> respectively.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
- objects (Josh Kupershmidt)
- </para>
-
- <para>
- These are included in the output of <command>\des+</command>,
- <command>\det+</command>, and <command>\dew+</command> for foreign servers, foreign
- tables, and foreign data wrappers respectively.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>\dd</command> to display comments only for object types
- without their own backslash command (Josh Kupershmidt)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Tab Completion</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- In <application>psql</application> tab completion, complete <acronym>SQL</acronym>
- keywords in either upper or lower case according to the new <link
- linkend="app-psql-variables"><literal>COMP_KEYWORD_CASE</literal></link>
- setting (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add tab completion support for
- <command>EXECUTE</command> (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow tab completion of role references in
- <command>GRANT</command>/<command>REVOKE</command> (Peter
- Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow tab completion of file names to supply quotes, when necessary
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change tab completion support for
- <command>TABLE</command> to also include views (Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add an <option>--exclude-table-data</option> option to
- <application>pg_dump</application> (Andrew Dunstan)
- </para>
-
- <para>
- This allows dumping of a table's definition but not its data,
- on a per-table basis.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <option>--section</option> option to <application>pg_dump</application>
- and <application>pg_restore</application> (Andrew Dunstan)
- </para>
-
- <para>
- Valid values are <literal>pre-data</literal>, <literal>data</literal>,
- and <literal>post-data</literal>. The option can be
- given more than once to select two or more sections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link> dump all
- roles first, then all configuration settings on roles (Phil Sorber)
- </para>
-
- <para>
- This allows a role's configuration settings to mention other
- roles without generating an error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_dumpall</application> to avoid errors if the
- <literal>postgres</literal> database is missing in the new cluster
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Dump foreign server user mappings in user name order (Peter
- Eisentraut)
- </para>
-
- <para>
- This helps produce deterministic dump files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Dump operators in a predictable order (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten rules for when extension configuration tables are dumped
- by <application>pg_dump</application> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> emit more useful dependency
- information (Tom Lane)
- </para>
-
- <para>
- The dependency links included in archive-format dumps were formerly
- of very limited use, because they frequently referenced objects that
- appeared nowhere in the dump. Now they represent actual dependencies
- (possibly indirect) among the dumped objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>'s performance when dumping many
- database objects (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title><link linkend="libpq"><application>libpq</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <application>libpq</application> connection strings to have the format of a
- <link linkend="libpq-connstring"><acronym>URI</acronym></link>
- (Alexander Shulgin)
- </para>
-
- <para>
- The syntax begins with <literal>postgres://</literal>. This can allow
- applications to avoid implementing their own parser for URIs
- representing database connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="libpq-connect-sslcompression">connection
- option</link> to disable <acronym>SSL</acronym> compression
- (Laurenz Albe)
- </para>
-
- <para>
- This can be used to remove the overhead of <acronym>SSL</acronym>
- compression on fast networks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="libpq-single-row-mode">single-row processing
- mode</link> for better handling of large result sets
- (Kyotaro Horiguchi, Marko Kreen)
- </para>
-
- <para>
- Previously, <application>libpq</application> always collected the entire query
- result in memory before passing it back to the application.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>const</literal> qualifiers to the declarations of the functions
- <function>PQconnectdbParams</function>, <function>PQconnectStartParams</function>,
- and <function>PQpingParams</function> (Lionel Elie Mamane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the <filename>.pgpass</filename> file to include escaped characters
- in the password field (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make library functions use <function>abort()</function> instead of
- <function>exit()</function> when it is necessary to terminate the process
- (Peter Eisentraut)
- </para>
-
- <para>
- This choice does not interfere with the normal exit codes used by the
- program, and generates a signal that can be caught by the caller.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove dead ports (Peter Eisentraut)
- </para>
-
- <para>
- The following platforms are no longer supported: dgux,
- nextstep, sunos4, svr4, ultrix4, univel, bsdi.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for building with <link linkend="install-windows">MS
- Visual Studio 2010</link> (Brar Piening)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install <filename>plpgsql.h</filename> into <filename>include/server</filename> during installation
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the latch facility to include detection of postmaster death
- (Peter Geoghegan, Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This eliminates one of the main reasons that background processes
- formerly had to wake up to poll for events.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use C flexible array members, where supported (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the concurrent transaction regression tests
- (<application>isolationtester</application>) (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify <application>thread_test</application> to create its test files in
- the current directory, rather than <filename>/tmp</filename> (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve flex and bison warning and error reporting (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add memory barrier support (Robert Haas)
- </para>
-
- <para>
- This is currently unused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Modify pgindent to use a typedef file (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a hook for processing messages due to be sent to the server
- log (Martin Pihlak)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add object access hooks for <command>DROP</command> commands
- (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralize <command>DROP</command> handling for some object types
- (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <application>pg_upgrade</application> test suite (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync regular expression code with <acronym>TCL</acronym> 8.5.11
- and improve internal processing (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move <acronym>CRC</acronym> tables to libpgport, and provide them
- in a separate include file (Daniel Farina)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add options to <application>git_changelog</application> for use in major
- release note creation (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Linux's <filename>/proc/self/oom_score_adj</filename> API (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve efficiency of <link linkend="dblink">dblink</link> by using
- libpq's new single-row processing mode (Kyotaro Horiguchi, Marko
- Kreen)
- </para>
-
- <para>
- This improvement does not apply to
- <function>dblink_send_query()</function>/<function>dblink_get_result()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>force_not_null</literal> option in <link
- linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement dry-run mode for <link
- linkend="pgarchivecleanup"><application>pg_archivecleanup</application></link>
- (Gabriele Bartolini)
- </para>
-
- <para>
- This only outputs the names of files to be deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <link linkend="pgbench">pgbench</link> switches
- <option>--unlogged-tables</option>, <option>--tablespace</option>, and
- <option>--index-tablespace</option> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <link
- linkend="pgtestfsync"><application>pg_test_fsync</application></link> to test
- for a fixed amount of time, rather than a fixed number of cycles
- (Bruce Momjian)
- </para>
-
- <para>
- The <option>-o</option>/cycles option was removed, and
- <option>-s</option>/seconds added.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link
- linkend="pgtesttiming"><application>pg_test_timing</application></link>
- utility to measure clock monotonicity and timing overhead (Ants
- Aasma, Greg Smith)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="tcn">tcn</link> (triggered change notification)
- module to generate <command>NOTIFY</command> events on table changes
- (Kevin Grittner)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Adjust <application>pg_upgrade</application> environment variables (Bruce
- Momjian)
- </para>
-
- <para>
- Rename data, bin, and port environment
- variables to begin with <literal>PG</literal>, and support
- <envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
- <envar>PGPORT</envar>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overhaul <application>pg_upgrade</application> logging and failure reporting
- (Bruce Momjian)
- </para>
-
- <para>
- Create four append-only log files, and delete them on success.
- Add <option>-r</option>/<option>--retain</option> option to unconditionally
- retain these files. Also remove <application>pg_upgrade</application> options
- <option>-g</option>/<option>-G</option>/<option>-l</option> options as unnecessary,
- and tighten log file permissions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> create a script to incrementally
- generate more accurate optimizer statistics (Bruce Momjian)
- </para>
-
- <para>
- This reduces the time needed to generate minimal cluster statistics
- after an upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to upgrade an old cluster that
- does not have a <literal>postgres</literal> database (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to handle cases where some
- old or new databases are missing, as long as they are empty
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to handle configuration-only
- directory installations (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, add <option>-o</option>/<option>-O</option>
- options to pass parameters to the servers (Bruce Momjian)
- </para>
-
- <para>
- This is useful for configuration-only directory installs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>pg_upgrade</application> to use port 50432 by default
- (Bruce Momjian)
- </para>
-
- <para>
- This helps avoid unintended client connections during the upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce cluster locking in <application>pg_upgrade</application> (Bruce
- Momjian)
- </para>
-
- <para>
- Specifically, only lock the old cluster if link mode is used,
- and do it right after the schema is restored.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="pgstatstatements"><application>pg_stat_statements</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <application>pg_stat_statements</application> to aggregate similar
- queries via SQL text normalization (Peter Geoghegan, Tom Lane)
- </para>
-
- <para>
- Users with applications that use non-parameterized SQL will now
- be able to monitor query performance without detailed log analysis.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add dirtied and written block counts and read/write times to
- <application>pg_stat_statements</application> (Robert Haas, Ants Aasma)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <application>pg_stat_statements</application> from double-counting
- <command>PREPARE</command> and <command>EXECUTE</command> commands
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="sepgsql">sepgsql</link></title>
-
- <itemizedlist>
- <listitem>
- <para>
- Support <literal>SECURITY LABEL</literal> on global objects (KaiGai
- Kohei, Robert Haas)
- </para>
-
- <para>
- Specifically, add security labels to databases,
- tablespaces, and roles.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow sepgsql to honor database labels (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform sepgsql permission checks during the creation of various
- objects (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>sepgsql_setcon()</function> and related functions to control
- the sepgsql security domain (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a user space access cache to sepgsql to improve performance
- (KaiGai Kohei)
- </para>
- </listitem>
-
- </itemizedlist>
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Documentation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a rule to optionally build HTML documentation using the
- stylesheet from the website (Magnus Hagander)
- </para>
-
- <para>
- Use <command>gmake STYLE=website draft</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>EXPLAIN</command> documentation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document that user/database names are preserved with double-quoting
- by command-line tools like <application>vacuumdb</application> (Bruce
- Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Document the actual string returned by the client for MD5
- authentication (Cyan Ogilvie)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deprecate use of <literal>GLOBAL</literal> and <literal>LOCAL</literal> in
- <command>CREATE TEMP TABLE</command> (Noah Misch)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> has long treated these keyword as no-ops,
- and continues to do so; but in future they might mean what the SQL
- standard says they mean, so applications should avoid using them.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-9.3.sgml b/doc/src/sgml/release-9.3.sgml
deleted file mode 100644
index 3575cb5d76d..00000000000
--- a/doc/src/sgml/release-9.3.sgml
+++ /dev/null
@@ -1,14551 +0,0 @@
-<!-- doc/src/sgml/release-9.3.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-3-25">
- <title>Release 9.3.25</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.24.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname>
- release in the 9.3.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.25</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.23,
- see <xref linkend="release-9-3-23"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support building on Windows with Visual Studio 2015 or Visual Studio 2017
- (Michael Paquier, Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide <literal>ALLOCSET_DEFAULT_SIZES</literal> and sibling macros
- in back branches (Tom Lane)
- </para>
-
- <para>
- These macros have existed since 9.6, but there were requests to add
- them to older branches to allow extensions to rely on them without
- branch-specific coding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-24">
- <title>Release 9.3.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.23.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing
- updates for the 9.3.X release series shortly after September 2018.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.24</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.23,
- see <xref linkend="release-9-3-23"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, and text search objects
- were not schema-qualified when they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-23">
- <title>Release 9.3.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.22.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.23</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if the function marking mistakes mentioned in the first
- changelog entry below affect you, you will want to take steps to
- correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.22,
- see <xref linkend="release-9-3-22"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-22">
- <title>Release 9.3.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.21.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.22</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-21">
- <title>Release 9.3.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.20.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.21</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-20">
- <title>Release 9.3.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.19.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.20</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-parsing of the last line in a
- non-newline-terminated <filename>pg_hba.conf</filename> file
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s handling of out-of-scope cursor
- declarations with pointer or array variables (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-19">
- <title>Release 9.3.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.18.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.19</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <application>pg_restore</application> when using parallel mode and
- using a list file to select a subset of items to restore
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-18">
- <title>Release 9.3.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.17.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.18</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.16,
- see <xref linkend="release-9-3-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix concurrent locking of tuple update chains (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If several sessions concurrently lock a tuple update chain with
- nonconflicting lock modes using an old snapshot, and they all
- succeed, it was possible for some of them to nonetheless fail (and
- conclude there is no live tuple version) due to a race condition.
- This had consequences such as foreign-key checks failing to see a
- tuple that definitely exists but is being updated concurrently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential data corruption when freezing a tuple whose XMAX is a
- multixact with exactly one still-interesting member (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow window functions to be used in sub-<literal>SELECT</literal>s that
- are within the arguments of an aggregate function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, reset GSS/SASL and SSPI authentication
- state properly after a failed connection attempt (Michael Paquier)
- </para>
-
- <para>
- Failure to do this meant that when falling back from SSL to non-SSL
- connections, a GSS/SASL failure in the SSL attempt would always cause
- the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_restore</application> to
- emit <command>REFRESH MATERIALIZED VIEW</command> commands last (Tom Lane)
- </para>
-
- <para>
- This prevents errors during dump/restore when a materialized view
- refers to tables owned by a different user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to
- drop event triggers as expected (Tom Lane)
- </para>
-
- <para>
- It also now correctly assigns ownership of event triggers; before,
- they were restored as being owned by the superuser running the
- restore script.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of outer joins with empty constraints, such as the result
- of a <literal>NATURAL LEFT JOIN</literal> with no common columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, re-establish connections to remote
- servers after <command>ALTER SERVER</command> or <command>ALTER USER
- MAPPING</command> commands (Kyotaro Horiguchi)
- </para>
-
- <para>
- This ensures that option changes affecting connection parameters will
- be applied promptly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, allow cancellation of remote
- transaction control commands (Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows us to quickly escape a wait for an unresponsive
- remote server in many more cases than previously.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unescaped-braces issue in our build scripts for Microsoft MSVC,
- to avoid a warning or error from recent Perl versions (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-17">
- <title>Release 9.3.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.16.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.17</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.16,
- see <xref linkend="release-9-3-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-3-18"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore <application>libpq</application>'s recognition of
- the <envar>PGREQUIRESSL</envar> environment variable (Daniel Gustafsson)
- </para>
-
- <para>
- Processing of this environment variable was unintentionally dropped
- in <productname>PostgreSQL</productname> 9.3, but its documentation remained.
- This creates a security hazard, since users might be relying on the
- environment variable to force SSL-encrypted connections, but that
- would no longer be guaranteed. Restore handling of the variable,
- but give it lower priority than <envar>PGSSLMODE</envar>, to avoid
- breaking configurations that work correctly with post-9.3 code.
- (CVE-2017-7485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s extraction of trigrams from regular
- expressions (Tom Lane)
- </para>
-
- <para>
- In some cases it would produce a broken data structure that could never
- match anything, leading to GIN or GiST indexscans that use a trigram
- index not finding any matches to the regular expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>,
- transmit query cancellation requests to the remote server
- (Michael Paquier, Etsuro Fujita)
- </para>
-
- <para>
- Previously, a local query cancellation request did not cause an
- already-sent remote query to terminate early. This is a back-patch
- of work originally done for 9.6.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane)
- </para>
-
- <para>
- This is a back-patch of work previously done in newer branches;
- it's needed since many platforms are adopting newer OpenSSL versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-16">
- <title>Release 9.3.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.15.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.16</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.15,
- see <xref linkend="release-9-3-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby feedback works correctly when it's enabled at
- standby server start (Ants Aasma, Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report correct object identity during <command>ALTER TEXT SEARCH
- CONFIGURATION</command> (Artur Zakirov)
- </para>
-
- <para>
- The wrong catalog OID was reported to extensions such as logical
- decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multicolumn expansion of <replaceable>foo</replaceable><literal>.*</literal> in
- an <command>UPDATE</command> source expression (Tom Lane)
- </para>
-
- <para>
- This led to <quote>UPDATE target count mismatch --- internal
- error</quote>. Now the syntax is understood as a whole-row variable,
- as it would be in other contexts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cached plans are invalidated by changes in foreign-table
- options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach <filename>contrib/dblink</filename> to ignore irrelevant server options
- when it uses a <filename>contrib/postgres_fdw</filename> foreign server as
- the source of connection options (Corey Huinker)
- </para>
-
- <para>
- Previously, if the foreign server object had options that were not
- also <application>libpq</application> connection options, an error occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-15">
- <title>Release 9.3.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.14.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.15</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted free space maps.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix WAL-logging of truncation of relation free space maps and
- visibility maps (Pavan Deolasee, Heikki Linnakangas)
- </para>
-
- <para>
- It was possible for these files to not be correctly restored during
- crash recovery, or to be written incorrectly on a standby server.
- Bogus entries in a free space map could lead to attempts to access
- pages that have been truncated away from the relation itself, typically
- producing errors like <quote>could not read block <replaceable>XXX</replaceable>:
- read only 0 of 8192 bytes</quote>. Checksum failures in the
- visibility map are also possible, if checksumming is enabled.
- </para>
-
- <para>
- Procedures for determining whether there is a problem and repairing it
- if so are discussed at
- <ulink url="https://wiki.postgresql.org/wiki/Free_Space_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>SELECT FOR UPDATE/SHARE</command> to correctly lock tuples that
- have been updated by a subsequently-aborted transaction
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- In 9.5 and later, the <command>SELECT</command> would sometimes fail to
- return such tuples at all. A failure has not been proven to occur in
- earlier releases, but might be possible with concurrent updates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress printing of zeroes for unmeasured times
- in <command>EXPLAIN</command> (Maksim Milyutin)
- </para>
-
- <para>
- Certain option combinations resulted in printing zero values for times
- that actually aren't ever measured in that combination. Our general
- policy in <command>EXPLAIN</command> is not to print such fields at all, so
- do that consistently in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, never dump range constructor functions
- (Tom Lane)
- </para>
-
- <para>
- This oversight led to <application>pg_upgrade</application> failures with
- extensions containing range types, due to duplicate creation of the
- constructor functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_xlogdump</application>, retry opening new WAL segments when
- using <option>--follow</option> option (Magnus Hagander)
- </para>
-
- <para>
- This allows for a possible delay in the server's creation of the next
- segment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_xlogdump</application> to cope with a WAL file that begins
- with a continuation record spanning more than one page (Pavan
- Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update Windows time zone mapping to recognize some time zone names
- added in recent Windows versions (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-14">
- <title>Release 9.3.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.13.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.14</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <function>pg_get_expr()</function> when inconsistent
- values are passed to it (Michael Paquier, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not run the planner on the query contained in <literal>CREATE
- MATERIALIZED VIEW</literal> or <literal>CREATE TABLE AS</literal>
- when <literal>WITH NO DATA</literal> is specified (Michael Paquier,
- Tom Lane)
- </para>
-
- <para>
- This avoids some unnecessary failure conditions, for example if a
- stable function invoked by the materialized view depends on a table
- that doesn't exist yet.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hint bit update during WAL replay of row locking operations
- (Andres Freund)
- </para>
-
- <para>
- The only known consequence of this problem is that row locks held by
- a prepared, but uncommitted, transaction might fail to be enforced
- after a crash and restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary <quote>could not serialize access</quote> errors when
- acquiring <literal>FOR KEY SHARE</literal> row locks in serializable mode
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <literal>postgres -C</literal> when the specified variable
- has a null string value (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that backends see up-to-date statistics for shared catalogs
- (Tom Lane)
- </para>
-
- <para>
- The statistics collector failed to update the statistics file for
- shared catalogs after a request from a regular backend. This problem
- was partially masked because the autovacuum launcher regularly makes
- requests that did cause such updates; however, it became obvious with
- autovacuum disabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid redundant writes of the statistics files when multiple
- backends request updates close together (Tom Lane, Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid canceling hot-standby queries during <command>VACUUM FREEZE</command>
- (Simon Riggs, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- <command>VACUUM FREEZE</command> on an otherwise-idle master server could
- result in unnecessary cancellations of queries on its standby
- servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible failure when vacuuming multixact IDs in an
- installation that has been pg_upgrade'd from pre-9.3 (Andrew Gierth,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- The usual symptom of this bug is errors
- like <quote>MultiXactId <replaceable>NNN</replaceable> has not been created
- yet -- apparent wraparound</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop in GiST index build for geometric columns
- containing NaN component values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> with both <option>-c</option> and <option>-C</option>
- options, avoid emitting an unwanted <literal>CREATE SCHEMA public</literal>
- command (David Johnston, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <systemitem>SIGTERM</systemitem>/control-C in
- parallel <application>pg_dump</application> and <application>pg_restore</application> (Tom
- Lane)
- </para>
-
- <para>
- Make sure that the worker processes will exit promptly, and also arrange
- to send query-cancel requests to the connected backends, in case they
- are doing something long-running such as a <command>CREATE INDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error reporting in parallel <application>pg_dump</application>
- and <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- Previously, errors reported by <application>pg_dump</application>
- or <application>pg_restore</application> worker processes might never make it to
- the user's console, because the messages went through the master
- process, and there were various deadlock scenarios that would prevent
- the master process from passing on the messages. Instead, just print
- everything to <literal>stderr</literal>. In some cases this will result in
- duplicate messages (for instance, if all the workers report a server
- shutdown), but that seems better than no message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that parallel <application>pg_dump</application>
- or <application>pg_restore</application> on Windows will shut down properly
- after an error (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, it would report the error, but then just sit until
- manually stopped by the user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> behave better when built without zlib
- support (Kyotaro Horiguchi)
- </para>
-
- <para>
- It didn't work right for parallel dumps, and emitted some rather
- pointless warnings in other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more predictable about reporting <quote>statement timeout</quote>
- versus <quote>lock timeout</quote> (Tom Lane)
- </para>
-
- <para>
- On heavily loaded machines, the regression tests sometimes failed due
- to reporting <quote>lock timeout</quote> even though the statement timeout
- should have occurred first.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-13">
- <title>Release 9.3.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.12.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.13</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of equivalence-class tests in multilevel
- nestloop plans (Tom Lane)
- </para>
-
- <para>
- Given a three-or-more-way equivalence class of variables, such
- as <literal>X.X = Y.Y = Z.Z</literal>, it was possible for the planner to omit
- some of the tests needed to enforce that all the variables are actually
- equal, leading to join rows being output that didn't satisfy
- the <literal>WHERE</literal> clauses. For various reasons, erroneous plans
- were seldom selected in practice, so that this bug has gone undetected
- for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to not fail when new-cluster TOAST rules
- differ from old (Tom Lane)
- </para>
-
- <para>
- <application>pg_upgrade</application> had special-case code to handle the
- situation where the new <productname>PostgreSQL</productname> version thinks that
- a table should have a TOAST table while the old version did not. That
- code was broken, so remove it, and instead do nothing in such cases;
- there seems no reason to believe that we can't get along fine without
- a TOAST table if that was okay according to the old version's rules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f4f4f6990] 2016-04-15 16:49:48 -0400
-Branch: REL9_2_STABLE [d7dbc882d] 2016-04-15 16:49:48 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [992df9658] 2016-04-16 10:42:07 -0400
-Branch: REL9_2_STABLE [9008922bf] 2016-04-16 10:41:57 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [35166fd76] 2016-04-18 13:19:52 -0400
-Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400
--->
- <para>
- Back-port 9.4-era memory-barrier code changes into 9.2 and 9.3 (Tom Lane)
- </para>
-
- <para>
- These changes were not originally needed in pre-9.4 branches, but we
- recently back-patched a fix that expected the barrier code to work
- properly. Only IA64 (when using icc), HPPA, and Alpha platforms are
- affected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the number of SysV semaphores used by a build configured with
- <option>--disable-spinlocks</option> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>putenv()</function> to work properly with Visual Studio 2013
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-12">
- <title>Release 9.3.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.11.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.12</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, skip creating a deletion script when
- the new data directory is inside the old data directory (Bruce
- Momjian)
- </para>
-
- <para>
- Blind application of the script in such cases would result in loss of
- the new data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-11">
- <title>Release 9.3.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.10.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.11</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform an immediate shutdown if the <filename>postmaster.pid</filename> file
- is removed (Tom Lane)
- </para>
-
- <para>
- The postmaster now checks every minute or so
- that <filename>postmaster.pid</filename> is still there and still contains its
- own PID. If not, it performs an immediate shutdown, as though it had
- received <systemitem>SIGQUIT</systemitem>. The main motivation for this change
- is to ensure that failed buildfarm runs will get cleaned up without
- manual intervention; but it also serves to limit the bad effects if a
- DBA forcibly removes <filename>postmaster.pid</filename> and then starts a new
- postmaster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>SERIALIZABLE</literal> transaction isolation mode, serialization
- anomalies could be missed due to race conditions during insertions
- (Kevin Grittner, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to emit appropriate WAL records when doing <literal>ALTER
- TABLE ... SET TABLESPACE</literal> for unlogged relations (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- Even though the relation's data is unlogged, the move must be logged or
- the relation will be inaccessible after a standby is promoted to master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misinitialization of unlogged relations at the end of
- crash recovery (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure walsender slots are fully re-initialized when being re-used
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to reconstruct inherited check
- constraints properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to change ownership of composite types
- properly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> and <command>ALTER OWNER</command> to correctly
- update granted-permissions lists when changing owners of data types,
- foreign data wrappers, or foreign servers (Bruce Momjian,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to ignore foreign user mappings,
- rather than fail (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash after doing query rewrite for an updatable view
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's handling of <literal>LATERAL</literal> references (Tom
- Lane)
- </para>
-
- <para>
- This fixes some corner cases that led to <quote>failed to build any
- N-way joins</quote> or <quote>could not devise a query plan</quote> planner
- failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more defenses against bad planner cost estimates for GIN index
- scans when the index's internal statistics are very out-of-date
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make planner cope with hypothetical GIN indexes suggested by an index
- advisor plug-in (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up generation of unique table aliases in <command>EXPLAIN</command> and
- rule dumping, and ensure that generated aliases do not
- exceed <literal>NAMEDATALEN</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of whole-row Vars in <literal>ROW()</literal>
- and <literal>VALUES()</literal> lists (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible internal overflow in <type>numeric</type> division
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix enforcement of restrictions inside parentheses within regular
- expression lookahead constraints (Tom Lane)
- </para>
-
- <para>
- Lookahead constraints aren't allowed to contain backrefs, and
- parentheses within them are always considered non-capturing, according
- to the manual. However, the code failed to handle these cases properly
- inside a parenthesized subexpression, and would give unexpected
- results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Conversion of regular expressions to indexscan bounds could produce
- incorrect bounds from regexps containing lookahead constraints
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular-expression compiler to handle loops of constraint arcs
- (Tom Lane)
- </para>
-
- <para>
- The code added for CVE-2007-4772 was both incomplete, in that it didn't
- handle loops involving more than one state, and incorrect, in that it
- could cause assertion failures (though there seem to be no bad
- consequences of that in a non-assert build). Multi-state loops would
- cause the compiler to run until the query was canceled or it reached
- the too-many-states error condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve memory-usage accounting in regular-expression compiler
- (Tom Lane)
- </para>
-
- <para>
- This causes the code to emit <quote>regular expression is too
- complex</quote> errors in some cases that previously used unreasonable
- amounts of time and memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of regular-expression compiler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure the shared-memory mapping handle gets closed in
- child processes that don't need it (Tom Lane, Amit Kapila)
- </para>
-
- <para>
- This oversight resulted in failure to recover from crashes
- whenever <varname>logging_collector</varname> is turned on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to detect socket EOF in non-blocking mode on
- Windows (Tom Lane)
- </para>
-
- <para>
- It's not entirely clear whether this problem can happen in pre-9.5
- branches, but if it did, the symptom would be that a walsender process
- would wait indefinitely rather than noticing a loss of connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, ensure that <application>libreadline</application>'s idea
- of the screen size is updated when the terminal window size changes
- (Merlin Moncure)
- </para>
-
- <para>
- Previously, <application>libreadline</application> did not notice if the window
- was resized during query output, leading to strange behavior during
- later input of multiline queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>psql</application>'s <literal>\c</literal> command
- when previous connection was via Unix socket and command specifies a
- new hostname and same username (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, test child process status directly
- rather than relying on heuristics (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application> relied on an assumption that the new
- postmaster would always create <filename>postmaster.pid</filename> within five
- seconds. But that can fail on heavily-loaded systems,
- causing <application>pg_ctl</application> to report incorrectly that the
- postmaster failed to start.
- </para>
-
- <para>
- Except on Windows, this change also means that a <literal>pg_ctl start
- -w</literal> done immediately after another such command will now reliably
- fail, whereas previously it would report success if done within two
- seconds of the first command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, don't attempt to use a wildcard listen
- address to connect to the postmaster (Kondo Yuta)
- </para>
-
- <para>
- On Windows, <application>pg_ctl</application> would fail to detect postmaster
- startup if <varname>listen_addresses</varname> is set to <literal>0.0.0.0</literal>
- or <literal>::</literal>, because it would try to use that value verbatim as
- the address to connect to, which doesn't work. Instead assume
- that <literal>127.0.0.1</literal> or <literal>::1</literal>, respectively, is the
- right thing to use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> and <application>pg_basebackup</application>, adopt
- the GNU convention for handling tar-archive members exceeding 8GB
- (Tom Lane)
- </para>
-
- <para>
- The POSIX standard for <literal>tar</literal> file format does not allow
- archive member files to exceed 8GB, but most modern implementations
- of <application>tar</application> support an extension that fixes that. Adopt
- this extension so that <application>pg_dump</application> with <option>-Ft</option> no
- longer fails on tables with more than 8GB of data, and so
- that <application>pg_basebackup</application> can handle files larger than 8GB.
- In addition, fix some portability issues that could cause failures for
- members between 4GB and 8GB on some platforms. Potentially these
- problems could cause unrecoverable data loss due to unreadable backup
- files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that relation option values are properly quoted
- in <application>pg_dump</application> (Kouhei Sutou, Tom Lane)
- </para>
-
- <para>
- A reloption value that isn't a simple identifier or number could lead
- to dump/reload failures due to syntax errors in CREATE statements
- issued by <application>pg_dump</application>. This is not an issue with any
- reloption currently supported by core <productname>PostgreSQL</productname>, but
- extensions could allow reloptions that cause the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid repeated password prompts during parallel <application>pg_dump</application>
- (Zeus Kronion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s file-copying code to handle errors
- properly on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to localize messages emitted
- by <application>pg_receivexlog</application> and <application>pg_recvlogical</application>
- (Ioseph Kim)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid dump/reload problems when using both <application>plpython2</application>
- and <application>plpython3</application> (Tom Lane)
- </para>
-
- <para>
- In principle, both versions of <application>PL/Python</application> can be used in
- the same database, though not in the same session (because the two
- versions of <application>libpython</application> cannot safely be used concurrently).
- However, <application>pg_restore</application> and <application>pg_upgrade</application> both
- do things that can fall foul of the same-session restriction. Work
- around that by changing the timing of the check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> regression tests to pass with Python 3.5
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature clearing of <application>libpq</application>'s input buffer when
- socket EOF is seen (Tom Lane)
- </para>
-
- <para>
- This mistake caused <application>libpq</application> to sometimes not report the
- backend's final error message before reporting <quote>server closed the
- connection unexpectedly</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory situations
- (Michael Paquier, Amit Kapila, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix order of arguments
- in <application>ecpg</application>-generated <literal>typedef</literal> statements
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>%g</literal> not <literal>%f</literal> format
- in <application>ecpg</application>'s <function>PGTYPESnumeric_from_double()</function>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>hstore_to_json_loose()</function>'s test for whether
- an <type>hstore</type> value can be converted to a JSON number (Tom Lane)
- </para>
-
- <para>
- Previously this function could be fooled by non-alphanumeric trailing
- characters, leading to emitting syntactically-invalid JSON.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgcrypto</filename>'s <function>crypt()</function>
- function can be interrupted by query cancel (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <application>flex</application> versions later than 2.5.x
- (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Now that flex 2.6.0 has been released, the version checks in our build
- scripts needed to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reproducibility of build output by ensuring filenames are given
- to the linker in a fixed order (Christoph Berg)
- </para>
-
- <para>
- This avoids possible bitwise differences in the produced executable
- files from one build to the next.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install our <filename>missing</filename> script where PGXS builds can find it
- (Jim Nasby)
- </para>
-
- <para>
- This allows sane behavior in a PGXS build done on a machine where build
- tools such as <application>bison</application> are missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variant regression test expected-output file to match behavior of
- current <application>libxml2</application> (Tom Lane)
- </para>
-
- <para>
- The fix for <application>libxml2</application>'s CVE-2015-7499 causes it not to
- output error context reports in some cases where it used to do so.
- This seems to be a bug, but we'll probably have to live with it for
- some time, so work around it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-10">
- <title>Release 9.3.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.9.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.10</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Guard against stack overflows in <type>json</type> parsing
- (Oskari Saarenmaa)
- </para>
-
- <para>
- If an application constructs PostgreSQL <type>json</type>
- or <type>jsonb</type> values from arbitrary user input, the application's
- users can reliably crash the PostgreSQL server, causing momentary
- denial of service. (CVE-2015-5289)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure all relations referred to by an updatable view are properly
- locked during an update statement (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when a session alters large numbers of foreign
- key constraints (Jan Wieck, Tom Lane)
- </para>
-
- <para>
- This was seen primarily when restoring <application>pg_dump</application> output
- for databases with many thousands of tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging complaints when a parameter that can only be set at
- server start appears multiple times in <filename>postgresql.conf</filename>,
- and fix counting of line numbers after an <literal>include_dir</literal>
- directive (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In regular expression execution, correctly record match data for
- capturing parentheses within a quantifier even when the match is
- zero-length (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's performance for <command>UPDATE</command>/<command>DELETE</command>
- on large inheritance sets (Tom Lane, Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure standby promotion trigger files are removed at postmaster
- startup (Michael Paquier, Fujii Masao)
- </para>
-
- <para>
- This prevents unwanted promotion from occurring if these files appear
- in a database backup that is used to initialize a new standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make emergency autovacuuming for multixact wraparound more robust
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> attempted to recycle such pages, but did so in a
- way that wasn't crash-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Perl</application> to handle non-<acronym>ASCII</acronym> error
- message texts correctly (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> crash when returning the string
- representation of a <type>record</type> result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix output of ISBN-13 numbers that begin
- with 979 (Fabien Coelho)
- </para>
-
- <para>
- EANs beginning with 979 (but not 9790) are considered ISBNs, but they
- must be printed in the new 13-digit format, not the 10-digit format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/postgres_fdw</filename>'s handling of
- collation-related decisions (Tom Lane)
- </para>
-
- <para>
- The main user-visible effect is expected to be that comparisons
- involving <type>varchar</type> columns will be sent to the remote server
- for execution in more cases than before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> handle inherited <literal>NOT VALID</literal>
- check constraints correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selection of default <application>zlib</application> compression level
- in <application>pg_dump</application>'s directory output format (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping data types from pre-9.2 servers, and when dumping
- functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted minor memory leaks in <application>pg_dump</application> and other
- client-side programs (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-9">
- <title>Release 9.3.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.8.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.9</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading an installation that was previously
- upgraded using a <application>pg_upgrade</application> version between 9.3.0 and
- 9.3.4 inclusive, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.7,
- see <xref linkend="release-9-3-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible failure to recover from an inconsistent database state
- (Robert Haas)
- </para>
-
- <para>
- Recent <productname>PostgreSQL</productname> releases introduced mechanisms to
- protect against multixact wraparound, but some of that code did not
- account for the possibility that it would need to run during crash
- recovery, when the database may not be in a consistent state. This
- could result in failure to restart after a crash, or failure to start
- up a secondary server. The lingering effects of a previously-fixed
- bug in <application>pg_upgrade</application> could also cause such a failure, in
- installations that had used <application>pg_upgrade</application> versions
- between 9.3.0 and 9.3.4.
- </para>
-
- <para>
- The <application>pg_upgrade</application> bug in question was that it would
- set <literal>oldestMultiXid</literal> to 1 in <filename>pg_control</filename> even
- if the true value should be higher. With the fixes introduced in
- this release, such a situation will result in immediate emergency
- autovacuuming until a correct <literal>oldestMultiXid</literal> value can be
- determined. If that would pose a hardship, users can avoid it by
- doing manual vacuuming <emphasis>before</emphasis> upgrading to this release.
- In detail:
-
- <orderedlist>
- <listitem>
- <para>
- Check whether <application>pg_controldata</application> reports <quote>Latest
- checkpoint's oldestMultiXid</quote> to be 1. If not, there's nothing
- to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Look in <filename>PGDATA/pg_multixact/offsets</filename> to see if there's a
- file named <filename>0000</filename>. If there is, there's nothing to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Otherwise, for each table that has
- <structname>pg_class</structname>.<structfield>relminmxid</structfield> equal to 1,
- <command>VACUUM</command> that table with
- both <xref linkend="guc-vacuum-multixact-freeze-min-age"/>
- and <xref linkend="guc-vacuum-multixact-freeze-table-age"/> set to
- zero. (You can use the vacuum cost delay parameters described
- in <xref linkend="runtime-config-resource-vacuum-cost"/> to reduce
- the performance consequences for concurrent sessions.) You must
- use <productname>PostgreSQL</productname> 9.3.5 or later to perform this step.
- </para>
- </listitem>
- </orderedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's cost estimates for semi-joins and anti-joins with
- inner indexscans (Tom Lane, Tomas Vondra)
- </para>
-
- <para>
- This type of plan is quite cheap when all the join clauses are used
- as index scan conditions, even if the inner scan would nominally
- fetch many rows, because the executor will stop after obtaining one
- row. The planner only partially accounted for that effect, and would
- therefore overestimate the cost, leading it to possibly choose some
- other much less efficient plan type.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-8">
- <title>Release 9.3.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.7.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.8</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.7,
- see <xref linkend="release-9-3-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
-
- <para>
- Also apply the same rules in <literal>initdb --sync-only</literal>.
- This case is less critical but it should act similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_functiondef()</function> to show
- functions' <literal>LEAKPROOF</literal> property, if set (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c6b7b9a9c] 2015-05-21 20:41:55 -0400
-Branch: REL9_2_STABLE [b78fbfe65] 2015-05-21 20:41:55 -0400
-Branch: REL9_1_STABLE [2c2c5f0e0] 2015-05-21 20:41:55 -0400
-Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400
--->
-
- <listitem>
- <para>
- Allow <application>libpq</application> to use TLS protocol versions beyond v1
- (Noah Misch)
- </para>
-
- <para>
- For a long time, <application>libpq</application> was coded so that the only SSL
- protocol it would allow was TLS v1. Now that newer TLS versions are
- becoming popular, allow it to negotiate the highest commonly-supported
- TLS version with the server. (<productname>PostgreSQL</productname> servers were
- already capable of such negotiation, so no change is needed on the
- server side.) This is a back-patch of a change already released in
- 9.4.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-7">
- <title>Release 9.3.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.6.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.7</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions, see the changelog entry below
- about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.6,
- see <xref linkend="release-9-3-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against wraparound of multixact member IDs
- (&Aacute;lvaro Herrera, Robert Haas, Thomas Munro)
- </para>
-
- <para>
- Under certain usage patterns, the existing defenses against this might
- be insufficient, allowing <filename>pg_multixact/members</filename> files to be
- removed too early, resulting in data loss.
- The fix for this includes modifying the server to fail transactions
- that would result in overwriting old multixact member ID data, and
- improving autovacuum to ensure it will act proactively to prevent
- multixact member ID wraparound, as it does for transaction ID
- wraparound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect declaration of <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions (Tom Lane)
- </para>
-
- <para>
- These functions should return <type>setof text[]</type>, like the core
- functions they are wrappers for; but they were incorrectly declared as
- returning just <type>text[]</type>. This mistake had two results: first,
- if there was no match you got a scalar null result, whereas what you
- should get is an empty set (zero rows). Second, the <literal>g</literal> flag
- was effectively ignored, since you would get only one result array even
- if there were multiple matches.
- </para>
-
- <para>
- While the latter behavior is clearly a bug, there might be applications
- depending on the former behavior; therefore the function declarations
- will not be changed by default until <productname>PostgreSQL</productname> 9.5.
- In pre-9.5 branches, the old behavior exists in version 1.0 of
- the <literal>citext</literal> extension, while we have provided corrected
- declarations in version 1.1 (which is <emphasis>not</emphasis> installed by
- default). To adopt the fix in pre-9.5 branches, execute
- <literal>ALTER EXTENSION citext UPDATE TO '1.1'</literal> in each database in
- which <literal>citext</literal> is installed. (You can also <quote>update</quote>
- back to 1.0 if you need to undo that.) Be aware that either update
- direction will require dropping and recreating any views or rules that
- use <filename>citext</filename>'s <function>regexp_matches()</function> functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of star-schema-style queries (Tom Lane)
- </para>
-
- <para>
- Sometimes, efficient scanning of a large table requires that index
- parameters be provided from more than one other table (commonly,
- dimension tables whose keys are needed to index a large fact table).
- The planner should be able to find such plans, but an overly
- restrictive search heuristic prevented it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when doing <literal>COPY IN</literal> to a table with check
- constraints that contain whole-row references (Tom Lane)
- </para>
-
- <para>
- The known failure case only crashes in 9.4 and up, but there is very
- similar code in 9.3 and 9.2, so back-patch those branches as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structfield>tableoid</structfield> of a foreign table is reported
- correctly when a <literal>READ COMMITTED</literal> recheck occurs after
- locking rows in <command>SELECT FOR UPDATE</command>, <command>UPDATE</command>,
- or <command>DELETE</command> (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include the schema name in object identity strings for conversions
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</literal>
- replication command (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids a possible startup failure
- in <application>pg_receivexlog</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, fix misparsing of empty values in URI
- connection strings (Thomas Fanghaenel)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix failure to honor <literal>-Z</literal>
- compression level option together with <literal>-Fd</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> consider foreign key relationships
- between extension configuration tables while choosing dump order
- (Gilles Darold, Michael Paquier, Stephen Frost)
- </para>
-
- <para>
- This oversight could result in producing dumps that fail to reload
- because foreign key constraints are transiently violated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible <application>pg_dump</application> failure when concurrent sessions
- are creating and dropping temporary functions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <function>readdir()</function> failures when scanning
- directories in <application>initdb</application> and <application>pg_basebackup</application>
- (Marco Nenciarini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Silence some build warnings on macOS (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-6">
- <title>Release 9.3.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.5.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.6</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are a Windows user and are using the <quote>Norwegian
- (Bokm&aring;l)</quote> locale, manual action is needed after the upgrade to
- replace any <quote>Norwegian (Bokm&aring;l)_Norway</quote> locale names stored
- in <productname>PostgreSQL</productname> system catalogs with the plain-ASCII
- alias <quote>Norwegian_Norway</quote>. For details see
- <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></ulink>
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.5,
- see <xref linkend="release-9-3-5"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0150ab567] 2015-02-02 10:00:44 -0500
-Branch: REL9_4_STABLE [1628a0bbf] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [b8b580147] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [5ae3bf1af] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [037529a11] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [611e110aa] 2015-02-02 10:00:52 -0500
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [9241c84cb] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [56d2bee9d] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [fe2526990] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [e09651e9d] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [2ceb63deb] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [56b970f2e] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [29725b3db] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [2ac95c83c] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [bc4d5f2e5] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [c6c6aa288] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [98f2479d8] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [9e05c5063] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [1dc755158] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [82806cf4e] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [6994f0790] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d95ebe0ac] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [11f738a8a] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [ce6f261cd] 2015-02-02 10:00:52 -0500
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [8b59672d8] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [258e294db] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [a558ad3a7] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d1972da8c] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [8d412e02e] 2015-02-02 10:00:52 -0500
-Branch: REL9_0_STABLE [0a3ee8a5f] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [2b3a8b20c] 2015-02-02 17:09:53 +0200
-Branch: REL9_4_STABLE [57ec87c6b] 2015-02-02 17:09:46 +0200
-Branch: REL9_3_STABLE [cd19848bd] 2015-02-02 17:09:40 +0200
-Branch: REL9_2_STABLE [289592b23] 2015-02-02 17:09:35 +0200
-Branch: REL9_1_STABLE [af9c5c074] 2015-02-02 17:09:31 +0200
-Branch: REL9_0_STABLE [47ba0fbd7] 2015-02-02 17:09:25 +0200
--->
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [804b6b6db] 2015-01-28 12:31:30 -0500
-Branch: REL9_4_STABLE [3cc74a3d6] 2015-01-28 12:32:06 -0500
-Branch: REL9_3_STABLE [4b9874216] 2015-01-28 12:32:39 -0500
-Branch: REL9_2_STABLE [d49f84b08] 2015-01-28 12:32:56 -0500
-Branch: REL9_1_STABLE [9406884af] 2015-01-28 12:33:15 -0500
-Branch: REL9_0_STABLE [3a2063369] 2015-01-28 12:33:29 -0500
--->
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [f6dc6dd5b] 2014-12-17 22:48:40 -0500
-Branch: REL9_4_STABLE [6b87d423d] 2014-12-17 22:48:45 -0500
-Branch: REL9_3_STABLE [442dc2c35] 2014-12-17 22:48:46 -0500
-Branch: REL9_2_STABLE [0046f651d] 2014-12-17 22:48:47 -0500
-Branch: REL9_1_STABLE [6aa98e957] 2014-12-17 22:48:47 -0500
-Branch: REL9_0_STABLE [6d45ee572] 2014-12-17 22:48:48 -0500
--->
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [8f80dcf3c] 2014-10-24 19:59:49 +0300
-Branch: REL9_2_STABLE [d440c4b55] 2014-10-24 19:59:52 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [2a1b34959] 2014-10-24 19:36:28 +0300
-Branch: REL9_2_STABLE [737ae3fc7] 2014-10-24 19:53:27 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [aa1d2fc5e] 2015-01-16 13:28:19 +0200
-Branch: REL9_4_STABLE [2049a7d82] 2015-01-16 13:10:06 +0200
-Branch: REL9_3_STABLE [1619442a1] 2015-01-16 13:10:15 +0200
-Branch: REL9_2_STABLE [6bf343c6e] 2015-01-16 13:10:23 +0200
--->
-
- <listitem>
- <para>
- Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</quote>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Non-ASCII locale names are problematic since it's not clear what
- encoding they should be represented in. Map the troublesome locale
- name to a plain-ASCII alias, <quote>Norwegian_Norway</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f88300168] 2014-11-04 13:24:14 -0500
-Branch: REL9_2_STABLE [db72ad02e] 2014-11-04 13:24:17 -0500
-Branch: REL9_1_STABLE [7c6f55e9e] 2014-11-04 13:24:22 -0500
-Branch: REL9_0_STABLE [45a607d5c] 2014-11-04 13:24:26 -0500
--->
-
- <listitem>
- <para>
- Avoid possible data corruption if <command>ALTER DATABASE SET
- TABLESPACE</command> is used to move a database to a new tablespace and then
- shortly later move it back to its original tablespace (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [81f0a5e38] 2014-10-29 18:12:08 -0400
-Branch: REL9_2_STABLE [40058fbce] 2014-10-29 18:12:11 -0400
-Branch: REL9_1_STABLE [6ec1c3ef8] 2014-10-29 18:12:17 -0400
-Branch: REL9_0_STABLE [9d06da58e] 2014-10-29 18:12:20 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [e65b550b3] 2014-10-30 13:03:28 -0400
-Branch: REL9_2_STABLE [38cb8687a] 2014-10-30 13:03:31 -0400
-Branch: REL9_1_STABLE [fcf0246b2] 2014-10-30 13:03:34 -0400
-Branch: REL9_0_STABLE [73f950fc8] 2014-10-30 13:03:39 -0400
--->
-
- <listitem>
- <para>
- Avoid corrupting tables when <command>ANALYZE</command> inside a transaction
- is rolled back (Andres Freund, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If the failing transaction had earlier removed the last index, rule, or
- trigger from the table, the table would be left in a corrupted state
- with the relevant <structname>pg_class</structname> flags not set though they
- should be.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [d7624e562] 2014-10-20 23:45:31 +0200
-Branch: REL9_2_STABLE [fd29810d1] 2014-10-20 23:47:00 +0200
-Branch: REL9_1_STABLE [d5fef87e9] 2014-10-20 23:47:45 +0200
--->
-
- <listitem>
- <para>
- Ensure that unlogged tables are copied correctly
- during <command>CREATE DATABASE</command> or <command>ALTER DATABASE SET
- TABLESPACE</command> (Pavan Deolasee, Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [e35db342a] 2014-09-22 16:19:59 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect processing
- of <structname>CreateEventTrigStmt</structname>.<structfield>eventname</structfield> (Petr
- Jelinek)
- </para>
-
- <para>
- This could result in misbehavior if <command>CREATE EVENT TRIGGER</command>
- were executed as a prepared query, or via extended query protocol.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [2a83e0349] 2014-11-11 17:00:21 -0500
-Branch: REL9_2_STABLE [1c2f9a4f6] 2014-11-11 17:00:25 -0500
-Branch: REL9_1_STABLE [94d5d57d5] 2014-11-11 17:00:28 -0500
--->
-
- <listitem>
- <para>
- Fix <command>DROP</command>'s dependency searching to correctly handle the
- case where a table column is recursively visited before its table
- (Petr Jelinek, Tom Lane)
- </para>
-
- <para>
- This case is only known to arise when an extension creates both a
- datatype and a table using that datatype. The faulty code might
- refuse a <command>DROP EXTENSION</command> unless <literal>CASCADE</literal> is
- specified, which should not be required.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c480cb9d2] 2015-01-15 18:52:58 -0500
-Branch: REL9_4_STABLE [b75d18bd4] 2015-01-15 18:53:05 -0500
-Branch: REL9_3_STABLE [34668c8ec] 2015-01-15 18:52:28 -0500
-Branch: REL9_2_STABLE [0acb32efb] 2015-01-15 18:52:31 -0500
-Branch: REL9_1_STABLE [450530fce] 2015-01-15 18:52:34 -0500
-Branch: REL9_0_STABLE [5308e085b] 2015-01-15 18:52:38 -0500
--->
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [0e5680f47] 2014-12-26 13:52:27 -0300
-Branch: REL9_4_STABLE [0e3a1f71d] 2014-12-26 13:52:27 -0300
-Branch: REL9_3_STABLE [048912386] 2014-12-26 13:52:27 -0300
--->
-
- <listitem>
- <para>
- Avoid possible deadlock while trying to acquire tuple locks
- in EvalPlanQual processing (&Aacute;lvaro Herrera, Mark Kirkwood)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d5e3d1e96] 2015-01-04 15:48:29 -0300
-Branch: REL9_4_STABLE [51742063b] 2015-01-04 15:48:29 -0300
-Branch: REL9_3_STABLE [54a8abc2b] 2015-01-04 15:48:29 -0300
--->
-
- <listitem>
- <para>
- Fix failure to wait when a transaction tries to acquire a <literal>FOR
- NO KEY EXCLUSIVE</literal> tuple lock, while multiple other transactions
- currently hold <literal>FOR SHARE</literal> locks (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [2ae8a01ca] 2014-12-11 21:02:31 -0500
-Branch: REL9_2_STABLE [cd63c57e5] 2014-12-11 21:02:34 -0500
-Branch: REL9_1_STABLE [bca39b578] 2014-12-11 21:02:38 -0500
-Branch: REL9_0_STABLE [662eebdc6] 2014-12-11 21:02:41 -0500
--->
-
- <listitem>
- <para>
- Fix planning of <command>SELECT FOR UPDATE</command> when using a partial
- index on a child table (Kyotaro Horiguchi)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, <command>SELECT FOR UPDATE</command> must
- also recheck the partial index's <literal>WHERE</literal> condition when
- rechecking a recently-updated row to see if it still satisfies the
- query's <literal>WHERE</literal> condition. This requirement was missed if the
- index belonged to an inheritance child table, so that it was possible
- to incorrectly return rows that no longer satisfy the query condition.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f14196c35] 2014-12-11 19:37:07 -0500
-Branch: REL9_2_STABLE [deadbf4f3] 2014-12-11 19:37:10 -0500
-Branch: REL9_1_STABLE [21946ac9b] 2014-12-11 19:37:14 -0500
-Branch: REL9_0_STABLE [f5e4e92fb] 2014-12-11 19:37:17 -0500
--->
-
- <listitem>
- <para>
- Fix corner case wherein <command>SELECT FOR UPDATE</command> could return a row
- twice, and possibly miss returning other rows (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, a <command>SELECT FOR UPDATE</command>
- that is scanning an inheritance tree could incorrectly return a row
- from a prior child table instead of the one it should return from a
- later child table.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a5cd70dcb] 2015-01-15 13:18:12 -0500
-Branch: REL9_4_STABLE [d25192892] 2015-01-15 13:18:16 -0500
-Branch: REL9_3_STABLE [939f0fb67] 2015-01-15 13:18:19 -0500
--->
-
- <listitem>
- <para>
- Improve performance of <command>EXPLAIN</command> with large range tables
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [7a9c8cefb] 2014-08-09 13:46:42 -0400
-Branch: REL9_2_STABLE [b4dacab12] 2014-08-09 13:46:45 -0400
-Branch: REL9_1_STABLE [bbe826f21] 2014-08-09 13:46:48 -0400
-Branch: REL9_0_STABLE [4ff49746e] 2014-08-09 13:46:52 -0400
--->
-
- <listitem>
- <para>
- Reject duplicate column names in the referenced-columns list of
- a <literal>FOREIGN KEY</literal> declaration (David Rowley)
- </para>
-
- <para>
- This restriction is per SQL standard. Previously we did not reject
- the case explicitly, but later on the code would fail with
- bizarre-looking errors.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [6306d0712] 2014-07-22 13:30:14 -0400
--->
-
- <listitem>
- <para>
- Re-enable error for <literal>SELECT ... OFFSET -1</literal> (Tom Lane)
- </para>
-
- <para>
- A negative offset value has been an error since 8.4, but an
- optimization added in 9.3 accidentally turned the case into a no-op.
- Restore the expected behavior.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8b65e0a33] 2014-08-09 18:40:34 -0400
-Branch: REL9_2_STABLE [15026ab97] 2014-08-09 18:40:38 -0400
--->
-
- <listitem>
- <para>
- Restore previous behavior of conversion of domains to JSON
- (Tom Lane)
- </para>
-
- <para>
- This change causes domains over numeric and boolean to be treated
- like their base types for purposes of conversion to JSON. It worked
- like that before 9.3.5 and 9.2.9, but was unintentionally changed
- while fixing a related problem.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8571ecb24] 2014-12-02 15:02:43 -0500
--->
-
- <listitem>
- <para>
- Fix <function>json_agg()</function> to not return extra trailing right
- brackets in its result (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [25bf13fe1] 2014-09-11 23:30:57 -0400
-Branch: REL9_2_STABLE [228ed4370] 2014-09-11 23:31:00 -0400
-Branch: REL9_1_STABLE [cf5c20b06] 2014-09-11 23:31:03 -0400
-Branch: REL9_0_STABLE [26f8a4691] 2014-09-11 23:31:06 -0400
--->
-
- <listitem>
- <para>
- Fix bugs in raising a <type>numeric</type> value to a large integral power
- (Tom Lane)
- </para>
-
- <para>
- The previous code could get a wrong answer, or consume excessive
- amounts of time and memory before realizing that the answer must
- overflow.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [10b81fbdc] 2014-12-01 15:25:08 -0500
-Branch: REL9_2_STABLE [e640042e9] 2014-12-01 15:25:12 -0500
-Branch: REL9_1_STABLE [2e3cc3955] 2014-12-01 15:25:15 -0500
-Branch: REL9_0_STABLE [e6550626c] 2014-12-01 15:25:18 -0500
--->
-
- <listitem>
- <para>
- In <function>numeric_recv()</function>, truncate away any fractional digits
- that would be hidden according to the value's <literal>dscale</literal> field
- (Tom Lane)
- </para>
-
- <para>
- A <type>numeric</type> value's display scale (<literal>dscale</literal>) should
- never be less than the number of nonzero fractional digits; but
- apparently there's at least one broken client application that
- transmits binary <type>numeric</type> values in which that's true.
- This leads to strange behavior since the extra digits are taken into
- account by arithmetic operations even though they aren't printed.
- The least risky fix seems to be to truncate away such <quote>hidden</quote>
- digits on receipt, so that the value is indeed what it prints as.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [bbfdf5d75] 2014-09-23 20:25:36 -0400
-Branch: REL9_2_STABLE [3359a818c] 2014-09-23 20:25:39 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect search for shortest-first regular expression matches
- (Tom Lane)
- </para>
-
- <para>
- Matching would often fail when the number of allowed iterations is
- limited by a <literal>?</literal> quantifier or a bound expression.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [7672bbca0] 2014-07-21 22:41:27 -0400
-Branch: REL9_2_STABLE [f54d97c5e] 2014-07-21 22:41:30 -0400
-Branch: REL9_1_STABLE [124331b61] 2014-07-21 22:41:33 -0400
-Branch: REL9_0_STABLE [6e5a39c9e] 2014-07-21 22:41:36 -0400
--->
-
- <listitem>
- <para>
- Reject out-of-range numeric timezone specifications (Tom Lane)
- </para>
-
- <para>
- Simple numeric timezone specifications exceeding +/- 168 hours (one
- week) would be accepted, but could then cause null-pointer dereference
- crashes in certain operations. There's no use-case for such large UTC
- offsets, so reject them.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [1aa526f3f] 2014-10-27 10:51:29 +0200
-Branch: REL9_2_STABLE [604d94d4c] 2014-10-27 10:51:33 +0200
-Branch: REL9_1_STABLE [4d1c738d1] 2014-10-27 10:51:36 +0200
-Branch: REL9_0_STABLE [10059c2da] 2014-10-27 10:51:38 +0200
--->
-
- <listitem>
- <para>
- Fix bugs in <type>tsquery</type> <literal>@&gt;</literal> <type>tsquery</type>
- operator (Heikki Linnakangas)
- </para>
-
- <para>
- Two different terms would be considered to match if they had the same
- CRC. Also, if the second operand had more terms than the first, it
- would be assumed not to be contained in the first; which is wrong
- since it might contain duplicate terms.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [385f0d98a] 2014-10-23 13:11:34 -0400
-Branch: REL9_2_STABLE [f09369da8] 2014-10-23 13:11:37 -0400
-Branch: REL9_1_STABLE [94de3a679] 2014-10-23 13:11:41 -0400
-Branch: REL9_0_STABLE [21fa26b65] 2014-10-23 13:11:45 -0400
--->
-
- <listitem>
- <para>
- Improve ispell dictionary's defenses against bad affix files (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [5a74ff373] 2014-11-06 20:52:52 -0500
-Branch: REL9_2_STABLE [0bb318595] 2014-11-06 20:52:57 -0500
-Branch: REL9_1_STABLE [076688084] 2014-11-06 20:53:02 -0500
-Branch: REL9_0_STABLE [39493e4d9] 2014-11-06 20:53:07 -0500
--->
-
- <listitem>
- <para>
- Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
- </para>
-
- <para>
- The previous coding could crash on an oversize dictionary, so this was
- deemed a back-patchable bug fix rather than a feature addition.
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [79af9a1d2] 2015-01-06 23:06:13 -0500
-Branch: REL9_4_STABLE [6bbf75192] 2015-01-17 22:11:20 -0500
-Branch: REL9_3_STABLE [e32cb8d0e] 2015-01-17 22:13:27 -0500
-Branch: REL9_2_STABLE [c8ef5b1ac] 2015-01-17 22:14:21 -0500
-Branch: REL9_1_STABLE [c975fa471] 2015-01-17 22:37:07 -0500
-Branch: REL9_0_STABLE [cebb3f032] 2015-01-17 22:37:32 -0500
--->
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [07ab4ec4c] 2014-11-10 15:21:20 -0500
-Branch: REL9_2_STABLE [19ccaf9d4] 2014-11-10 15:21:26 -0500
--->
-
- <listitem>
- <para>
- Ensure that whole-row variables expose nonempty column names
- to functions that pay attention to column names within composite
- arguments (Tom Lane)
- </para>
-
- <para>
- In some contexts, constructs like <literal>row_to_json(tab.*)</literal> may
- not produce the expected column names. This is fixed properly as of
- 9.4; in older branches, just ensure that we produce some nonempty
- name. (In some cases this will be the underlying table's column name
- rather than the query-assigned alias that should theoretically be
- visible.)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c57cdc9c1] 2014-11-22 16:01:12 -0500
-Branch: REL9_2_STABLE [906599f65] 2014-11-22 16:01:15 -0500
--->
-
- <listitem>
- <para>
- Fix mishandling of system columns,
- particularly <structfield>tableoid</structfield>, in FDW queries (Etsuro Fujita)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3d660d33a] 2015-01-30 12:30:59 -0500
-Branch: REL9_4_STABLE [b6a164e5c] 2015-01-30 12:31:08 -0500
-Branch: REL9_3_STABLE [527ff8baf] 2015-01-30 12:30:43 -0500
--->
-
- <listitem>
- <para>
- Fix assorted oversights in range-operator selectivity estimation
- (Emre Hasegeli)
- </para>
-
- <para>
- This patch fixes corner-case <quote>unexpected operator NNNN</quote> planner
- errors, and improves the selectivity estimates for some other cases.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f6abf8f08] 2014-10-26 16:12:29 -0400
-Branch: REL9_2_STABLE [4586572d7] 2014-10-26 16:12:32 -0400
--->
-
- <listitem>
- <para>
- Avoid doing <literal><replaceable>indexed_column</replaceable> = ANY
- (<replaceable>array</replaceable>)</literal> as an index qualifier if that leads
- to an inferior plan (Andrew Gierth)
- </para>
-
- <para>
- In some cases, <literal>= ANY</literal> conditions applied to non-first index
- columns would be done as index conditions even though it would be
- better to use them as simple filter conditions.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [4e54685d0] 2014-10-20 12:23:48 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>variable not found in subplan target list</quote> planner
- failure when an inline-able SQL function taking a composite argument
- is used in a <literal>LATERAL</literal> subselect and the composite argument
- is a lateral reference (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [b2b95de61] 2014-10-01 19:30:30 -0400
-Branch: REL9_2_STABLE [71b88cf52] 2014-10-01 19:30:34 -0400
-Branch: REL9_1_STABLE [477023e94] 2014-10-01 19:30:38 -0400
-Branch: REL9_0_STABLE [288f15b7c] 2014-10-01 19:30:41 -0400
--->
-
- <listitem>
- <para>
- Fix planner problems with nested append relations, such as inherited
- tables within <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [ef8ac584e] 2014-10-03 14:50:29 +0300
-Branch: REL9_2_STABLE [8e137b075] 2014-10-03 14:50:40 +0300
-Branch: REL9_1_STABLE [f270a1611] 2014-10-03 14:50:46 +0300
-Branch: REL9_0_STABLE [f04b112d5] 2014-10-03 14:50:58 +0300
--->
-
- <listitem>
- <para>
- Fail cleanly when a GiST index tuple doesn't fit on a page, rather
- than going into infinite recursion (Andrew Gierth)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_3_STABLE [67ed9d531] 2014-10-03 13:01:27 -0300
-Branch: REL9_2_STABLE [769d6815e] 2014-10-03 13:01:27 -0300
-Branch: REL9_1_STABLE [06646f52e] 2014-10-03 13:01:27 -0300
-Branch: REL9_0_STABLE [50a757698] 2014-10-03 13:01:27 -0300
--->
-
- <listitem>
- <para>
- Exempt tables that have per-table <varname>cost_limit</varname>
- and/or <varname>cost_delay</varname> settings from autovacuum's global cost
- balancing rules (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- The previous behavior resulted in basically ignoring these per-table
- settings, which was unintended. Now, a table having such settings
- will be vacuumed using those settings, independently of what is going
- on in other autovacuum workers. This may result in heavier total I/O
- load than before, so such settings should be re-examined for sanity.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [4cbecdaaa] 2014-07-30 14:41:49 -0400
-Branch: REL9_2_STABLE [c83aed34b] 2014-07-30 14:41:53 -0400
-Branch: REL9_1_STABLE [f21afe421] 2014-07-30 14:41:58 -0400
-Branch: REL9_0_STABLE [91b4a881c] 2014-07-30 14:42:12 -0400
--->
-
- <listitem>
- <para>
- Avoid wholesale autovacuuming when autovacuum is nominally off
- (Tom Lane)
- </para>
-
- <para>
- Even when autovacuum is nominally off, we will still launch autovacuum
- worker processes to vacuum tables that are at risk of XID wraparound.
- However, such a worker process then proceeded to vacuum all tables in
- the target database, if they met the usual thresholds for
- autovacuuming. This is at best pretty unexpected; at worst it delays
- response to the wraparound threat. Fix it so that if autovacuum is
- turned off, workers <emphasis>only</emphasis> do anti-wraparound vacuums and
- not any other work.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [2c3ebfd1a] 2014-11-15 01:21:07 +0100
-Branch: REL9_2_STABLE [ea8b3833e] 2014-11-15 01:21:45 +0100
-Branch: REL9_1_STABLE [d85b646d0] 2014-11-15 01:22:32 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [672b43e68] 2014-11-15 01:21:02 +0100
-Branch: REL9_2_STABLE [c5baa708f] 2014-11-15 01:21:40 +0100
-Branch: REL9_1_STABLE [fde9994bc] 2014-11-15 01:22:32 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [c7299d32f] 2014-11-15 01:20:29 +0100
-Branch: REL9_2_STABLE [86673a44a] 2014-11-15 01:21:30 +0100
-Branch: REL9_1_STABLE [b0a48e996] 2014-11-15 01:22:32 +0100
--->
-
- <listitem>
- <para>
- During crash recovery, ensure that unlogged relations are rewritten as
- empty and are synced to disk before recovery is considered complete
- (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- This prevents scenarios in which unlogged relations might contain
- garbage data following database crash recovery.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [861d3aa43] 2014-11-13 20:01:55 +0200
-Branch: REL9_2_STABLE [7eab804c2] 2014-11-13 20:01:18 +0200
-Branch: REL9_1_STABLE [5f1d931cf] 2014-11-13 20:01:09 +0200
-Branch: REL9_0_STABLE [681dbe7d4] 2014-11-13 20:00:51 +0200
--->
-
- <listitem>
- <para>
- Fix race condition between hot standby queries and replaying a
- full-page image (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in transient errors in queries being
- executed in hot standby.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [a2a718b22] 2014-07-29 11:57:52 +0300
-Branch: REL9_2_STABLE [1578d13dc] 2014-07-29 11:58:01 +0300
-Branch: REL9_1_STABLE [de88ec6bf] 2014-07-29 11:58:09 +0300
-Branch: REL9_0_STABLE [804983961] 2014-07-29 11:58:17 +0300
--->
-
- <listitem>
- <para>
- Fix several cases where recovery logic improperly ignored WAL records
- for <literal>COMMIT/ABORT PREPARED</literal> (Heikki Linnakangas)
- </para>
-
- <para>
- The most notable oversight was
- that <varname>recovery_target_xid</varname> could not be used to stop at
- a two-phase commit.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [d45cd9e19] 2014-10-23 16:22:46 +0900
-Branch: REL9_2_STABLE [f904e9afd] 2014-10-23 16:31:44 +0900
--->
-
- <listitem>
- <para>
- Prevent latest WAL file from being archived a second time at completion
- of crash recovery (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [3a3b7e316] 2014-11-06 21:25:18 +0900
-Branch: REL9_2_STABLE [38eb5d9e8] 2014-11-06 21:25:45 +0900
-Branch: REL9_1_STABLE [4e7468074] 2014-11-06 21:26:15 +0900
-Branch: REL9_0_STABLE [83c7bfb9a] 2014-11-06 21:26:21 +0900
--->
-
- <listitem>
- <para>
- Avoid creating unnecessary <filename>.ready</filename> marker files for
- timeline history files (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [52eed3d42] 2014-09-05 02:19:29 +0900
-Branch: REL9_2_STABLE [78b1228ef] 2014-09-05 02:19:45 +0900
-Branch: REL9_1_STABLE [81bffe63c] 2014-09-05 02:19:50 +0900
-Branch: REL9_0_STABLE [857a5d6b5] 2014-09-05 02:19:57 +0900
--->
-
- <listitem>
- <para>
- Fix possible null pointer dereference when an empty prepared statement
- is used and the <varname>log_statement</varname> setting is <literal>mod</literal>
- or <literal>ddl</literal> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [75b48e1ff] 2015-01-19 23:01:33 -0500
-Branch: REL9_4_STABLE [3387cbbcb] 2015-01-19 23:01:36 -0500
-Branch: REL9_3_STABLE [19794e997] 2015-01-19 23:01:39 -0500
-Branch: REL9_2_STABLE [33b723538] 2015-01-19 23:01:41 -0500
-Branch: REL9_1_STABLE [b87c1dcef] 2015-01-19 23:01:44 -0500
-Branch: REL9_0_STABLE [a1a8d0249] 2015-01-19 23:01:46 -0500
--->
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [cbd9619ac] 2014-10-01 14:34:06 +0200
--->
-
- <listitem>
- <para>
- Fix possible corruption of postmaster's list of dynamic background
- workers (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [27ef6b653] 2014-09-09 23:37:33 +0200
-Branch: REL9_2_STABLE [d0b7ffc0f] 2014-09-09 23:37:50 +0200
-Branch: REL9_1_STABLE [5af508f66] 2014-09-09 23:45:07 +0200
-Branch: REL9_0_STABLE [f25e89601] 2014-09-09 23:48:03 +0200
--->
-
- <listitem>
- <para>
- Fix SPARC spinlock implementation to ensure correctness if the CPU is
- being run in a non-TSO coherency mode, as some non-Solaris kernels do
- (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [894459e59] 2015-01-07 22:35:44 -0500
-Branch: REL9_4_STABLE [83fb1ca5c] 2015-01-07 22:36:35 -0500
-Branch: REL9_3_STABLE [1a366d51e] 2015-01-07 22:40:40 -0500
-Branch: REL9_2_STABLE [5ca4e444c] 2015-01-07 22:41:49 -0500
-Branch: REL9_1_STABLE [8dc83104e] 2015-01-07 22:42:42 -0500
-Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500
--->
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [08cd4d9a6] 2014-11-25 17:39:00 +0200
-Branch: REL9_2_STABLE [9b468bcec] 2014-11-25 17:39:04 +0200
-Branch: REL9_1_STABLE [95be34362] 2014-11-25 17:39:07 +0200
-Branch: REL9_0_STABLE [9880fea4f] 2014-11-25 17:39:09 +0200
--->
-
- <listitem>
- <para>
- Fix processing of repeated <literal>dbname</literal> parameters
- in <function>PQconnectdbParams()</function> (Alex Shulgin)
- </para>
-
- <para>
- Unexpected behavior ensued if the first occurrence
- of <literal>dbname</literal> contained a connection string or URI to be
- expanded.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [52ef33f72] 2014-10-22 18:41:51 -0400
-Branch: REL9_2_STABLE [6fa31d8d1] 2014-10-22 18:41:54 -0400
-Branch: REL9_1_STABLE [98144378c] 2014-10-22 18:41:57 -0400
-Branch: REL9_0_STABLE [ac6e87537] 2014-10-22 18:42:01 -0400
--->
-
- <listitem>
- <para>
- Ensure that <application>libpq</application> reports a suitable error message on
- unexpected socket EOF (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- Depending on kernel behavior, <application>libpq</application> might return an
- empty error string rather than something useful when the server
- unexpectedly closed the socket.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [1325b239b] 2014-10-29 14:40:47 +0200
-Branch: REL9_2_STABLE [1a27fbd07] 2014-10-29 14:39:10 +0200
-Branch: REL9_1_STABLE [8f7bd8e91] 2014-10-29 14:36:19 +0200
-Branch: REL9_0_STABLE [49ef4eba2] 2014-10-29 14:35:39 +0200
--->
-
- <listitem>
- <para>
- Clear any old error message during <function>PQreset()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- If <function>PQreset()</function> is called repeatedly, and the connection
- cannot be re-established, error messages from the failed connection
- attempts kept accumulating in the <structname>PGconn</structname>'s error
- string.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [d3b162a3d] 2014-11-25 14:10:29 +0200
-Branch: REL9_2_STABLE [abcab2a64] 2014-11-25 14:10:43 +0200
-Branch: REL9_1_STABLE [5053ad206] 2014-11-25 14:10:48 +0200
-Branch: REL9_0_STABLE [1f3517039] 2014-11-25 14:10:54 +0200
--->
-
- <listitem>
- <para>
- Properly handle out-of-memory conditions while parsing connection
- options in <application>libpq</application> (Alex Shulgin, Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [d3cfe20c6] 2014-10-06 21:23:35 -0400
-Branch: REL9_2_STABLE [b513205bc] 2014-10-06 21:23:39 -0400
-Branch: REL9_1_STABLE [037b912ec] 2014-10-06 21:23:45 -0400
-Branch: REL9_0_STABLE [d9a1e9de5] 2014-10-06 21:23:50 -0400
--->
-
- <listitem>
- <para>
- Fix array overrun in <application>ecpg</application>'s version
- of <function>ParseDateTime()</function> (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [2df66f01a] 2014-12-05 14:31:51 +0200
-Branch: REL9_2_STABLE [2b53d583d] 2014-12-05 14:31:45 +0200
-Branch: REL9_1_STABLE [729202754] 2014-12-05 14:31:37 +0200
-Branch: REL9_0_STABLE [d67be559e] 2014-12-05 14:30:55 +0200
--->
-
- <listitem>
- <para>
- In <application>initdb</application>, give a clearer error message if a password
- file is specified but is empty (Mats Erik Andersson)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [b0fd5c552] 2014-09-08 16:09:52 -0400
-Branch: REL9_2_STABLE [886b58b47] 2014-09-08 16:09:56 -0400
-Branch: REL9_1_STABLE [440fcc568] 2014-09-08 16:10:01 -0400
-Branch: REL9_0_STABLE [44c518328] 2014-09-08 16:10:05 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <command>\s</command> command to work nicely with
- libedit, and add pager support (Stepan Rutz, Tom Lane)
- </para>
-
- <para>
- When using libedit rather than readline, <command>\s</command> printed the
- command history in a fairly unreadable encoded format, and on recent
- libedit versions might fail altogether. Fix that by printing the
- history ourselves rather than having the library do it. A pleasant
- side-effect is that the pager is used if appropriate.
- </para>
-
- <para>
- This patch also fixes a bug that caused newline encoding to be applied
- inconsistently when saving the command history with libedit.
- Multiline history entries written by older <application>psql</application>
- versions will be read cleanly with this patch, but perhaps not
- vice versa, depending on the exact libedit versions involved.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [28551797a] 2014-12-31 12:18:50 -0500
-Branch: REL9_4_STABLE [c35249939] 2014-12-31 12:16:57 -0500
-Branch: REL9_3_STABLE [7582cce56] 2014-12-31 12:17:00 -0500
-Branch: REL9_2_STABLE [64c506535] 2014-12-31 12:17:04 -0500
-Branch: REL9_1_STABLE [1773e0702] 2014-12-31 12:17:08 -0500
-Branch: REL9_0_STABLE [2600e4436] 2014-12-31 12:17:12 -0500
--->
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [4b1953079] 2014-11-28 02:44:40 +0900
--->
-
- <listitem>
- <para>
- Make <application>psql</application>'s <command>\watch</command> command display
- nulls as specified by <command>\pset null</command> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: REL9_3_STABLE [7ec399094] 2014-09-12 11:24:28 -0400
-Branch: REL9_2_STABLE [5d63f2159] 2014-09-12 11:24:32 -0400
-Branch: REL9_1_STABLE [4d96e93cb] 2014-09-12 11:24:36 -0400
-Branch: REL9_0_STABLE [1f89fc218] 2014-09-12 11:24:39 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s expanded-mode display to work
- consistently when using <literal>border</literal> = 3
- and <literal>linestyle</literal> = <literal>ascii</literal> or <literal>unicode</literal>
- (Stephen Frost)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [adfc157dd] 2015-01-05 19:27:04 -0500
-Branch: REL9_4_STABLE [c99e41f68] 2015-01-05 19:27:06 -0500
-Branch: REL9_3_STABLE [bb1e2426b] 2015-01-05 19:27:09 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle comments on event triggers
- without failing (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [cff1bd2a3] 2015-01-30 08:57:24 -0600
-Branch: REL9_4_STABLE [cb0168528] 2015-01-30 08:57:53 -0600
-Branch: REL9_3_STABLE [cc609c46f] 2015-01-30 09:01:36 -0600
--->
-
- <listitem>
- <para>
- Allow parallel <application>pg_dump</application> to
- use <option>--serializable-deferrable</option> (Kevin Grittner)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [51fc61334] 2014-07-25 19:48:48 -0400
-Branch: REL9_2_STABLE [a6c567437] 2014-07-25 19:48:51 -0400
-Branch: REL9_1_STABLE [40c333c39] 2014-07-25 19:48:54 -0400
--->
-
- <listitem>
- <para>
- Improve performance of <application>pg_dump</application> when the database
- contains many instances of multiple dependency paths between the same
- two objects (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9fc887121] 2014-11-13 18:19:32 -0500
-Branch: REL9_2_STABLE [3c5ce5102] 2014-11-13 18:19:35 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to restore its ability to dump from
- pre-8.1 servers (Gilles Darold)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [d72ecc91c] 2014-09-26 11:23:43 -0400
-Branch: REL9_2_STABLE [a97c8c393] 2014-09-26 11:25:57 -0400
-Branch: REL9_1_STABLE [d1844c21b] 2014-09-26 11:36:25 -0400
-Branch: REL9_0_STABLE [bbe3c069a] 2014-09-26 11:43:56 -0400
--->
-
- <listitem>
- <para>
- Fix possible deadlock during parallel restore of a schema-only dump
- (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9a540c1ef] 2014-10-17 12:49:06 -0400
-Branch: REL9_2_STABLE [787e20bd4] 2014-10-17 12:49:09 -0400
-Branch: REL9_1_STABLE [0c9391e52] 2014-10-17 12:49:11 -0400
-Branch: REL9_0_STABLE [31021e7ba] 2014-10-17 12:49:15 -0400
--->
-
- <listitem>
- <para>
- Fix core dump in <literal>pg_dump --binary-upgrade</literal> on zero-column
- composite type (Rushabh Lathia)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [26a4e0ed7] 2014-11-15 01:21:11 +0100
--->
-
- <listitem>
- <para>
- Fix failure to fsync tables in nondefault tablespaces
- during <application>pg_upgrade</application> (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- With an operating system crash and some bad luck, this could result in
- data loss during an upgrade.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [fca9f349b] 2014-08-07 14:56:13 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, cope with cases where the new cluster
- creates a TOAST table for a table that didn't previously have one
- (Bruce Momjian)
- </para>
-
- <para>
- Previously this could result in failures due to OID conflicts.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [24ae44914] 2014-08-04 11:45:45 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, don't try to
- set <literal>autovacuum_multixact_freeze_max_age</literal> for the old cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This could result in failure because not all 9.3.X versions have that
- parameter. Fortunately, we don't actually need to set it at all.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [5724f491d] 2014-09-11 18:39:46 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve the transaction ID epoch
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight did not bother <productname>PostgreSQL</productname> proper,
- but could confuse some external replication tools.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [2c0a48589] 2015-01-03 20:54:12 +0100
-Branch: REL9_4_STABLE [90e4a2bf9] 2015-01-03 20:54:13 +0100
-Branch: REL9_3_STABLE [f6cea4502] 2015-01-03 20:54:13 +0100
-Branch: REL9_2_STABLE [f961ad479] 2015-01-03 20:54:13 +0100
-Branch: REL9_1_STABLE [2a0bfa4d6] 2015-01-03 20:54:13 +0100
--->
-
- <listitem>
- <para>
- Prevent WAL files created by <literal>pg_basebackup -x/-X</literal> from
- being archived again when the standby is promoted (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [9747a9898] 2014-08-02 15:19:45 +0900
--->
-
- <listitem>
- <para>
- Fix memory leak in <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [39217ce41] 2014-08-02 14:59:10 +0900
--->
-
- <listitem>
- <para>
- Fix unintended suppression of <application>pg_receivexlog</application> verbose
- messages (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9474c9d81] 2014-09-19 13:19:02 -0400
-Branch: REL9_2_STABLE [5ff8c2d7d] 2014-09-19 13:19:05 -0400
--->
-
- <listitem>
- <para>
- Fix failure of <filename>contrib/auto_explain</filename> to print per-node
- timing information when doing <command>EXPLAIN ANALYZE</command> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0ad403c98] 2014-08-28 18:21:14 -0400
-Branch: REL9_2_STABLE [f3998521f] 2014-08-28 18:21:17 -0400
-Branch: REL9_1_STABLE [9807c8220] 2014-08-28 18:21:20 -0400
--->
-
- <listitem>
- <para>
- Fix upgrade-from-unpackaged script for <filename>contrib/citext</filename>
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f44290b7b] 2014-11-04 16:54:59 -0500
--->
-
- <listitem>
- <para>
- Avoid integer overflow and buffer overrun
- in <filename>contrib/hstore</filename>'s <function>hstore_to_json()</function>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: REL9_3_STABLE [55c880797] 2014-12-01 11:44:48 -0500
--->
-
- <listitem>
- <para>
- Fix recognition of numbers in <function>hstore_to_json_loose()</function>,
- so that JSON numbers and strings are correctly distinguished
- (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f59c8eff7] 2014-07-22 11:45:53 -0400
-Branch: REL9_2_STABLE [810f0d2a2] 2014-07-22 11:45:57 -0400
-Branch: REL9_1_STABLE [3c5232ae8] 2014-07-22 11:46:00 -0400
-Branch: REL9_0_STABLE [9dc2a3fd0] 2014-07-22 11:46:04 -0400
--->
-
- <listitem>
- <para>
- Fix block number checking
- in <filename>contrib/pageinspect</filename>'s <function>get_raw_page()</function>
- (Tom Lane)
- </para>
-
- <para>
- The incorrect checking logic could prevent access to some pages in
- non-main relation forks.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [419de696a] 2014-11-11 17:22:38 -0500
-Branch: REL9_2_STABLE [4a9710e6e] 2014-11-11 17:22:44 -0500
-Branch: REL9_1_STABLE [4ddd9e72f] 2014-11-11 17:22:51 -0500
-Branch: REL9_0_STABLE [ef5a3b957] 2014-11-11 17:22:58 -0500
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename>'s <function>pgp_sym_decrypt()</function>
- to not fail on messages whose length is 6 less than a power of 2
- (Marko Tiikkaja)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [8cf825974] 2014-11-19 12:14:22 -0500
-Branch: REL9_2_STABLE [57ce74661] 2014-11-19 12:20:47 -0500
-Branch: REL9_1_STABLE [a855c90a7] 2014-11-19 12:26:06 -0500
--->
-
- <listitem>
- <para>
- Fix file descriptor leak in <filename>contrib/pg_test_fsync</filename>
- (Jeff Janes)
- </para>
-
- <para>
- This could cause failure to remove temporary files on Windows.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [37507962c] 2015-01-29 20:18:33 -0500
-Branch: REL9_4_STABLE [202621d04] 2015-01-29 20:18:37 -0500
-Branch: REL9_3_STABLE [53ae24692] 2015-01-29 20:18:40 -0500
-Branch: REL9_2_STABLE [66cc74680] 2015-01-29 20:18:42 -0500
-Branch: REL9_1_STABLE [290c2daad] 2015-01-29 20:18:44 -0500
-Branch: REL9_0_STABLE [dc9a506e6] 2015-01-29 20:18:46 -0500
--->
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c393847a1] 2014-11-27 11:12:51 -0500
-Branch: REL9_2_STABLE [a1cd04cd0] 2014-11-27 11:12:55 -0500
-Branch: REL9_1_STABLE [168636a99] 2014-11-27 11:12:59 -0500
-Branch: REL9_0_STABLE [6a694bbab] 2014-11-27 11:13:03 -0500
--->
-
- <listitem>
- <para>
- Avoid a possible crash in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Mark Simonetti)
- </para>
-
- <para>
- <application>libxslt</application> seems to have an undocumented dependency on
- the order in which resources are freed; reorder our calls to avoid a
- crash.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0247935c7] 2014-11-05 11:34:19 -0500
-Branch: REL9_2_STABLE [0ef754cad] 2014-11-05 11:34:22 -0500
-Branch: REL9_1_STABLE [7225abf00] 2014-11-05 11:34:25 -0500
--->
-
- <listitem>
- <para>
- Mark some <filename>contrib</filename> I/O functions with correct volatility
- properties (Tom Lane)
- </para>
-
- <para>
- The previous over-conservative marking was immaterial in normal use,
- but could cause optimization problems or rejection of valid index
- expression definitions. Since the consequences are not large, we've
- just adjusted the function definitions in the extension modules'
- scripts, without changing version numbers.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a59ee8819] 2015-01-30 13:05:30 -0500
-Branch: REL9_4_STABLE [70da7aeba] 2015-01-30 13:04:59 -0500
-Branch: REL9_3_STABLE [f08cf8ad9] 2015-01-30 13:05:01 -0500
-Branch: REL9_2_STABLE [a97dfdfd9] 2015-01-30 13:05:04 -0500
-Branch: REL9_1_STABLE [8f51c432c] 2015-01-30 13:05:07 -0500
-Branch: REL9_0_STABLE [7c41a32b3] 2015-01-30 13:05:09 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8824bae87] 2014-11-18 13:28:13 -0500
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [0b49642b9] 2015-01-15 09:26:03 -0500
-Branch: REL9_4_STABLE [7b65f194e] 2015-01-15 09:29:41 -0500
-Branch: REL9_3_STABLE [ebbef4f39] 2015-01-15 09:29:55 -0500
-Branch: REL9_2_STABLE [d452bfd1b] 2015-01-15 09:42:21 -0500
-Branch: REL9_1_STABLE [151fb75b0] 2015-01-15 09:42:33 -0500
-Branch: REL9_0_STABLE [0a67c0018] 2015-01-15 09:42:47 -0500
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [e37d474f9] 2015-01-13 14:33:05 +0200
-Branch: REL9_4_STABLE [4ebb3494e] 2015-01-13 16:01:04 +0200
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [8cadeb792] 2015-01-04 15:44:49 +0100
-Branch: REL9_4_STABLE [7ced1b6c5] 2015-01-04 15:52:52 +0100
-Branch: REL9_3_STABLE [a68b8aec7] 2015-01-04 15:53:08 +0100
-Branch: REL9_2_STABLE [6f9b84a40] 2015-01-04 15:55:00 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [58bc4747b] 2015-01-04 15:35:46 +0100
-Branch: REL9_4_STABLE [2d8411a0a] 2015-01-04 15:35:46 +0100
-Branch: REL9_3_STABLE [d33f36f16] 2015-01-04 15:35:47 +0100
-Branch: REL9_2_STABLE [029e41afd] 2015-01-04 15:35:47 +0100
-Branch: REL9_1_STABLE [39cdf365a] 2015-01-04 15:35:47 +0100
-Branch: REL9_0_STABLE [17797e18d] 2015-01-04 15:35:48 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [0398ece4c] 2015-01-04 14:36:21 +0100
-Branch: REL9_4_STABLE [ff7d46b85] 2015-01-04 14:36:21 +0100
-Branch: REL9_3_STABLE [ec14f1601] 2015-01-04 14:36:22 +0100
-Branch: REL9_2_STABLE [f4060db11] 2015-01-04 14:36:22 +0100
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [3b5a89c48] 2014-12-30 20:33:01 +0900
-Branch: REL9_4_STABLE [458e8bc65] 2014-12-30 20:27:26 +0900
-Branch: REL9_3_STABLE [ed0e03283] 2014-12-30 20:20:56 +0900
-Branch: REL9_2_STABLE [4db7eaae0] 2014-12-30 19:59:26 +0900
-Branch: REL9_1_STABLE [4c136b0b6] 2014-12-30 19:48:53 +0900
-Branch: REL9_0_STABLE [9b74f3574] 2014-12-30 19:37:55 +0900
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [66709133c] 2014-12-16 15:35:33 -0500
-Branch: REL9_4_STABLE [383d224a0] 2014-12-16 15:35:36 -0500
-Branch: REL9_3_STABLE [53960e7eb] 2014-12-16 15:35:40 -0500
-Branch: REL9_2_STABLE [e92c67ddc] 2014-12-16 15:35:43 -0500
-Branch: REL9_1_STABLE [5c784d96a] 2014-12-16 15:35:46 -0500
-Branch: REL9_0_STABLE [a2969bd72] 2014-12-16 15:35:49 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d38e8d30c] 2014-12-16 13:31:42 -0500
-Branch: REL9_4_STABLE [6c75384ee] 2014-12-16 13:31:57 -0500
-Branch: REL9_3_STABLE [3b750ec15] 2014-12-16 13:32:02 -0500
-Branch: REL9_2_STABLE [5b2c8f04a] 2014-12-16 13:32:15 -0500
-Branch: REL9_1_STABLE [926da211a] 2014-12-16 13:32:25 -0500
-Branch: REL9_0_STABLE [961df1853] 2014-12-16 13:32:38 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [586dd5d6a] 2015-01-24 13:05:42 -0500
-Branch: REL9_4_STABLE [d51d4ff31] 2015-01-24 13:05:45 -0500
-Branch: REL9_3_STABLE [7240f9200] 2015-01-24 13:05:49 -0500
-Branch: REL9_2_STABLE [502e5f9c3] 2015-01-24 13:05:53 -0500
-Branch: REL9_1_STABLE [b00a08859] 2015-01-24 13:05:56 -0500
-Branch: REL9_0_STABLE [3a3ee655c] 2015-01-24 13:05:58 -0500
--->
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [05c0059b3] 2014-07-30 12:10:20 -0400
--->
-
- <listitem>
- <para>
- Fix setup of background workers in EXEC_BACKEND builds, eg Windows
- (Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: REL9_3_STABLE [07115248f] 2014-07-22 11:01:41 -0400
-Branch: REL9_2_STABLE [cec0c2182] 2014-07-22 11:01:51 -0400
-Branch: REL9_1_STABLE [81af4185a] 2014-07-22 11:02:00 -0400
-Branch: REL9_0_STABLE [4c6d0abde] 2014-07-22 11:02:25 -0400
--->
-
- <listitem>
- <para>
- Detect incompatible OpenLDAP versions during build (Noah Misch)
- </para>
-
- <para>
- With OpenLDAP versions 2.4.24 through 2.4.31,
- inclusive, <productname>PostgreSQL</productname> backends can crash at exit.
- Raise a warning during <application>configure</application> based on the
- compile-time OpenLDAP version number, and test the crashing scenario
- in the <filename>contrib/dblink</filename> regression test.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: REL9_3_STABLE [318fe2321] 2014-08-18 23:01:04 -0400
-Branch: REL9_2_STABLE [ebd4d9cdd] 2014-08-18 23:01:09 -0400
-Branch: REL9_1_STABLE [ba72fc054] 2014-08-18 23:01:13 -0400
-Branch: REL9_0_STABLE [e6841c4d6] 2014-08-18 23:01:23 -0400
--->
-
- <listitem>
- <para>
- In non-MSVC Windows builds, ensure <filename>libpq.dll</filename> is installed
- with execute permissions (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aa719391d] 2015-01-19 23:44:19 -0500
-Branch: REL9_4_STABLE [3de9f22ac] 2015-01-19 23:44:22 -0500
-Branch: REL9_3_STABLE [1681e2f74] 2015-01-19 23:44:24 -0500
-Branch: REL9_2_STABLE [89b6a19e1] 2015-01-19 23:44:28 -0500
-Branch: REL9_1_STABLE [f4f522deb] 2015-01-19 23:44:30 -0500
-Branch: REL9_0_STABLE [338ff75fc] 2015-01-19 23:44:33 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [137e7c164] 2014-10-16 15:22:17 -0400
-Branch: REL9_2_STABLE [7c67b9365] 2014-10-16 15:22:20 -0400
-Branch: REL9_1_STABLE [2784b68b3] 2014-10-16 15:22:23 -0400
-Branch: REL9_0_STABLE [870a980aa] 2014-10-16 15:22:26 -0400
--->
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9701f238b] 2014-10-03 17:44:56 -0400
-Branch: REL9_2_STABLE [d7d546bbc] 2014-10-03 17:44:59 -0400
-Branch: REL9_1_STABLE [252af79d9] 2014-10-03 17:45:03 -0400
-Branch: REL9_0_STABLE [cc7bad30c] 2014-10-03 17:45:07 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0190f0a76] 2014-12-24 16:35:40 -0500
-Branch: REL9_2_STABLE [5c8665892] 2014-12-24 16:35:44 -0500
-Branch: REL9_1_STABLE [310597e31] 2014-12-24 16:35:48 -0500
-Branch: REL9_0_STABLE [8b70023af] 2014-12-24 16:35:54 -0500
--->
-
- <listitem>
- <para>
- Update time zone abbreviations lists (Tom Lane)
- </para>
-
- <para>
- Add CST (China Standard Time) to our lists.
- Remove references to ADT as <quote>Arabia Daylight Time</quote>, an
- abbreviation that's been out of use since 2007; therefore, claiming
- there is a conflict with <quote>Atlantic Daylight Time</quote> doesn't seem
- especially helpful.
- Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
- (Fiji); we didn't even have them on the proper side of the date line.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8470cd473] 2015-01-30 22:46:05 -0500
-Branch: REL9_2_STABLE [c9048d353] 2015-01-30 22:46:12 -0500
-Branch: REL9_1_STABLE [cb24cd3f4] 2015-01-30 22:46:17 -0500
-Branch: REL9_0_STABLE [3553d9c6e] 2015-01-30 22:46:22 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [ab45d907b] 2014-11-17 12:08:25 -0500
-Branch: REL9_2_STABLE [b1e996035] 2014-11-17 12:08:32 -0500
-Branch: REL9_1_STABLE [b96c47a3d] 2014-11-17 12:08:39 -0500
-Branch: REL9_0_STABLE [92979576e] 2014-11-17 12:08:46 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c66199151] 2014-10-04 14:18:33 -0400
-Branch: REL9_2_STABLE [8f75d7a25] 2014-10-04 14:18:36 -0400
-Branch: REL9_1_STABLE [745723c9e] 2014-10-04 14:18:39 -0400
-Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a.
- </para>
-
- <para>
- The IANA timezone database has adopted abbreviations of the form
- <literal>A<replaceable>x</replaceable>ST</literal>/<literal>A<replaceable>x</replaceable>DT</literal>
- for all Australian time zones, reflecting what they believe to be
- current majority practice Down Under. These names do not conflict
- with usage elsewhere (other than ACST for Acre Summer Time, which has
- been in disuse since 1994). Accordingly, adopt these names into
- our <quote>Default</quote> timezone abbreviation set.
- The <quote>Australia</quote> abbreviation set now contains only CST, EAST,
- EST, SAST, SAT, and WST, all of which are thought to be mostly
- historical usage. Note that SAST has also been changed to be South
- Africa Standard Time in the <quote>Default</quote> abbreviation set.
- </para>
-
- <para>
- Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
- (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
- DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
- (America/Grand_Turk), and Fiji. There is a new zone
- Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
- corrections for historical (pre-1970) time zone data.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-5">
- <title>Release 9.3.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.4.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.5</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, this release corrects a logic error
- in <application>pg_upgrade</application>, as well as an index corruption problem in
- some GiST indexes. See the first two changelog entries below to find out
- whether your installation has been affected and what steps you should take
- if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.4,
- see <xref linkend="release-9-3-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0f7482733] 2014-06-24 16:11:06 -0400
-Branch: REL9_4_STABLE [dd5369047] 2014-06-24 16:11:06 -0400
-Branch: REL9_3_STABLE [cc5841809] 2014-06-24 16:11:06 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, remove <filename>pg_multixact</filename> files
- left behind by <application>initdb</application> (Bruce Momjian)
- </para>
-
- <para>
- If you used a pre-9.3.5 version of <application>pg_upgrade</application> to
- upgrade a database cluster to 9.3, it might have left behind a file
- <filename>$PGDATA/pg_multixact/offsets/0000</filename> that should not be
- there and will eventually cause problems in <command>VACUUM</command>.
- <emphasis>However, in common cases this file is actually valid and
- must not be removed.</emphasis>
- To determine whether your installation has this problem, run this
- query as superuser, in any database of the cluster:
-<programlisting>
-WITH list(file) AS (SELECT * FROM pg_ls_dir('pg_multixact/offsets'))
-SELECT EXISTS (SELECT * FROM list WHERE file = '0000') AND
- NOT EXISTS (SELECT * FROM list WHERE file = '0001') AND
- NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF') AND
- EXISTS (SELECT * FROM list WHERE file != '0000')
- AS file_0000_removal_required;
-</programlisting>
- If this query returns <literal>t</literal>, manually remove the file
- <filename>$PGDATA/pg_multixact/offsets/0000</filename>.
- Do nothing if the query returns <literal>f</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [540ac7cea] 2014-05-13 15:15:13 +0300
-Branch: REL9_3_STABLE [d5b912c90] 2014-05-13 15:27:14 +0300
-Branch: REL9_2_STABLE [0d8d0d027] 2014-05-13 15:27:21 +0300
-Branch: REL9_1_STABLE [1913d0f28] 2014-05-13 15:27:28 +0300
-Branch: REL9_0_STABLE [c87c43f08] 2014-05-13 15:27:36 +0300
-Branch: REL8_4_STABLE [e31d77c96] 2014-05-13 15:27:43 +0300
--->
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [4f7bb4b2a] 2014-05-08 14:50:22 +0300
-Branch: REL9_3_STABLE [34572920c] 2014-05-08 14:43:04 +0300
-Branch: REL9_2_STABLE [31633f992] 2014-05-08 14:43:39 +0300
-Branch: REL9_1_STABLE [686a7194e] 2014-05-08 14:43:58 +0300
-Branch: REL9_0_STABLE [8b4efe1f3] 2014-05-08 14:44:06 +0300
-Branch: REL8_4_STABLE [be7830596] 2014-05-08 14:46:43 +0300
--->
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [7ca32e255] 2014-04-08 14:51:40 +0300
-Branch: REL9_3_STABLE [601c01e08] 2014-04-08 14:51:49 +0300
-Branch: REL9_2_STABLE [02b9fd73e] 2014-04-08 14:51:56 +0300
-Branch: REL9_1_STABLE [ac0078c1d] 2014-04-08 14:52:01 +0300
-Branch: REL9_0_STABLE [d034e9b3b] 2014-04-08 14:52:07 +0300
--->
-
- <listitem>
- <para>
- Don't clear the right-link of a GiST index page while replaying
- updates from WAL (Heikki Linnakangas)
- </para>
-
- <para>
- This error could lead to transiently wrong answers from GiST index
- scans performed in Hot Standby.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c170655cc] 2014-06-09 16:31:11 -0400
-Branch: REL9_3_STABLE [717c116f1] 2014-06-09 16:31:16 -0400
-Branch: REL9_2_STABLE [93328b2df] 2014-06-09 16:30:46 -0400
--->
-
- <listitem>
- <para>
- Fix corner-case infinite loop during insertion into an SP-GiST text
- index (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [1264ef31a] 2014-07-16 09:19:06 +0300
-Branch: REL9_4_STABLE [9b3ef66af] 2014-07-16 09:20:20 +0300
-Branch: REL9_3_STABLE [a4867d041] 2014-07-16 09:20:31 +0300
--->
-
- <listitem>
- <para>
- Fix incorrect answers from SP-GiST index searches
- with <literal>-|-</literal> (range adjacency) operator
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_4_BR [b0b263baa] 2014-06-09 15:17:23 -0400
-Branch: REL9_3_STABLE [167a2535f] 2014-06-09 15:17:23 -0400
--->
-
- <listitem>
- <para>
- Fix wraparound handling for <filename>pg_multixact/members</filename>
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [f741300c9] 2014-06-27 14:43:53 -0400
-Branch: REL9_4_STABLE [56f86bb76] 2014-06-27 14:43:52 -0400
-Branch: REL9_3_STABLE [9a28c3752] 2014-06-27 14:43:52 -0400
--->
-
- <listitem>
- <para>
- Truncate <structname>pg_multixact</structname> during checkpoints, not
- during <command>VACUUM</command> (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This change ensures that <structname>pg_multixact</structname> segments can't be
- removed if they'd still be needed during WAL replay after a crash.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [2a8e1ac59] 2014-04-17 17:47:50 +0300
-Branch: REL9_3_STABLE [95aa823eb] 2014-04-17 17:47:58 +0300
--->
-
- <listitem>
- <para>
- Fix possible inconsistency of all-visible flags after WAL recovery
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [0f928a85e] 2014-05-05 14:43:39 -0400
-Branch: REL9_3_STABLE [4f4ef042f] 2014-05-05 14:43:42 -0400
-Branch: REL9_2_STABLE [c8fbeeb45] 2014-05-05 14:43:46 -0400
-Branch: REL9_1_STABLE [2f4ee3a2f] 2014-05-05 14:43:49 -0400
-Branch: REL9_0_STABLE [7d5b68621] 2014-05-05 14:43:52 -0400
-Branch: REL8_4_STABLE [3ada1fab8] 2014-05-05 14:43:55 -0400
--->
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_4_BR [1a917ae86] 2014-04-24 15:41:55 -0300
-Branch: REL9_3_STABLE [c0bd128c8] 2014-04-24 15:41:55 -0300
--->
-
- <listitem>
- <para>
- Fix race condition when updating a tuple concurrently locked by
- another process (Andres Freund, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [a2db7b7d0] 2014-06-26 10:41:59 -0700
-Branch: REL9_2_STABLE [0cf16686b] 2014-06-26 10:42:03 -0700
-Branch: REL9_1_STABLE [555d0b200] 2014-06-26 10:42:08 -0700
--->
-
- <listitem>
- <para>
- Fix <quote>could not find pathkey item to sort</quote> planner failures
- with <literal>UNION ALL</literal> over subqueries reading from tables with
- inheritance children (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9e2f2d7a0] 2014-07-08 14:03:56 -0400
-Branch: REL9_4_STABLE [ac45aa1dd] 2014-07-08 14:03:45 -0400
-Branch: REL9_3_STABLE [6d36aee5b] 2014-07-08 14:03:19 -0400
-Branch: REL9_2_STABLE [189bd09cb] 2014-07-08 14:03:23 -0400
-Branch: REL9_1_STABLE [fa21a760b] 2014-07-08 14:03:26 -0400
-Branch: REL9_0_STABLE [2865d5952] 2014-07-08 14:03:30 -0400
-Branch: REL8_4_STABLE [2e7469dc8] 2014-07-08 14:03:32 -0400
--->
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [95811032d] 2014-04-29 13:12:46 -0400
-Branch: REL9_3_STABLE [150a44e83] 2014-04-29 13:12:29 -0400
-Branch: REL9_2_STABLE [0901dbab3] 2014-04-29 13:12:33 -0400
--->
-
- <listitem>
- <para>
- Improve planner to drop constant-NULL inputs
- of <literal>AND</literal>/<literal>OR</literal> when possible (Tom Lane)
- </para>
-
- <para>
- This change fixes some cases where the more aggressive parameter
- substitution done by 9.2 and later can lead to a worse plan than
- older versions produced.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c7b353959] 2014-04-03 22:02:24 -0400
-Branch: REL9_3_STABLE [d359f71ac] 2014-04-03 22:02:27 -0400
--->
-
- <listitem>
- <para>
- Ensure that the planner sees equivalent <literal>VARIADIC</literal> and
- non-<literal>VARIADIC</literal> function calls as equivalent (Tom Lane)
- </para>
-
- <para>
- This bug could for example result in failure to use expression indexes
- involving variadic functions. It might be necessary to re-create such
- indexes, and/or re-create views including variadic function calls that
- should match the indexes, for the fix to be effective for existing 9.3
- installations.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [57d8c1270] 2014-06-24 21:22:40 -0700
-Branch: REL9_4_STABLE [a331512de] 2014-06-24 21:22:43 -0700
-Branch: REL9_3_STABLE [a1fc36495] 2014-06-24 21:22:47 -0700
--->
-
- <listitem>
- <para>
- Fix handling of nested <type>JSON</type> objects
- in <function>json_populate_recordset()</function> and friends
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A nested <type>JSON</type> object could result in previous fields of the
- parent object not being shown in the output.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [0ca6bda8e] 2014-05-09 12:55:31 -0400
-Branch: REL9_3_STABLE [13c679995] 2014-05-09 12:55:03 -0400
-Branch: REL9_2_STABLE [25c933c5c] 2014-05-09 12:55:06 -0400
--->
-
- <listitem>
- <para>
- Fix identification of input type category in <function>to_json()</function>
- and friends (Tom Lane)
- </para>
-
- <para>
- This is known to have led to inadequate quoting of <type>money</type>
- fields in the <type>JSON</type> result, and there may have been wrong
- results for other data types as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [3f8c8e3c6] 2014-05-01 15:19:06 -0400
-Branch: REL9_3_STABLE [b72e90bc3] 2014-05-01 15:19:10 -0400
-Branch: REL9_2_STABLE [8c43980a1] 2014-05-01 15:19:14 -0400
-Branch: REL9_1_STABLE [db1fdc945] 2014-05-01 15:19:17 -0400
-Branch: REL9_0_STABLE [7a4f114f3] 2014-05-01 15:19:20 -0400
-Branch: REL8_4_STABLE [70debcf09] 2014-05-01 15:19:23 -0400
--->
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d68581483] 2014-07-11 19:12:35 -0400
-Branch: REL9_4_STABLE [f280eff94] 2014-07-11 19:12:38 -0400
-Branch: REL9_3_STABLE [b77e6b959] 2014-07-11 19:12:42 -0400
-Branch: REL9_2_STABLE [261f954e7] 2014-07-11 19:12:45 -0400
-Branch: REL9_1_STABLE [c45841f9e] 2014-07-11 19:12:48 -0400
-Branch: REL9_0_STABLE [cd8ba91a0] 2014-07-11 19:12:51 -0400
-Branch: REL8_4_STABLE [a81fbcfb3] 2014-07-11 19:12:56 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [04e5025be] 2014-05-07 14:25:11 -0400
-Branch: REL9_3_STABLE [fc58c39d4] 2014-05-07 14:25:13 -0400
-Branch: REL9_2_STABLE [022b5f2b2] 2014-05-07 14:25:17 -0400
-Branch: REL9_1_STABLE [229101db4] 2014-05-07 14:25:22 -0400
-Branch: REL9_0_STABLE [7f66ade71] 2014-05-07 14:25:25 -0400
-Branch: REL8_4_STABLE [2a527baa3] 2014-05-07 14:25:28 -0400
--->
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [45b0f3572] 2014-06-19 22:14:26 -0400
-Branch: REL9_4_STABLE [1044e79a0] 2014-06-19 22:13:44 -0400
-Branch: REL9_3_STABLE [c1f8fb9bf] 2014-06-19 22:13:47 -0400
-Branch: REL9_2_STABLE [b568d3836] 2014-06-19 22:13:51 -0400
-Branch: REL9_1_STABLE [06d5eacbc] 2014-06-19 22:13:54 -0400
-Branch: REL9_0_STABLE [83131e634] 2014-06-19 22:13:58 -0400
-Branch: REL8_4_STABLE [d297c91d4] 2014-06-19 22:14:00 -0400
--->
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1567e659a] 2014-07-18 13:00:27 -0400
-Branch: REL9_4_STABLE [4a66f0f2d] 2014-07-18 13:00:39 -0400
-Branch: REL9_3_STABLE [5ef588b22] 2014-07-18 13:00:43 -0400
-Branch: REL9_2_STABLE [a223b9e36] 2014-07-18 13:00:48 -0400
-Branch: REL9_1_STABLE [8a817785a] 2014-07-18 13:00:52 -0400
-Branch: REL9_0_STABLE [b8c24f7ab] 2014-07-18 13:00:57 -0400
-Branch: REL8_4_STABLE [e0a233744] 2014-07-18 13:01:04 -0400
--->
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fd90b5d57] 2014-06-10 22:48:16 -0400
-Branch: REL9_4_STABLE [7f9fbb842] 2014-06-10 22:48:31 -0400
-Branch: REL9_3_STABLE [87db9534a] 2014-06-10 22:48:39 -0400
-Branch: REL9_2_STABLE [802323535] 2014-06-10 22:48:45 -0400
-Branch: REL9_1_STABLE [62f134954] 2014-06-10 22:48:52 -0400
-Branch: REL9_0_STABLE [4d5ea4290] 2014-06-10 22:48:59 -0400
-Branch: REL8_4_STABLE [f3f40434b] 2014-06-10 22:49:08 -0400
--->
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a87a7dc8b] 2014-06-24 13:27:18 +0300
-Branch: REL9_4_STABLE [1818ae0a7] 2014-06-24 13:31:06 +0300
-Branch: REL9_3_STABLE [2a7512bc7] 2014-06-24 13:31:00 +0300
-Branch: REL9_2_STABLE [1c9f9e888] 2014-06-24 13:30:54 +0300
-Branch: REL9_1_STABLE [dd1a5b09b] 2014-06-24 13:30:41 +0300
--->
-
- <listitem>
- <para>
- Prevent foreign tables from being created with OIDS
- when <literal>default_with_oids</literal> is true
- (Etsuro Fujita)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master Release: REL9_4_BR [621a99a66] 2014-06-04 21:36:19 +0200
-Branch: REL9_3_STABLE [edde59db1] 2014-06-04 23:26:08 +0200
-Branch: REL9_2_STABLE [315442c01] 2014-06-04 23:25:52 +0200
-Branch: REL9_1_STABLE [6bf6e528a] 2014-06-04 23:26:30 +0200
-Branch: REL9_0_STABLE [037c6fb9f] 2014-06-04 23:27:10 +0200
-Branch: REL8_4_STABLE [80d45ae4e] 2014-06-04 23:27:38 +0200
--->
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [d19bd29f0] 2014-04-24 13:29:48 -0400
-Branch: REL9_3_STABLE [12e41a5d7] 2014-04-24 13:29:56 -0400
-Branch: REL9_2_STABLE [ea9ac7741] 2014-04-24 13:30:00 -0400
-Branch: REL9_1_STABLE [70e7be264] 2014-04-24 13:30:04 -0400
-Branch: REL9_0_STABLE [b7a3e1173] 2014-04-24 13:30:08 -0400
-Branch: REL8_4_STABLE [82fbd88a7] 2014-04-24 13:30:14 -0400
--->
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [6bdf4b9c7] 2014-07-15 13:24:07 -0400
-Branch: REL9_4_STABLE [e45229bb6] 2014-07-15 13:24:07 -0400
-Branch: REL9_3_STABLE [12c5bbdcb] 2014-07-15 13:24:07 -0400
-Branch: REL9_2_STABLE [b42f09fc8] 2014-07-15 13:24:07 -0400
-Branch: REL9_1_STABLE [a41dc7321] 2014-07-15 13:24:07 -0400
-Branch: REL9_0_STABLE [bf08864b8] 2014-07-15 13:24:07 -0400
-Branch: REL8_4_STABLE [4b767789d] 2014-07-15 13:24:07 -0400
--->
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [b7e51d9c0] 2014-06-27 14:43:46 -0400
-Branch: REL9_4_STABLE [9eecc8a7c] 2014-06-27 14:43:46 -0400
-Branch: REL9_3_STABLE [e86cfc4bb] 2014-06-27 14:43:45 -0400
--->
-
- <listitem>
- <para>
- Prevent <structname>pg_class</structname>.<structfield>relminmxid</structfield> values from
- going backwards during <command>VACUUM FULL</command> (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [41de93c53] 2014-04-30 13:26:26 -0400
-Branch: REL9_3_STABLE [0652d77fb] 2014-04-30 13:26:29 -0400
--->
-
- <listitem>
- <para>
- Reduce indentation in rule/view dumps to improve readability and avoid
- excessive whitespace (Greg Stark, Tom Lane)
- </para>
-
- <para>
- This change reduces the amount of indentation applied to nested
- constructs, including some cases that the user probably doesn't think
- of as nested, such as UNION lists. Previously, deeply nested
- constructs were printed with an amount of whitespace growing as
- O(N^2), which created a performance problem and even risk of
- out-of-memory failures. Now the indentation is reduced modulo 40,
- which is initially odd to look at but seems to preserve readability
- better than simply limiting the indentation would do.
- Redundant parenthesization of UNION lists has been reduced as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [91e16b980] 2014-05-01 20:22:37 -0400
-Branch: REL9_3_STABLE [e31193d49] 2014-05-01 20:22:39 -0400
--->
-
- <listitem>
- <para>
- Fix dumping of rules/views when subsequent addition of a column has
- resulted in multiple input columns matching a <literal>USING</literal>
- specification (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9b35ddce9] 2014-07-19 14:28:52 -0400
-Branch: REL9_4_STABLE [f0a497e4c] 2014-07-19 14:29:00 -0400
-Branch: REL9_3_STABLE [b978ab5f6] 2014-07-19 14:29:05 -0400
--->
-
- <listitem>
- <para>
- Repair view printing for some cases involving functions
- in <literal>FROM</literal> that return a composite type containing dropped
- columns (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [5d8117e1f] 2014-04-05 18:16:08 -0400
-Branch: REL9_3_STABLE [21aa47d01] 2014-04-05 18:16:11 -0400
-Branch: REL9_2_STABLE [53463e247] 2014-04-05 18:16:14 -0400
-Branch: REL9_1_STABLE [093d3da1d] 2014-04-05 18:16:17 -0400
-Branch: REL9_0_STABLE [5c26ab659] 2014-04-05 18:16:20 -0400
-Branch: REL8_4_STABLE [969735cf1] 2014-04-05 18:16:24 -0400
--->
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [fc752505a] 2014-04-02 17:11:24 -0400
-Branch: REL9_3_STABLE [65183fb78] 2014-04-02 17:11:27 -0400
-Branch: REL9_2_STABLE [029decfec] 2014-04-02 17:11:31 -0400
-Branch: REL9_1_STABLE [b7a424371] 2014-04-02 17:11:34 -0400
--->
-
- <listitem>
- <para>
- Fix client host name lookup when processing <filename>pg_hba.conf</filename>
- entries that specify host names instead of IP addresses (Tom Lane)
- </para>
-
- <para>
- Ensure that reverse-DNS lookup failures are reported, instead of just
- silently not matching such entries. Also ensure that we make only
- one reverse-DNS lookup attempt per connection, not one per host name
- entry, which is what previously happened if the lookup attempts failed.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [b203c57bb] 2014-04-04 22:03:35 -0400
-Branch: REL9_3_STABLE [7d1a0f585] 2014-04-04 22:03:38 -0400
-Branch: REL9_2_STABLE [6d25eb314] 2014-04-04 22:03:42 -0400
--->
-
- <listitem>
- <para>
- Allow the root user to use <literal>postgres -C variable</literal> and
- <literal>postgres --describe-config</literal> (MauMau)
- </para>
-
- <para>
- The prohibition on starting the server as root does not need to extend
- to these operations, and relaxing it prevents failure
- of <application>pg_ctl</application> in some scenarios.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [be76a6d39] 2014-06-14 09:41:13 -0400
-Branch: REL9_4_STABLE [6583a75b2] 2014-06-14 09:41:16 -0400
-Branch: REL9_3_STABLE [1442b426e] 2014-06-14 09:41:17 -0400
-Branch: REL9_2_STABLE [453a5d91d] 2014-06-14 09:41:17 -0400
-Branch: REL9_1_STABLE [481831b43] 2014-06-14 09:41:18 -0400
-Branch: REL9_0_STABLE [5f09c583c] 2014-06-14 09:41:18 -0400
-Branch: REL8_4_STABLE [95cefd30e] 2014-06-14 09:41:18 -0400
--->
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [abe075dff] 2014-04-04 23:09:35 -0400
-Branch: REL9_3_STABLE [84520f91c] 2014-04-04 23:09:38 -0400
-Branch: REL9_2_STABLE [1a496a12b] 2014-04-04 23:09:41 -0400
-Branch: REL9_1_STABLE [af7738fe6] 2014-04-04 23:09:45 -0400
-Branch: REL9_0_STABLE [634056567] 2014-04-04 23:09:49 -0400
--->
-
- <listitem>
- <para>
- Fix tablespace creation WAL replay to work on Windows (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master Release: REL9_4_BR [418093465] 2014-04-16 10:45:48 -0400
-Branch: REL9_3_STABLE [f716c3250] 2014-04-16 10:45:48 -0400
-Branch: REL9_2_STABLE [966f015b6] 2014-04-16 10:45:48 -0400
-Branch: REL9_1_STABLE [bed499ed1] 2014-04-16 10:45:48 -0400
-Branch: REL9_0_STABLE [a86b2daff] 2014-04-16 10:45:48 -0400
--->
-
- <listitem>
- <para>
- Fix detection of socket creation failures on Windows (Bruce Momjian)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [6862ca697] 2014-04-05 12:41:25 -0400
-Branch: REL9_3_STABLE [18db2150c] 2014-04-05 12:41:28 -0400
-Branch: REL9_2_STABLE [bdc3e95c2] 2014-04-05 12:41:31 -0400
-Branch: REL9_1_STABLE [cb11f4d8d] 2014-04-05 12:41:34 -0400
-Branch: REL9_0_STABLE [9500d8f89] 2014-04-05 12:41:38 -0400
-Branch: REL8_4_STABLE [30e434bdf] 2014-04-05 12:41:40 -0400
--->
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [503de5462] 2014-04-30 10:35:52 +0300
-Branch: REL9_3_STABLE [8a90a39b4] 2014-04-30 10:35:46 +0300
-Branch: REL9_2_STABLE [e2558e016] 2014-04-30 10:36:31 +0300
-Branch: REL9_1_STABLE [94095e341] 2014-04-30 10:36:41 +0300
-Branch: REL9_0_STABLE [c06b7219a] 2014-04-30 10:38:32 +0300
-Branch: REL8_4_STABLE [e3f273ff6] 2014-04-30 10:39:03 +0300
--->
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [20561acf9] 2014-05-30 18:19:06 -0400
-Branch: REL9_3_STABLE [4f5f4da79] 2014-05-30 18:19:14 -0400
-Branch: REL9_2_STABLE [83ed4598b] 2014-05-30 18:18:20 -0400
-Branch: REL9_1_STABLE [a784a39c4] 2014-05-30 18:18:24 -0400
-Branch: REL9_0_STABLE [4f725bbc4] 2014-05-30 18:18:28 -0400
-Branch: REL8_4_STABLE [ae41bb4be] 2014-05-30 18:18:32 -0400
--->
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [2f557167b] 2014-05-07 21:39:13 -0400
-Branch: REL9_3_STABLE [b4f9c93ce] 2014-05-07 21:38:38 -0400
-Branch: REL9_2_STABLE [f7672c8ce] 2014-05-07 21:38:41 -0400
-Branch: REL9_1_STABLE [86888054a] 2014-05-07 21:38:44 -0400
-Branch: REL9_0_STABLE [77e662827] 2014-05-07 21:38:47 -0400
-Branch: REL8_4_STABLE [664ac3de7] 2014-05-07 21:38:50 -0400
--->
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master Release: REL9_4_BR [585bca393] 2014-04-16 18:58:10 +0200
-Branch: REL9_3_STABLE [cc269272c] 2014-04-16 18:58:55 +0200
-Branch: REL9_2_STABLE [b764080ee] 2014-04-16 18:59:11 +0200
-Branch: REL9_1_STABLE [c4bf15b9c] 2014-04-16 18:59:28 +0200
-Branch: REL9_0_STABLE [96752b02d] 2014-04-16 18:59:37 +0200
-Branch: REL8_4_STABLE [b4ae2e37d] 2014-04-16 18:59:48 +0200
--->
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL9_4_BR [8d6a07fa0] 2014-05-06 13:09:51 +0200
-Branch: REL9_3_STABLE [b4eeb9d58] 2014-05-06 13:04:30 +0200
-Branch: REL9_2_STABLE [3a024c110] 2014-05-06 13:14:01 +0200
-Branch: REL9_1_STABLE [fb66e88cf] 2014-05-06 13:20:22 +0200
-Branch: REL9_0_STABLE [91c8c106f] 2014-05-06 13:24:13 +0200
-
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL9_4_BR [f91796853] 2014-04-09 11:23:38 +0200
-Branch: REL9_3_STABLE [3b8fda676] 2014-04-09 11:38:40 +0200
-Branch: REL9_2_STABLE [2b3136de9] 2014-04-09 11:43:13 +0200
-Branch: REL9_1_STABLE [0de106836] 2014-04-09 12:04:33 +0200
-Branch: REL9_0_STABLE [0c2eb989e] 2014-04-09 12:12:32 +0200
--->
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to do the right thing when an array
- of <type>char *</type> is the target for a FETCH statement returning more
- than one row, as well as some other array-handling fixes
- (Ashutosh Bapat)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [62215de29] 2014-03-29 17:34:00 -0400
-Branch: REL9_3_STABLE [3080bbaa9] 2014-03-29 17:34:03 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to cope with a materialized view that
- depends on a table's primary key (Tom Lane)
- </para>
-
- <para>
- This occurs if the view's query relies on functional dependency to
- abbreviate a <literal>GROUP BY</literal> list. <application>pg_dump</application> got
- sufficiently confused that it dumped the materialized view as a
- regular view.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [19f2d6cda] 2014-03-18 10:38:25 -0400
-Branch: REL9_3_STABLE [63817f86b] 2014-03-18 10:38:38 -0400
--->
-
- <listitem>
- <para>
- Fix parsing of <application>pg_dumpall</application>'s <option>-i</option> switch
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c81e63d85] 2014-06-12 20:14:32 -0400
-Branch: REL9_4_STABLE [c3c1401ca] 2014-06-12 20:14:36 -0400
-Branch: REL9_3_STABLE [a11577f47] 2014-06-12 20:14:39 -0400
-Branch: REL9_2_STABLE [ce7fc4fbb] 2014-06-12 20:14:46 -0400
-Branch: REL9_1_STABLE [294a48985] 2014-06-12 20:14:49 -0400
-Branch: REL9_0_STABLE [3fec825f9] 2014-06-12 20:14:52 -0400
-Branch: REL8_4_STABLE [6adddac8a] 2014-06-12 20:14:55 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [3088cc370] 2014-07-07 13:24:08 -0400
-Branch: REL9_4_STABLE [f64fe2cbe] 2014-07-07 13:24:08 -0400
-Branch: REL9_3_STABLE [f1d7ff5bb] 2014-07-07 13:24:08 -0400
-Branch: REL9_2_STABLE [759c9fb63] 2014-07-07 13:24:08 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> for cases where the new server creates
- a TOAST table but the old version did not (Bruce Momjian)
- </para>
-
- <para>
- This rare situation would manifest as <quote>relation OID mismatch</quote>
- errors.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [a61daa14d] 2014-07-02 15:29:38 -0400
-Branch: REL9_4_STABLE [b446a384b] 2014-07-02 15:29:38 -0400
-Branch: REL9_3_STABLE [3d2e18510] 2014-07-02 15:29:38 -0400
-
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [78db307bb] 2014-07-21 11:41:53 -0400
-Branch: REL9_4_STABLE [d122387d7] 2014-07-21 11:42:00 -0400
-Branch: REL9_3_STABLE [e7984cca0] 2014-07-21 11:42:05 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>,
- preserve <structname>pg_database</structname>.<structfield>datminmxid</structfield>
- and <structname>pg_class</structname>.<structfield>relminmxid</structfield> values from the
- old cluster, or insert reasonable values when upgrading from pre-9.3;
- also defend against unreasonable values in the core server
- (Bruce Momjian, &Aacute;lvaro Herrera, Tom Lane)
- </para>
-
- <para>
- These changes prevent scenarios in which autovacuum might insist on
- scanning the entire cluster's contents immediately upon starting the
- new cluster, or in which tracking of unfrozen MXID values might be
- disabled completely.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [e416830a2] 2014-05-20 12:20:47 -0400
-Branch: REL9_3_STABLE [0266a9c78] 2014-05-20 12:20:52 -0400
-Branch: REL9_2_STABLE [31f579f09] 2014-05-20 12:20:57 -0400
--->
-
- <listitem>
- <para>
- Prevent <filename>contrib/auto_explain</filename> from changing the output of
- a user's <command>EXPLAIN</command> (Tom Lane)
- </para>
-
- <para>
- If <filename>auto_explain</filename> is active, it could cause
- an <literal>EXPLAIN (ANALYZE, TIMING OFF)</literal> command to nonetheless
- print timing information.
- </para>
- </listitem>
-
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [1dde5782e] 2014-06-20 12:24:59 -0700
-Branch: REL9_4_STABLE [9d884a34c] 2014-06-20 12:26:26 -0700
-Branch: REL9_3_STABLE [b3a3f3d2f] 2014-06-20 12:26:43 -0700
-Branch: REL9_2_STABLE [3e2cfa42f] 2014-06-20 12:27:04 -0700
--->
-
- <listitem>
- <para>
- Fix query-lifespan memory leak in <filename>contrib/dblink</filename>
- (MauMau, Joe Conway)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master Release: REL9_4_BR [9fe55259f] 2014-04-17 12:37:53 -0400
-Branch: REL9_3_STABLE [fc72e94a1] 2014-04-17 12:37:53 -0400
-Branch: REL9_2_STABLE [ea8725a8b] 2014-04-17 12:37:53 -0400
-Branch: REL9_1_STABLE [fc02b87e2] 2014-04-17 12:37:53 -0400
-Branch: REL9_0_STABLE [a1b9c4630] 2014-04-17 12:37:53 -0400
-Branch: REL8_4_STABLE [df2e62603] 2014-04-17 12:37:53 -0400
--->
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [9d0826c59] 2014-06-30 16:59:19 -0400
-Branch: REL9_4_STABLE [37a4d3d70] 2014-06-30 16:59:44 -0400
-Branch: REL9_3_STABLE [f14e40852] 2014-06-30 17:00:22 -0400
-Branch: REL9_2_STABLE [f6d6b7b1e] 2014-06-30 17:00:40 -0400
--->
-
- <listitem>
- <para>
- Prevent use of already-freed memory in
- <filename>contrib/pgstattuple</filename>'s <function>pgstat_heap()</function>
- (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c941aed96] 2014-05-29 13:51:02 -0400
-Branch: REL9_3_STABLE [961dd203a] 2014-05-29 13:51:05 -0400
-Branch: REL9_2_STABLE [2fb9fb661] 2014-05-29 13:51:09 -0400
-Branch: REL9_1_STABLE [3606754da] 2014-05-29 13:51:12 -0400
-Branch: REL9_0_STABLE [b2f6754d2] 2014-05-29 13:51:15 -0400
-Branch: REL8_4_STABLE [fd785441f] 2014-05-29 13:51:18 -0400
--->
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b1864fabf] 2014-07-19 15:00:50 -0400
-Branch: REL9_4_STABLE [e5ea60e80] 2014-07-19 15:01:05 -0400
-Branch: REL9_3_STABLE [bd5458f52] 2014-07-19 15:01:12 -0400
-Branch: REL9_2_STABLE [7d09e4854] 2014-07-19 15:01:18 -0400
-Branch: REL9_1_STABLE [40ccb6530] 2014-07-19 15:01:28 -0400
-Branch: REL9_0_STABLE [7659b6913] 2014-07-19 15:01:38 -0400
-Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-4">
- <title>Release 9.3.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.3.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.4</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, the error fixed in the first changelog entry below could have
- resulted in corrupt data on standby servers. It may be prudent to
- reinitialize standby servers from fresh base backups after installing
- this update.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.3,
- see <xref linkend="release-9-3-3"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [6bfa88acd] 2014-02-27 11:13:39 -0300
-Branch: REL9_3_STABLE [9a57858f1] 2014-02-27 11:23:24 -0300
--->
-
- <listitem>
- <para>
- Fix WAL replay of locking an already-updated tuple (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This error caused updated rows to not be found by index scans, resulting
- in inconsistent query results depending on whether an index scan was
- used. Subsequent processing could result in constraint violations,
- since the previously updated row would not be found by later index
- searches, thus possibly allowing conflicting rows to be inserted.
- Since this error is in WAL replay, it would only manifest during crash
- recovery or on standby servers. The improperly-replayed case most
- commonly arises when a table row that is referenced by a foreign-key
- constraint is updated concurrently with creation of a referencing row.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [fecfc2b91] 2014-03-12 10:04:57 +0200
-Branch: REL9_3_STABLE [4738cc356] 2014-03-12 10:05:46 +0200
-Branch: REL9_2_STABLE [91f932cf4] 2014-03-12 10:07:22 +0200
-Branch: REL9_1_STABLE [63e59c259] 2014-03-12 10:09:22 +0200
-Branch: REL9_0_STABLE [9954e1f03] 2014-03-12 10:09:43 +0200
-Branch: REL8_4_STABLE [e2bccdfcc] 2014-03-12 10:10:04 +0200
--->
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7bae0284e] 2014-03-13 12:02:54 -0400
-Branch: REL9_3_STABLE [0d11fed8e] 2014-03-13 12:02:56 -0400
-Branch: REL9_2_STABLE [bbe9621a9] 2014-03-13 12:03:00 -0400
-Branch: REL9_1_STABLE [7bfdf10f5] 2014-03-13 12:03:03 -0400
-Branch: REL9_0_STABLE [7aea1050e] 2014-03-13 12:03:07 -0400
--->
-
- <listitem>
- <para>
- Avoid race condition in checking transaction commit status during
- receipt of a <command>NOTIFY</command> message (Marko Tiikkaja)
- </para>
-
- <para>
- This prevents a scenario wherein a sufficiently fast client might
- respond to a notification before database updates made by the
- notifier have become visible to the recipient.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bf4052faa] 2014-03-06 11:37:02 -0500
-Branch: REL9_3_STABLE [3973034e6] 2014-03-06 11:37:04 -0500
--->
-
- <listitem>
- <para>
- Allow materialized views to be referenced in <command>UPDATE</command>
- and <command>DELETE</command> commands (Michael Paquier)
- </para>
-
- <para>
- Previously such queries failed with a complaint about not being able
- to lock rows in the materialized view.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9662143f0] 2014-03-01 15:20:56 -0500
-Branch: REL9_3_STABLE [f5f21315d] 2014-03-01 15:21:00 -0500
-Branch: REL9_2_STABLE [03e6423fc] 2014-03-01 15:21:04 -0500
-Branch: REL9_1_STABLE [a9eb4924a] 2014-03-01 15:21:07 -0500
-Branch: REL9_0_STABLE [43af0e8c6] 2014-03-01 15:21:11 -0500
-Branch: REL8_4_STABLE [b6e143458] 2014-03-01 15:21:13 -0500
--->
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a222f7fda] 2014-02-18 12:44:20 -0500
-Branch: REL9_3_STABLE [0aaa42241] 2014-02-18 12:44:24 -0500
-Branch: REL9_2_STABLE [d7cd6a9d5] 2014-02-18 12:44:27 -0500
-Branch: REL9_1_STABLE [e6f7fe983] 2014-02-18 12:44:30 -0500
-Branch: REL9_0_STABLE [19d66ab05] 2014-02-18 12:44:33 -0500
-Branch: REL8_4_STABLE [dd378dd1e] 2014-02-18 12:44:36 -0500
--->
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7c3187494] 2014-03-06 19:31:05 -0500
-Branch: REL9_3_STABLE [f557826f8] 2014-03-06 19:31:09 -0500
-Branch: REL9_2_STABLE [5ec41e345] 2014-03-06 19:31:12 -0500
-Branch: REL9_1_STABLE [f3e3f6c5b] 2014-03-06 19:31:16 -0500
-Branch: REL9_0_STABLE [bed1259e5] 2014-03-06 19:31:19 -0500
-Branch: REL8_4_STABLE [f043bddfe] 2014-03-06 19:31:22 -0500
--->
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fccebe421] 2014-02-25 16:04:06 -0500
-Branch: REL9_3_STABLE [4162a55c7] 2014-02-25 16:04:09 -0500
-Branch: REL9_2_STABLE [00283cae1] 2014-02-25 16:04:12 -0500
-Branch: REL9_1_STABLE [3e2db4c80] 2014-02-25 16:04:16 -0500
-Branch: REL9_0_STABLE [1e0fb6a2c] 2014-02-25 16:04:20 -0500
--->
-
- <listitem>
- <para>
- Improve performance of index endpoint probes during planning (Tom Lane)
- </para>
-
- <para>
- This change fixes a significant performance problem that occurred
- when there were many not-yet-committed rows at the end of the index,
- which is a common situation for indexes on sequentially-assigned
- values such as timestamps or sequence-generated identifiers.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [77585bce0] 2014-02-21 17:10:46 -0500
-Branch: REL9_3_STABLE [e8655a77f] 2014-02-21 17:10:49 -0500
--->
-
- <listitem>
- <para>
- Use non-default selectivity estimates for
- <literal><replaceable>value</replaceable> IN (<replaceable>list</replaceable>)</literal> and
- <literal><replaceable>value</replaceable> <replaceable>operator</replaceable> ANY
- (<replaceable>array</replaceable>)</literal>
- expressions when the righthand side is a stable expression (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [2b4f2ab33] 2014-03-05 13:03:29 -0300
-Branch: REL9_3_STABLE [13ea43ab8] 2014-03-05 13:03:29 -0300
--->
-
- <listitem>
- <para>
- Remove the correct per-database statistics file during <command>DROP
- DATABASE</command> (Tomas Vondra)
- </para>
-
- <para>
- This fix prevents a permanent leak of statistics file space.
- Users who have done many <command>DROP DATABASE</command> commands since
- upgrading to <productname>PostgreSQL</productname> 9.3 may wish to check their
- statistics directory and delete statistics files that do not
- correspond to any existing database. Please note
- that <filename>db_0.stat</filename> should not be removed.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [94ae6ba74] 2014-03-06 21:38:51 +0200
-Branch: REL9_3_STABLE [dcd1131c8] 2014-03-06 21:40:50 +0200
--->
-
- <listitem>
- <para>
- Fix <application>walsender</application> ping logic to avoid inappropriate
- disconnects under continuous load (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- <application>walsender</application> failed to send ping messages to the client
- if it was constantly busy sending WAL data; but it expected to see
- ping responses despite that, and would therefore disconnect
- once <xref linkend="guc-wal-sender-timeout"/> elapsed.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [5c6d9fc4b] 2014-03-17 20:37:50 +0900
-Branch: REL9_3_STABLE [385723405] 2014-03-17 20:41:12 +0900
-Branch: REL9_2_STABLE [7899aa356] 2014-03-17 20:41:52 +0900
-Branch: REL9_1_STABLE [65e8dbb18] 2014-03-17 20:42:35 +0900
--->
-
- <listitem>
- <para>
- Fix <application>walsender</application>'s failure to shut down cleanly when client
- is <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [956685f82] 2014-03-05 14:48:14 +0200
-Branch: REL9_3_STABLE [a5363a696] 2014-03-05 14:46:56 +0200
-Branch: REL9_2_STABLE [e7ec05562] 2014-03-05 14:45:55 +0200
--->
-
- <listitem>
- <para>
- Check WAL level and hot standby parameters correctly when doing crash
- recovery that will be followed by archive recovery (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [af246c37c] 2014-03-05 13:51:19 +0200
-Branch: REL9_3_STABLE [2cd72ba42] 2014-03-05 13:52:21 +0200
-Branch: REL9_2_STABLE [931dc26b0] 2014-03-05 13:57:32 +0200
-Branch: REL9_1_STABLE [7552d3d1a] 2014-03-05 13:58:14 +0200
-Branch: REL9_0_STABLE [4521cc850] 2014-03-05 13:58:22 +0200
--->
-
- <listitem>
- <para>
- Fix test to see if hot standby connections can be allowed immediately
- after a crash (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [5a7e75849] 2014-02-20 10:46:54 +0200
--->
-
- <listitem>
- <para>
- Add read-only <xref linkend="guc-data-checksums"/> parameter to
- display whether page checksums are enabled (Heikki Linnakangas)
- </para>
-
- <para>
- Without this parameter, determining the state of checksum
- processing was difficult.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6c461cb92] 2014-03-13 20:59:42 -0400
-Branch: REL9_3_STABLE [41bd2cf55] 2014-03-13 20:59:45 -0400
-Branch: REL9_2_STABLE [7a289bb6d] 2014-03-13 20:59:48 -0400
-Branch: REL9_1_STABLE [f16ca9755] 2014-03-13 20:59:51 -0400
-Branch: REL9_0_STABLE [dad55e1e9] 2014-03-13 20:59:55 -0400
-Branch: REL8_4_STABLE [172c53e92] 2014-03-13 20:59:57 -0400
--->
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [bd1154ede] 2014-03-16 23:22:21 -0300
-Branch: REL9_3_STABLE [60829079d] 2014-03-16 23:22:22 -0300
-Branch: REL9_2_STABLE [ba5946e86] 2014-03-16 23:22:22 -0300
-Branch: REL9_1_STABLE [f84997c7e] 2014-03-16 23:22:22 -0300
--->
-
- <listitem>
- <para>
- Fix memory leak in PL/Perl when returning a composite result, including
- multiple-OUT-parameter cases (Alex Hunsaker)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e85a5ffba] 2014-03-10 15:47:40 -0400
-Branch: REL9_3_STABLE [f64f4c370] 2014-03-10 15:47:09 -0400
-Branch: REL9_2_STABLE [b315b767f] 2014-03-10 15:47:13 -0400
--->
-
- <listitem>
- <para>
- Fix tracking of <application>psql</application> script line numbers
- during <literal>\copy</literal> from out-of-line data
- (Kumar Rajeev Rastogi, Amit Khandekar)
- </para>
-
- <para>
- <literal>\copy ... from</literal> incremented the script file line number
- for each data line, even if the data was not coming from the script
- file. This mistake resulted in wrong line numbers being reported for
- any errors occurring later in the same script file.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [83204e100] 2014-03-07 16:36:40 -0500
-Branch: REL9_3_STABLE [73f0483fd] 2014-03-07 16:36:50 -0500
--->
-
- <listitem>
- <para>
- Fix <application>contrib/postgres_fdw</application> to handle multiple join
- conditions properly (Tom Lane)
- </para>
-
- <para>
- This oversight could result in sending <literal>WHERE</literal> clauses to
- the remote server for execution even though the clauses are not known
- to have the same semantics on the remote server (for example, clauses
- that use non-built-in operators). The query might succeed anyway,
- but it could also fail with errors from the remote server, or worse
- give silently wrong answers.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [7f3e17b48] 2014-02-18 14:45:58 +0100
-Branch: REL9_3_STABLE [b88ecb002] 2014-02-18 14:49:41 +0100
-Branch: REL9_2_STABLE [062deb313] 2014-02-18 14:50:19 +0100
-Branch: REL9_1_STABLE [fae12f331] 2014-03-16 11:46:20 +0100
-Branch: REL9_0_STABLE [665515539] 2014-03-16 11:47:37 +0100
--->
-
- <listitem>
- <para>
- Prevent intermittent <quote>could not reserve shared memory region</quote>
- failures on recent Windows versions (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aba7f5677] 2014-03-15 13:36:07 -0400
-Branch: REL9_3_STABLE [b5de16997] 2014-03-15 13:36:24 -0400
-Branch: REL9_2_STABLE [f2063b379] 2014-03-15 13:36:32 -0400
-Branch: REL9_1_STABLE [2df1bf21c] 2014-03-15 13:36:41 -0400
-Branch: REL9_0_STABLE [0033f5324] 2014-03-15 13:36:49 -0400
-Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-3">
- <title>Release 9.3.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.2.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.3</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, several of the issues corrected in this release could have
- resulted in corruption of foreign-key constraints; that is, there
- might now be referencing rows for which there is no matching row in
- the referenced table. It may be worthwhile to recheck such
- constraints after installing this update. The simplest way to do that
- is to drop and recreate each suspect constraint; however, that will
- require taking an exclusive lock on both tables, so it is unlikely to
- be acceptable in production databases. Alternatively, you can do a
- manual join query between the two tables to look for unmatched rows.
- </para>
-
- <para>
- Note also the requirement for replication standby servers to be
- upgraded before their master server is upgraded.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.2,
- see <xref linkend="release-9-3-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [fea164a72] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [475a1fbc4] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [15a8f97b9] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [5d320a16c] 2014-02-17 09:33:33 -0500
-Branch: REL9_0_STABLE [789063697] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [ff35425c8] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [537cbd35c] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [fc4a04a3c] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [1d701d28a] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [23b5a85e6] 2014-02-17 09:33:36 -0500
-Branch: REL9_0_STABLE [c0ac4c75f] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [823b9dc25] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [5f173040e] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [e1e0a4d79] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [820ab11fb] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [b5c574399] 2014-02-17 09:33:36 -0500
-Branch: REL9_0_STABLE [43d4e965e] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [e46476133] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [4318daecc] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [e4a4fa223] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [f416622be] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [6a10e57b0] 2014-02-17 09:33:37 -0500
-Branch: REL9_0_STABLE [b9c3bb1b3] 2014-02-17 09:33:38 -0500
-Branch: REL8_4_STABLE [d0ed1a6c0] 2014-02-17 09:33:39 -0500
--->
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [31400a673] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [7a362a176] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [12bbce15d] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [0b7026d96] 2014-02-17 09:33:37 -0500
-Branch: REL9_0_STABLE [2c3203e18] 2014-02-17 09:33:38 -0500
-Branch: REL8_4_STABLE [98be8a6ea] 2014-02-17 09:33:39 -0500
--->
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [01824385a] 2014-02-17 11:20:21 -0500
-Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
-Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
-Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
-Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
-Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
--->
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [01824385a] 2014-02-17 11:20:21 -0500
-Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
-Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
-Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
-Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
-Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
--->
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6ef325429] 2014-02-17 11:24:32 -0500
-Branch: REL9_3_STABLE [1ec5988f3] 2014-02-17 11:24:38 -0500
-Branch: REL9_2_STABLE [ff3d533e5] 2014-02-17 11:24:42 -0500
-Branch: REL9_1_STABLE [800a3744b] 2014-02-17 11:24:45 -0500
-Branch: REL9_0_STABLE [369c229d2] 2014-02-17 11:24:48 -0500
-Branch: REL8_4_STABLE [f58663ab1] 2014-02-17 11:24:51 -0500
--->
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [3b97e6823] 2013-12-16 11:29:50 -0300
-Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
--->
-
- <listitem>
- <para>
- Rework tuple freezing protocol
- (&Aacute;lvaro Herrera, Andres Freund)
- </para>
-
- <para>
- The logic for tuple freezing was unable to handle some cases involving
- freezing of
- <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</firstterm>
- IDs</link>, with the practical effect that shared row-level locks
- might be forgotten once old enough.
- </para>
-
- <para>
- Fixing this required changing the WAL record format for tuple
- freezing. While this is no issue for standalone servers, when using
- replication it means that <emphasis>standby servers must be upgraded
- to 9.3.3 or later before their masters are</emphasis>. An older standby will
- be unable to interpret freeze records generated by a newer master, and
- will fail with a PANIC message. (In such a case, upgrading the
- standby should be sufficient to let it resume execution.)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [801c2dc72] 2014-02-13 19:36:31 -0300
-Branch: REL9_3_STABLE [fb47de2be] 2014-02-13 19:30:30 -0300
--->
-
- <listitem>
- <para>
- Create separate GUC parameters to control multixact freezing
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- 9.3 requires multixact tuple labels to be frozen before
- they grow too old, in the same fashion as plain transaction ID labels
- have been frozen for some time. Previously, the transaction ID
- freezing parameters were used for multixact IDs too; but since
- the consumption rates of transaction IDs and multixact IDs can be
- quite different, this did not work very well. Introduce new settings
- <xref linkend="guc-vacuum-multixact-freeze-min-age"/>,
- <xref linkend="guc-vacuum-multixact-freeze-table-age"/>, and
- <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>
- to control when to freeze multixacts.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [11ac4c73c] 2013-12-18 13:45:51 -0300
-Branch: REL9_3_STABLE [db1014bc4] 2013-12-18 13:31:27 -0300
--->
-
- <listitem>
- <para>
- Account for remote row locks propagated by local updates
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If a row was locked by transaction A, and transaction B updated it,
- the new version of the row created by B would be locked by A, yet
- visible only to B. If transaction B then again updated the row, A's
- lock wouldn't get checked, thus possibly allowing B to complete when
- it shouldn't. This case is new in 9.3 since prior versions did not
- have any types of row locking that would permit another transaction
- to update the row at all.
- </para>
-
- <para>
- This oversight could allow referential integrity checks to give false
- positives (for instance, allow deletes that should have been rejected).
- Applications using the new commands <literal>SELECT FOR KEY SHARE</literal>
- and <literal>SELECT FOR NO KEY UPDATE</literal> might also have suffered
- locking failures of this kind.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [07aeb1fec] 2013-12-05 12:21:55 -0300
-Branch: REL9_3_STABLE [c6cd27e36] 2013-12-05 12:21:55 -0300
--->
-
- <listitem>
- <para>
- Prevent <quote>forgetting</quote> valid row locks when one of several
- holders of a row lock aborts (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This was yet another mechanism by which a shared row lock could be
- lost, thus possibly allowing updates that should have been prevented
- by foreign-key constraints.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [312bde3d4] 2013-12-05 17:47:51 -0300
-Branch: REL9_3_STABLE [2dcc48c35] 2013-12-05 17:47:51 -0300
--->
-
- <listitem>
- <para>
- Fix incorrect logic during update chain locking
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This mistake could result in spurious <quote>could not serialize access
- due to concurrent update</quote> errors in <literal>REPEATABLE READ</literal>
- and <literal>SERIALIZABLE</literal> transaction isolation modes.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a50d97625] 2014-01-02 18:17:07 -0300
-Branch: REL9_3_STABLE [03db79459] 2014-01-02 18:17:07 -0300
--->
-
- <listitem>
- <para>
- Handle wraparound correctly during extension or truncation
- of <filename>pg_multixact/members</filename>
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [638cf09e7] 2014-01-02 18:17:29 -0300
-Branch: REL9_3_STABLE [948a3dfbb] 2014-01-02 18:17:29 -0300
--->
-
- <listitem>
- <para>
- Fix handling of 5-digit filenames in <filename>pg_multixact/members</filename>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- As of 9.3, these names can be more than 4 digits, but the directory
- cleanup code ignored such files.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d881dd623] 2013-12-13 17:16:25 -0300
-Branch: REL9_3_STABLE [0bc00363b] 2013-12-13 17:16:25 -0300
--->
-
- <listitem>
- <para>
- Improve performance of multixact cache code
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [13aa62443] 2013-12-19 16:53:49 -0300
-Branch: REL9_3_STABLE [85d3b3c3a] 2013-12-19 16:39:59 -0300
--->
-
- <listitem>
- <para>
- Optimize updating a row that's already locked by the same transaction
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This fixes a performance regression from pre-9.3 versions when doing
- <literal>SELECT FOR UPDATE</literal> followed by <literal>UPDATE/DELETE</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [4d894b41c] 2014-02-14 15:15:09 +0200
-Branch: REL9_3_STABLE [762bd379a] 2014-02-14 15:18:34 +0200
--->
-
- <listitem>
- <para>
- During archive recovery, prefer highest timeline number when WAL
- segments with the same ID are present in both the archive
- and <filename>pg_xlog/</filename> (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, not-yet-archived segments could get ignored during
- recovery. This reverts an undesirable behavioral change in 9.3.0
- back to the way things worked pre-9.3.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6f2aead1f] 2014-02-12 14:52:16 -0500
-Branch: REL9_3_STABLE [7190f7a34] 2014-02-12 14:52:20 -0500
-Branch: REL9_2_STABLE [bc7ab301a] 2014-02-12 14:52:23 -0500
-Branch: REL9_1_STABLE [a69cc9b2c] 2014-02-12 14:52:26 -0500
-Branch: REL9_0_STABLE [7fedd79b7] 2014-02-12 14:52:29 -0500
-Branch: REL8_4_STABLE [9620fede9] 2014-02-12 14:52:32 -0500
--->
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [d59ff6c11] 2014-01-08 15:03:09 +0200
-Branch: REL9_3_STABLE [425bef6ee] 2014-01-08 14:32:22 +0200
-Branch: REL9_2_STABLE [82c75f9dd] 2014-01-08 14:28:55 +0200
-Branch: REL9_1_STABLE [e56430c62] 2014-01-08 14:33:58 +0200
-Branch: REL9_0_STABLE [5301c8395] 2014-01-08 14:34:21 +0200
--->
-
- <listitem>
- <para>
- Fix bug in determining when recovery has reached consistency
- (Tomonari Katsumata, Heikki Linnakangas)
- </para>
-
- <para>
- In some cases WAL replay would mistakenly conclude that the database
- was already consistent at the start of replay, thus possibly allowing
- hot-standby queries before the database was really consistent. Other
- symptoms such as <quote>PANIC: WAL contains references to invalid
- pages</quote> were also possible.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a49633d8d] 2013-12-13 14:15:04 +0200
-Branch: REL9_3_STABLE [615299cf6] 2013-12-13 14:23:02 +0200
--->
-
- <listitem>
- <para>
- Fix WAL logging of visibility map changes (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [061b079f8] 2014-01-14 17:35:21 -0500
-Branch: REL9_3_STABLE [ebde6c401] 2014-01-14 17:34:51 -0500
-Branch: REL9_2_STABLE [ad2e041a3] 2014-01-14 17:34:54 -0500
-Branch: REL9_1_STABLE [ab4bb5c47] 2014-01-14 17:34:57 -0500
-Branch: REL9_0_STABLE [5d742b9ce] 2014-01-14 17:35:00 -0500
--->
-
- <listitem>
- <para>
- Fix improper locking of btree index pages while replaying
- a <literal>VACUUM</literal> operation in hot-standby mode (Andres Freund,
- Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This error could result in <quote>PANIC: WAL contains references to
- invalid pages</quote> failures.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [22122c83f] 2013-12-03 23:16:01 +0200
-Branch: REL9_3_STABLE [8fd04cb32] 2013-12-03 22:13:16 +0200
-Branch: REL9_2_STABLE [06df57ac6] 2013-12-03 22:34:31 +0200
-Branch: REL9_1_STABLE [e6acb956a] 2013-12-03 22:34:43 +0200
-Branch: REL9_0_STABLE [760606dc5] 2013-12-03 23:01:31 +0200
-Branch: REL8_4_STABLE [67fc33d3a] 2013-12-03 22:53:26 +0200
--->
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [3739e5ab9] 2014-01-08 23:28:52 +0200
-Branch: REL9_3_STABLE [3aefff422] 2014-01-08 23:30:46 +0200
-Branch: REL9_2_STABLE [3bd8987ef] 2014-01-08 23:30:55 +0200
-Branch: REL9_1_STABLE [0402f2441] 2014-01-08 23:31:01 +0200
--->
-
- <listitem>
- <para>
- When <literal>pause_at_recovery_target</literal>
- and <literal>recovery_target_inclusive</literal> are both set, ensure the
- target record is applied before pausing, not after (Heikki
- Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a472ae1e4] 2014-01-16 23:15:41 +0200
-Branch: REL9_3_STABLE [e34acac62] 2014-01-16 23:14:57 +0200
--->
-
- <listitem>
- <para>
- Ensure walreceiver sends hot-standby feedback messages on time even
- when there is a continuous stream of data (Andres Freund, Amit
- Kapila)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e8312b4f0] 2013-12-13 11:50:15 -0500
-Branch: REL9_3_STABLE [478af9b79] 2013-12-13 11:50:25 -0500
--->
-
- <listitem>
- <para>
- Prevent timeout interrupts from taking control away from mainline
- code unless <varname>ImmediateInterruptOK</varname> is set
- (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This is a serious issue for any application making use of statement
- timeouts, as it could cause all manner of strange failures after a
- timeout occurred. We have seen reports of <quote>stuck</quote> spinlocks,
- ERRORs being unexpectedly promoted to PANICs, unkillable backends,
- and other misbehaviors.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [d1981719a] 2014-01-31 21:31:08 -0500
-Branch: REL9_3_STABLE [5d807a74b] 2014-01-31 21:34:44 -0500
-Branch: REL9_2_STABLE [ebe334463] 2014-01-31 21:35:32 -0500
-Branch: REL9_1_STABLE [8e6bfc9eb] 2014-01-31 21:36:23 -0500
-Branch: REL9_0_STABLE [798243a81] 2014-01-31 21:40:20 -0500
-Branch: REL8_4_STABLE [458b20f2d] 2014-01-31 21:41:09 -0500
--->
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [214c7a4f0] 2014-02-01 16:21:23 -0500
-Branch: REL9_3_STABLE [6f1a40773] 2014-02-01 16:21:30 -0500
-Branch: REL9_2_STABLE [81b116d98] 2014-02-01 16:21:33 -0500
-Branch: REL9_1_STABLE [03f06ff38] 2014-02-01 16:21:38 -0500
--->
-
- <listitem>
- <para>
- Fix race conditions in walsender shutdown logic and walreceiver
- SIGHUP signal handler (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [571addd72] 2014-01-29 20:04:43 -0500
-Branch: REL9_3_STABLE [bf8ee6f15] 2014-01-29 20:04:01 -0500
-Branch: REL9_2_STABLE [3e71ce1e9] 2014-01-29 20:04:05 -0500
-Branch: REL9_1_STABLE [af259c691] 2014-01-29 20:04:08 -0500
-Branch: REL9_0_STABLE [d17a667e8] 2014-01-29 20:04:11 -0500
-Branch: REL8_4_STABLE [01b882fd8] 2014-01-29 20:04:14 -0500
--->
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [910bac595] 2014-01-11 16:36:07 -0500
-Branch: REL9_3_STABLE [5bfcc9ec5] 2014-01-11 16:35:30 -0500
-Branch: REL9_2_STABLE [2de905186] 2014-01-11 16:35:34 -0500
-Branch: REL9_1_STABLE [3f721588a] 2014-01-11 16:35:37 -0500
-Branch: REL9_0_STABLE [d9c4442b8] 2014-01-11 16:35:41 -0500
-Branch: REL8_4_STABLE [d0070ac81] 2014-01-11 16:35:44 -0500
--->
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [74242c23c] 2013-12-05 12:48:28 -0500
-Branch: REL9_3_STABLE [2a6e1a554] 2013-12-05 12:48:31 -0500
-Branch: REL9_2_STABLE [41042970b] 2013-12-05 12:48:35 -0500
-Branch: REL9_1_STABLE [ad910ccdc] 2013-12-05 12:48:37 -0500
-Branch: REL9_0_STABLE [36352ceb4] 2013-12-05 12:48:41 -0500
-Branch: REL8_4_STABLE [7635dae55] 2013-12-05 12:48:44 -0500
--->
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [44c216330] 2014-02-13 14:24:42 -0500
-Branch: REL9_3_STABLE [ca1c17181] 2014-02-13 14:24:45 -0500
-Branch: REL9_2_STABLE [8439ee415] 2014-02-13 14:24:49 -0500
-Branch: REL9_1_STABLE [170590261] 2014-02-13 14:24:52 -0500
-Branch: REL9_0_STABLE [148052d25] 2014-02-13 14:24:55 -0500
-Branch: REL8_4_STABLE [a8a46d846] 2014-02-13 14:24:58 -0500
--->
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0c2338abb] 2014-02-03 19:47:57 -0500
-Branch: REL9_3_STABLE [4c70cb1d3] 2014-02-03 19:48:00 -0500
--->
-
- <listitem>
- <para>
- Fix parsing of Unicode literals and identifiers just before the end
- of a command string or function body (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6c36f383d] 2014-01-21 22:49:22 -0500
-Branch: REL9_3_STABLE [d1e3070f0] 2014-01-21 22:56:30 -0500
-Branch: REL9_2_STABLE [c0e6169e1] 2014-01-21 22:56:34 -0500
-Branch: REL9_1_STABLE [cbd850bf6] 2014-01-21 23:00:58 -0500
-Branch: REL9_0_STABLE [f2eede9b5] 2014-01-21 23:01:40 -0500
--->
-
- <listitem>
- <para>
- Allow keywords that are type names to be used in lists of roles
- (Stephen Frost)
- </para>
-
- <para>
- A previous patch allowed such keywords to be used without quoting
- in places such as role identifiers; but it missed cases where a
- list of role identifiers was permitted, such as <literal>DROP ROLE</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7ab321404] 2013-12-02 20:28:45 -0500
-Branch: REL9_3_STABLE [b44ae4893] 2013-12-02 20:28:49 -0500
-Branch: REL9_2_STABLE [6698782f1] 2013-12-02 20:28:53 -0500
-Branch: REL9_1_STABLE [f67b8aeab] 2013-12-02 20:28:56 -0500
--->
-
- <listitem>
- <para>
- Fix parser crash for <literal>EXISTS(SELECT * FROM
- zero_column_table)</literal> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9ec6199d1] 2013-12-10 16:10:17 -0500
-Branch: REL9_3_STABLE [9d2e07fec] 2013-12-10 16:10:20 -0500
-Branch: REL9_2_STABLE [f5d9fdcc7] 2013-12-10 16:10:24 -0500
-Branch: REL9_1_STABLE [48e5cfde8] 2013-12-10 16:10:28 -0500
-Branch: REL9_0_STABLE [41e9990cd] 2013-12-10 16:10:31 -0500
-Branch: REL8_4_STABLE [884c6384a] 2013-12-10 16:10:36 -0500
--->
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [043f6ff05] 2014-01-30 14:51:16 -0500
-Branch: REL9_3_STABLE [a4aa854ca] 2014-01-30 14:51:19 -0500
--->
-
- <listitem>
- <para>
- Fix mishandling of <literal>WHERE</literal> conditions pulled up from
- a <literal>LATERAL</literal> subquery (Tom Lane)
- </para>
-
- <para>
- The typical symptom of this bug was a <quote>JOIN qualification
- cannot refer to other relations</quote> error, though subtle logic
- errors in created plans seem possible as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [158b7fa6a] 2014-01-11 19:03:12 -0500
-Branch: REL9_3_STABLE [27ff4cfe7] 2014-01-11 19:03:15 -0500
--->
-
- <listitem>
- <para>
- Disallow <literal>LATERAL</literal> references to the target table of
- an <literal>UPDATE/DELETE</literal> (Tom Lane)
- </para>
-
- <para>
- While this might be allowed in some future release, it was
- unintentional in 9.3, and didn't work quite right anyway.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c03ad5602] 2013-12-14 17:33:53 -0500
-Branch: REL9_3_STABLE [324577f39] 2013-12-14 17:33:56 -0500
-Branch: REL9_2_STABLE [5d545b7ed] 2013-12-14 17:34:00 -0500
--->
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE</literal> of an inherited target table
- that has <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Without this fix, <literal>UNION ALL</literal> subqueries aren't correctly
- inserted into the update plans for inheritance child tables after the
- first one, typically resulting in no update happening for those child
- table(s).
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4eeda92d8] 2013-12-23 22:18:48 -0500
-Branch: REL9_3_STABLE [663f8419b] 2013-12-23 22:18:23 -0500
--->
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command> to not fail on a column that's a domain over
- a range type (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [628652620] 2014-01-11 13:42:42 -0500
-Branch: REL9_3_STABLE [36785a21b] 2014-01-11 13:41:51 -0500
-Branch: REL9_2_STABLE [f0381680f] 2014-01-11 13:41:56 -0500
-Branch: REL9_1_STABLE [9387f4e1b] 2014-01-11 13:42:00 -0500
-Branch: REL9_0_STABLE [2d76d75d9] 2014-01-11 13:42:05 -0500
-Branch: REL8_4_STABLE [00b77771a] 2014-01-11 13:42:11 -0500
--->
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6f25c62d7] 2014-01-18 18:41:52 -0500
-Branch: REL9_3_STABLE [86e58ae02] 2014-01-18 18:49:08 -0500
-Branch: REL9_2_STABLE [1fe06595a] 2014-01-18 18:49:41 -0500
-Branch: REL9_1_STABLE [d2636486b] 2014-01-18 18:50:09 -0500
-Branch: REL9_0_STABLE [e70c42821] 2014-01-18 18:50:29 -0500
-Branch: REL8_4_STABLE [0fb4e3ceb] 2014-01-18 18:50:47 -0500
--->
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c01bc51f8] 2013-12-30 14:00:02 -0500
-Branch: REL9_3_STABLE [9a6e2b150] 2013-12-30 14:00:05 -0500
--->
-
- <listitem>
- <para>
- Fix support for extensions containing event triggers (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [080b7db72] 2014-01-08 20:18:58 -0500
-Branch: REL9_3_STABLE [47ac4473a] 2014-01-08 20:18:10 -0500
-Branch: REL9_2_STABLE [97a39f295] 2014-01-08 20:18:13 -0500
-Branch: REL9_1_STABLE [6c6c53d0b] 2014-01-08 20:18:17 -0500
-Branch: REL9_0_STABLE [6ca712fb9] 2014-01-08 20:18:20 -0500
-Branch: REL8_4_STABLE [57ac7d8a7] 2014-01-08 20:18:24 -0500
--->
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [d3ee45152] 2014-02-03 10:40:12 -0500
-Branch: REL9_3_STABLE [cdfbb78f0] 2014-02-03 10:39:13 -0500
--->
-
- <listitem>
- <para>
- Fix memory leakage in JSON functions (Craig Ringer)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [29dcf7ded] 2013-12-27 17:04:00 -0500
-Branch: REL9_3_STABLE [7dfd9f6f5] 2013-12-27 17:21:04 -0500
-Branch: REL9_2_STABLE [4825a9e95] 2013-12-27 17:21:27 -0500
--->
-
- <listitem>
- <para>
- Properly distinguish numbers from non-numbers when generating JSON
- output (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [a133bf703] 2013-12-27 15:26:24 -0600
-Branch: REL9_3_STABLE [28b60aa23] 2013-12-27 15:40:51 -0600
-Branch: REL9_2_STABLE [150a30e19] 2013-12-27 15:41:02 -0600
-Branch: REL9_1_STABLE [1f069d21d] 2013-12-27 15:41:18 -0600
-Branch: REL9_0_STABLE [918d74a07] 2013-12-27 15:41:32 -0600
-Branch: REL8_4_STABLE [b2d80147d] 2013-12-27 15:41:46 -0600
--->
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [082c0dfa1] 2014-02-01 18:27:34 -0500
-Branch: REL9_3_STABLE [9beffdcc3] 2014-02-01 18:27:40 -0500
-Branch: REL9_2_STABLE [8be095cea] 2014-02-01 18:27:44 -0500
-Branch: REL9_1_STABLE [399d23e19] 2014-02-01 18:27:48 -0500
-Branch: REL9_0_STABLE [3c7b4ef70] 2014-02-01 18:27:54 -0500
-Branch: REL8_4_STABLE [56f5d3424] 2014-02-01 18:27:12 -0500
--->
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [6c2744f1d] 2014-02-10 09:57:59 +0200
-Branch: REL9_3_STABLE [928aec71c] 2014-02-10 09:59:49 +0200
-Branch: REL9_2_STABLE [f3807106b] 2014-02-10 10:00:04 +0200
-Branch: REL9_1_STABLE [5f778e644] 2014-02-10 10:00:23 +0200
-Branch: REL9_0_STABLE [fe8a6f53e] 2014-02-10 10:00:36 +0200
-Branch: REL8_4_STABLE [6141983fb] 2014-02-10 10:00:50 +0200
--->
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [9544cc0d6] 2014-01-07 17:50:56 +0100
-Branch: REL9_3_STABLE [91c2755fc] 2014-01-07 17:51:02 +0100
-Branch: REL9_2_STABLE [61d4d14ee] 2014-01-07 17:53:00 +0100
-Branch: REL9_1_STABLE [026a91f86] 2014-01-07 18:00:36 +0100
--->
-
- <listitem>
- <para>
- Fix placement of permissions checks in <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> (Andres Freund, Magnus Hagander)
- </para>
-
- <para>
- The previous coding might attempt to do catalog access when it
- shouldn't.
- </para>
- </listitem>
-
-<!--
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [1f0626ee4] 2013-12-15 11:09:05 +0900
-Branch: REL9_3_STABLE [8122e6f85] 2013-12-15 11:10:41 +0900
-Branch: REL9_2_STABLE [0c07ef1ad] 2013-12-15 11:10:49 +0900
-Branch: REL9_1_STABLE [035226c61] 2013-12-15 11:10:56 +0900
-Branch: REL9_0_STABLE [7016d970d] 2013-12-15 11:11:02 +0900
-Branch: REL8_4_STABLE [69f77d756] 2013-12-15 11:11:11 +0900
--->
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0def2573c] 2014-02-03 14:47:17 -0500
-Branch: REL9_3_STABLE [641c08041] 2014-02-03 14:46:54 -0500
-Branch: REL9_2_STABLE [888b56570] 2014-02-03 14:46:57 -0500
--->
-
- <listitem>
- <para>
- Fix <literal>*</literal>-qualification of named parameters in SQL-language
- functions (Tom Lane)
- </para>
-
- <para>
- Given a composite-type parameter
- named <literal>foo</literal>, <literal>$1.*</literal> worked fine,
- but <literal>foo.*</literal> not so much.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [77035fa8a] 2014-01-23 22:58:58 +0900
-Branch: REL9_3_STABLE [be5d49974] 2014-01-23 23:00:30 +0900
-Branch: REL9_2_STABLE [ea311bfdf] 2014-01-23 23:01:06 +0900
-Branch: REL9_1_STABLE [1b384aff1] 2014-01-23 23:01:34 +0900
-Branch: REL9_0_STABLE [996b21cbf] 2014-01-23 23:02:03 +0900
-Branch: REL8_4_STABLE [5525529db] 2014-01-23 23:02:30 +0900
--->
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b8f00a46b] 2014-02-13 18:45:58 -0500
-Branch: REL9_3_STABLE [f208fb436] 2014-02-13 18:46:03 -0500
-Branch: REL9_2_STABLE [2573f08a1] 2014-02-13 18:45:20 -0500
-Branch: REL9_1_STABLE [7182bd239] 2014-02-13 18:45:23 -0500
-Branch: REL9_0_STABLE [218dd205b] 2014-02-13 18:45:27 -0500
-Branch: REL8_4_STABLE [7644a7bd8] 2014-02-13 18:45:32 -0500
--->
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [92459e7a7] 2014-01-04 16:05:16 -0500
-Branch: REL9_3_STABLE [341f0bc49] 2014-01-04 16:05:20 -0500
-Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
--->
-
- <listitem>
- <para>
- Fix incorrect translation handling in
- some <application>psql</application> <literal>\d</literal> commands
- (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [63ab2befe] 2014-02-12 18:45:18 +0100
-Branch: REL9_3_STABLE [c90204c60] 2014-02-12 18:46:04 +0100
-Branch: REL9_2_STABLE [0ae288d2d] 2014-02-12 14:51:00 +0100
--->
-
- <listitem>
- <para>
- Ensure <application>pg_basebackup</application>'s background process is killed
- when exiting its foreground process (Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [01025d80a] 2014-02-09 12:05:14 +0100
-Branch: REL9_3_STABLE [680baa8d2] 2014-02-09 12:09:18 +0100
-Branch: REL9_2_STABLE [165aa1da5] 2014-02-09 12:09:39 +0100
-Branch: REL9_1_STABLE [c6e5c4dd1] 2014-02-09 12:09:55 +0100
--->
-
- <listitem>
- <para>
- Fix possible incorrect printing of filenames
- in <application>pg_basebackup</application>'s verbose mode (Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [b168c5ef2] 2014-01-07 17:11:32 +0100
-Branch: REL9_3_STABLE [0463b9419] 2014-01-07 17:11:51 +0100
-Branch: REL9_2_STABLE [2edf3e82c] 2014-01-07 17:22:36 +0100
-Branch: REL9_1_STABLE [773e4d5e4] 2014-01-07 17:18:02 +0100
--->
-
- <listitem>
- <para>
- Avoid including tablespaces inside PGDATA twice in base backups
- (Dimitri Fontaine, Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [d685e2424] 2014-01-09 16:20:19 +0100
-Branch: REL9_3_STABLE [28fff0ef8] 2014-01-09 15:41:51 +0100
-Branch: REL9_2_STABLE [799728b0b] 2014-01-09 15:50:51 +0100
-Branch: REL9_1_STABLE [9f5b3a1a1] 2014-01-09 15:51:11 +0100
-Branch: REL9_0_STABLE [a29b6c342] 2014-01-09 15:51:23 +0100
-Branch: REL8_4_STABLE [d68a65b01] 2014-01-09 15:58:37 +0100
--->
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [7c957ec83] 2014-01-01 12:39:31 +0100
-Branch: REL9_3_STABLE [8404037d8] 2014-01-01 12:40:28 +0100
-Branch: REL9_2_STABLE [119a59879] 2014-01-01 12:40:42 +0100
-Branch: REL9_1_STABLE [948498274] 2014-01-01 12:44:15 +0100
-Branch: REL9_0_STABLE [17bcdd01f] 2014-01-01 12:44:44 +0100
-Branch: REL8_4_STABLE [96de4939c] 2014-01-01 12:44:58 +0100
--->
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [d6ca510d9] 2013-12-07 17:00:26 -0800
-Branch: REL9_3_STABLE [0ec530625] 2013-12-07 17:00:10 -0800
-Branch: REL9_2_STABLE [7f4ef622f] 2013-12-07 16:59:35 -0800
-Branch: REL9_1_STABLE [70165f25b] 2013-12-07 16:59:16 -0800
-Branch: REL9_0_STABLE [9057adc23] 2013-12-07 16:58:41 -0800
-Branch: REL8_4_STABLE [6c8b16e30] 2013-12-07 16:56:34 -0800
--->
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [866a1f092] 2014-01-13 15:43:29 +0200
-Branch: REL9_3_STABLE [50c5770ec] 2014-01-13 15:43:59 +0200
-Branch: REL9_2_STABLE [f6d6b42f2] 2014-01-13 15:44:02 +0200
-Branch: REL9_1_STABLE [5143dfd57] 2014-01-13 15:44:04 +0200
-Branch: REL9_0_STABLE [6c3f040be] 2014-01-13 15:44:12 +0200
-Branch: REL8_4_STABLE [492b68541] 2014-01-13 15:44:14 +0200
--->
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
-<!--
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [841a65482] 2013-12-12 19:10:35 +0900
-Branch: REL9_3_STABLE [27902bc91] 2013-12-12 19:07:53 +0900
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pgbench</filename>'s progress logging to avoid overflow
- when the scale factor is large (Tatsuo Ishii)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [69c7a9838] 2014-01-21 16:34:28 -0500
-Branch: REL9_3_STABLE [0950d67ee] 2014-01-21 16:34:31 -0500
-Branch: REL9_2_STABLE [27ab1eb7e] 2014-01-21 16:34:35 -0500
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_stat_statement</filename>'s handling
- of <literal>CURRENT_DATE</literal> and related constructs (Kyotaro
- Horiguchi)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [00d4f2af8] 2014-02-03 21:30:20 -0500
-Branch: REL9_3_STABLE [eb3d350db] 2014-02-03 21:30:28 -0500
--->
-
- <listitem>
- <para>
- Improve lost-connection error handling
- in <filename>contrib/postgres_fdw</filename> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [ad6bf0291] 2014-01-17 23:08:22 -0500
-Branch: REL9_3_STABLE [586bea612] 2014-01-17 23:11:02 -0500
-Branch: REL9_2_STABLE [526e38751] 2014-01-17 23:12:50 -0500
-Branch: REL9_1_STABLE [6d969b000] 2014-01-17 23:14:21 -0500
-Branch: REL9_0_STABLE [2346c383a] 2014-01-17 23:15:00 -0500
-Branch: REL8_4_STABLE [15699d9bf] 2014-01-17 23:17:59 -0500
--->
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [d587298b8] 2014-02-01 15:11:13 -0500
-Branch: REL9_3_STABLE [1e9876c3b] 2014-02-01 15:16:06 -0500
-Branch: REL9_2_STABLE [6e96d4db8] 2014-02-01 15:16:18 -0500
-Branch: REL9_1_STABLE [dfb4a1a21] 2014-02-01 15:16:29 -0500
-Branch: REL9_0_STABLE [59d64e7f3] 2014-02-01 15:16:40 -0500
-Branch: REL8_4_STABLE [ae3c98b9b] 2014-02-01 15:16:52 -0500
--->
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [7e1531a45] 2014-02-01 16:08:33 -0500
-Branch: REL9_3_STABLE [27942baf4] 2014-02-01 16:13:32 -0500
-Branch: REL9_2_STABLE [fad443753] 2014-02-01 16:13:46 -0500
-Branch: REL9_1_STABLE [e5c22c15d] 2014-02-01 16:14:01 -0500
-Branch: REL9_0_STABLE [1c0bf372f] 2014-02-01 16:14:15 -0500
--->
-
- <listitem>
- <para>
- Avoid using the deprecated <literal>dllwrap</literal> tool in Cygwin builds
- (Marco Atzeri)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [cec8394b5] 2014-01-26 09:49:10 -0500
-Branch: REL9_3_STABLE [56c08df55] 2014-01-26 09:45:43 -0500
--->
-
- <listitem>
- <para>
- Enable building with Visual Studio 2013 (Brar Piening)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [289541520] 2014-02-10 20:48:04 -0500
-Branch: REL9_3_STABLE [f1e522696] 2014-02-10 20:48:12 -0500
-Branch: REL9_2_STABLE [dd5605104] 2014-02-10 20:48:20 -0500
-Branch: REL9_1_STABLE [3bf5c16f1] 2014-02-10 20:48:23 -0500
-Branch: REL9_0_STABLE [e1e7642bd] 2014-02-10 20:48:27 -0500
-Branch: REL8_4_STABLE [432735cbf] 2014-02-10 20:48:30 -0500
--->
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e04641f4b] 2014-02-14 21:59:13 -0500
-Branch: REL9_3_STABLE [46cbcd50e] 2014-02-14 21:59:37 -0500
-Branch: REL9_2_STABLE [4f975b68b] 2014-02-14 21:59:42 -0500
-Branch: REL9_1_STABLE [3212ba534] 2014-02-14 21:59:46 -0500
-Branch: REL9_0_STABLE [cb84fddd9] 2014-02-14 21:59:50 -0500
-Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-2">
- <title>Release 9.3.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.1.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.2</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, this release corrects a number of potential data corruption
- issues. See the first three changelog entries below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.1,
- see <xref linkend="release-9-3-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. In 9.2.0
- and later, the probability of loss is higher, and it's also possible
- to get <quote>could not access status of transaction</quote> errors as a
- consequence of this bug. Users upgrading from releases 9.0.4 or 8.4.8
- or earlier are not affected, but all later versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in MultiXactId freezing (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- These bugs could lead to <quote>could not access status of
- transaction</quote> errors, or to duplicate or vanishing rows.
- Users upgrading from releases prior to 9.3.0 are not affected.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix latent corruption but will not be able to
- fix all pre-existing data errors.
- </para>
-
- <para>
- As a separate issue, these bugs can also cause standby servers to get
- out of sync with the primary, thus exhibiting data errors that are not
- in the primary. Therefore, it's recommended that 9.3.0 and 9.3.1
- standby servers be re-cloned from the primary (e.g., with a new base
- backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initialization of <filename>pg_clog</filename> and <filename>pg_subtrans</filename>
- during hot standby startup (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- This bug can cause data loss on standby servers at the moment they
- start to accept hot-standby queries, by marking committed transactions
- as uncommitted. The likelihood of such corruption is small unless, at
- the time of standby startup, the primary server has executed many
- updating transactions since its last checkpoint. Symptoms include
- missing rows, rows that should have been deleted being still visible,
- and obsolete versions of updated rows being still visible alongside
- their newer versions.
- </para>
-
- <para>
- This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
- Standby servers that have only been running earlier releases are not
- at risk. It's recommended that standby servers that have ever run any
- of the buggy releases be re-cloned from the primary (e.g., with a new
- base backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in update chain traversal (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- These bugs could result in incorrect behavior, such as locking or even
- updating the wrong row, in the presence of concurrent updates.
- Spurious <quote>unable to fetch updated version of tuple</quote> errors
- were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in fast-path locking (Tom Lane)
- </para>
-
- <para>
- This could lead to corruption of the lock data structures in shared
- memory, causing <quote>lock already held</quote> and other odd errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted race conditions in timeout management (Tom Lane)
- </para>
-
- <para>
- These errors could result in a server process becoming unresponsive
- because it had blocked SIGALRM and/or SIGINT.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Truncate <filename>pg_multixact</filename> contents during WAL replay
- (Andres Freund)
- </para>
-
- <para>
- This avoids ever-increasing disk space consumption in standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an anti-wraparound <command>VACUUM</command> counts a page as scanned
- when it's only verified that no tuples need freezing (Sergey
- Burladyan, Jeff Janes)
- </para>
-
- <para>
- This bug could result in failing to
- advance <structfield>relfrozenxid</structfield>, so that the table would still be
- thought to need another anti-wraparound vacuum. In the worst case the
- database might even shut down to prevent wraparound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
- </para>
-
- <para>
- This bug could result in large amounts of useless autovacuum activity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected spgdoinsert() failure</quote> error during SP-GiST
- index creation (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-allow duplicate table aliases if they're within aliased JOINs
- (Tom Lane)
- </para>
-
- <para>
- Historically <productname>PostgreSQL</productname> has accepted queries like
-<programlisting>
-SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
-</programlisting>
- although a strict reading of the SQL standard would forbid the
- duplicate usage of table alias <literal>x</literal>. A misguided change in
- 9.3.0 caused it to reject some such cases that were formerly accepted.
- Restore the previous behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning in cases where the same non-strict expression
- appears in multiple <literal>WHERE</literal> and outer <literal>JOIN</literal>
- equality clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner crash with whole-row reference to a subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect generation of optimized MIN()/MAX() plans for
- inheritance trees (Tom Lane)
- </para>
-
- <para>
- The planner could fail in cases where the MIN()/MAX() argument was an
- expression rather than a simple variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intra-transaction memory leak when printing range values
- (Tom Lane)
- </para>
-
- <para>
- This fix actually cures transient memory leaks in any datatype output
- function, but range types are the only ones known to have had a
- significant problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when reloading configuration files (Heikki
- Linnakangas, Hari Babu)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent incorrect display of dropped columns in NOT NULL and CHECK
- constraint violation messages (Michael Paquier and Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow default arguments and named-argument notation for window
- functions (Tom Lane)
- </para>
-
- <para>
- Previously, these cases were likely to crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress trailing whitespace on each line when pretty-printing rules
- and views (Tom Lane)
- </para>
-
- <para>
- 9.3.0 generated such whitespace in many more cases than previous
- versions did. To reduce unexpected behavioral changes, suppress
- unnecessary whitespace in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return a valid JSON value when converting an empty <type>hstore</type> value
- to <type>json</type>
- (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_isready</application> to handle its <option>-d</option> option
- properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of WAL file names in <application>pg_receivexlog</application>
- (Heikki Linnakangas)
- </para>
-
- <para>
- This error made <application>pg_receivexlog</application> unable to restart
- streaming after stopping, once at least 4 GB of WAL had been written.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report out-of-disk-space failures properly
- in <application>pg_upgrade</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> search for quoted cursor names
- case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-1">
- <title>Release 9.3.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.0.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.1</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use the <literal>hstore</literal> extension, see the
- first changelog entry.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</literal>
- extension during an update (Andrew Dunstan)
- </para>
-
- <para>
- Users who upgraded a pre-9.3 database containing <literal>hstore</literal>
- should execute
-<programlisting>
-ALTER EXTENSION hstore UPDATE;
-</programlisting>
- after installing 9.3.1, to add two new JSON functions and a cast.
- (If <literal>hstore</literal> is already up to date, this command does
- nothing.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when creating B-tree indexes on range columns
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeline handling bugs in <application>pg_receivexlog</application>
- (Heikki Linnakangas, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3">
- <title>Release 9.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-09-09</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 9.3 include:
- </para>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-creatematerializedview">materialized
- views</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make simple views <link
- linkend="sql-createview-updatable-views">auto-updatable</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add many features for the <type>JSON</type> data type,
- including <link linkend="functions-json">operators and functions</link>
- to extract elements from <type>JSON</type> values
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <acronym>SQL</acronym>-standard <link
- linkend="queries-lateral"><literal>LATERAL</literal></link> option for
- <literal>FROM</literal>-clause subqueries and function calls
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createforeigndatawrapper">foreign data
- wrappers</link> to support writes (inserts/updates/deletes) on foreign
- tables
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="postgres-fdw"><productname>Postgres</productname> foreign
- data wrapper</link> to allow access to
- other <productname>Postgres</productname> servers
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="event-triggers">event triggers</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add optional ability to <link
- linkend="app-initdb-data-checksums">checksum</link> data pages and
- report corruption
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent non-key-field row updates from blocking foreign key checks
- </para>
- </listitem>
-
- <listitem>
- <para>
- Greatly reduce System V <link linkend="sysvipc">shared
- memory</link> requirements
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.3</title>
-
- <para>
- A dump/restore using <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, or use
- of <link linkend="pgupgrade"><application>pg_upgrade</application></link>, is
- required for those wishing to migrate data from any previous release.
- </para>
-
- <para>
- Version 9.3 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Rename <varname>replication_timeout</varname> to <link
- linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</varname></link>
- (Amit Kapila)
- </para>
-
- <para>
- This setting controls the <link
- linkend="wal"><acronym>WAL</acronym></link> sender timeout.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require superuser privileges to set <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- because it can now potentially delay other sessions (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow in-memory sorts to use their full memory allocation (Jeff Janes)
- </para>
-
- <para>
- Users who have set <link
- linkend="guc-work-mem"><varname>work_mem</varname></link> based on the
- previous behavior may need to revisit that setting.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Throw an error if a tuple to be updated or deleted has already been
- updated or deleted by a <literal>BEFORE</literal> trigger (Kevin Grittner)
- </para>
-
- <para>
- Formerly, the originally-intended update was silently skipped,
- resulting in logical inconsistency since the trigger might have
- propagated data to other places based on the intended update.
- Now an error is thrown to prevent the inconsistent results from being
- committed. If this change affects your application, the best solution
- is usually to move the data-propagation actions to
- an <literal>AFTER</literal> trigger.
- </para>
-
- <para>
- This error will also be thrown if a query invokes a volatile function
- that modifies rows that are later modified by the query itself.
- Such cases likewise previously resulted in silently skipping updates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change multicolumn <link linkend="sql-createtable"><literal>ON UPDATE
- SET NULL/SET DEFAULT</literal></link> foreign key actions to affect
- all columns of the constraint, not just those changed in the
- <command>UPDATE</command> (Tom Lane)
- </para>
-
- <para>
- Previously, we would set only those referencing columns that
- correspond to referenced columns that were changed by
- the <command>UPDATE</command>. This was what was required by SQL-92,
- but more recent editions of the SQL standard specify the new behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force cached plans to be replanned if the <link
- linkend="guc-search-path"><varname>search_path</varname></link> changes
- (Tom Lane)
- </para>
-
- <para>
- Previously, cached plans already generated in the current session were
- not redone if the query was re-executed with a
- new <varname>search_path</varname> setting, resulting in surprising behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="functions-formatting-table"><function>to_number()</function></link>
- to properly handle a period used as a thousands separator (Tom Lane)
- </para>
-
- <para>
- Previously, a period was considered to be a decimal point even when
- the locale says it isn't and the <literal>D</literal> format code is used to
- specify use of the locale-specific decimal point. This resulted in
- wrong answers if <literal>FM</literal> format was also used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>STRICT</literal> non-set-returning functions that have
- set-returning functions in their arguments to properly return null
- rows (Tom Lane)
- </para>
-
- <para>
- A null value passed to the strict function should result in a null
- output, but instead, that output row was suppressed entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Store <link linkend="wal"><acronym>WAL</acronym></link> in a continuous
- stream, rather than skipping the last 16MB segment every 4GB
- (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, <acronym>WAL</acronym> files with names ending in <literal>FF</literal>
- were not used because of this skipping. If you have <acronym>WAL</acronym>
- backup or restore scripts that took this behavior into account, they
- will need to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <link
- linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</structname></link>,
- store the default foreign key match type (non-<literal>FULL</literal>,
- non-<literal>PARTIAL</literal>) as <literal>s</literal> for <quote>simple</quote>
- (Tom Lane)
- </para>
-
- <para>
- Previously this case was represented by <literal>u</literal>
- for <quote>unspecified</quote>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.3 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Locking</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent non-key-field row updates from blocking foreign key checks
- (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
- Shulgin, Marti Raudsepp, Alexander Shulgin)
- </para>
-
- <para>
- This change improves concurrency and reduces the probability of
- deadlocks when updating tables involved in a foreign-key constraint.
- <command>UPDATE</command>s that do not change any columns referenced in a
- foreign key now take the new <literal>NO KEY UPDATE</literal> lock mode on
- the row, while foreign key checks use the new <literal>KEY SHARE</literal>
- lock mode, which does not conflict with <literal>NO KEY UPDATE</literal>.
- So there is no blocking unless a foreign-key column is changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration variable <link
- linkend="guc-lock-timeout"><varname>lock_timeout</varname></link> to
- allow limiting how long a session will wait to acquire any one lock
- (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</acronym></link>
- support for range data types (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="gist"><acronym>GiST</acronym></link> indexes to be
- unlogged (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <acronym>GiST</acronym> index insertion by randomizing
- the choice of which page to descend to when there are multiple equally
- good alternatives (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve concurrency of hash index operations (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Collect and use histograms of upper and lower bounds, as well as range
- lengths, for <link linkend="rangetypes">range types</link>
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's cost estimation for index access (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's hash table size estimate for
- doing <literal>DISTINCT</literal> via hash aggregation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress no-op Result and Limit plan nodes
- (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce optimizer overhead by not keeping plans on the basis of cheap
- startup cost when the optimizer only cares about total cost overall
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-copy"><command>COPY FREEZE</command></link>
- option to avoid the overhead of marking tuples as frozen later
- (Simon Riggs, Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <link
- linkend="datatype-numeric"><type>NUMERIC</type></link> calculations
- (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve synchronization of sessions waiting for <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- (Peter Geoghegan)
- </para>
-
- <para>
- This greatly improves the usefulness of <varname>commit_delay</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of the <link
- linkend="sql-createtable"><command>CREATE TEMPORARY TABLE ... ON
- COMMIT DELETE ROWS</command></link> option by not truncating such temporary
- tables in transactions that haven't touched any temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make vacuum recheck visibility after it has removed expired tuples
- (Pavan Deolasee)
- </para>
-
- <para>
- This increases the chance of a page being marked as all-visible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add per-resource-owner lock caches (Jeff Janes)
- </para>
-
- <para>
- This speeds up lock bookkeeping at statement completion in
- multi-statement transactions that hold many locks; it is particularly
- useful for <application>pg_dump</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid scanning the entire relation cache at commit of a transaction
- that creates a new relation (Jeff Janes)
- </para>
-
- <para>
- This speeds up sessions that create many tables in successive
- small transactions, such as a <application>pg_restore</application> run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of transactions that drop many relations
- (Tomas Vondra)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add optional ability to <link
- linkend="app-initdb-data-checksums">checksum</link> data pages and
- report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
- </para>
-
- <para>
- The checksum option can be set during <link
- linkend="app-initdb">initdb</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Split the <link linkend="monitoring-stats">statistics collector's</link>
- data file into separate global and per-database files (Tomas Vondra)
- </para>
-
- <para>
- This reduces the I/O required for statistics tracking.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the statistics collector to operate properly in cases where the
- system clock goes backwards (Tom Lane)
- </para>
-
- <para>
- Previously, statistics collection would stop until the time again
- reached the latest time previously recorded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Emit an informative message to postmaster standard error when we
- are about to stop logging there
- (Tom Lane)
- </para>
-
- <para>
- This should help reduce user confusion about where to look for log
- output in common configurations that log to standard error only during
- postmaster startup.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- When an authentication failure occurs, log the relevant
- <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- line, to ease debugging of unintended failures
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="auth-ldap"><acronym>LDAP</acronym></link> error
- reporting and documentation (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for specifying <acronym>LDAP</acronym> authentication parameters
- in <acronym>URL</acronym> format, per RFC 4516 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the <link
- linkend="guc-ssl-ciphers"><varname>ssl_ciphers</varname></link> parameter
- to start with <literal>DEFAULT</literal>, rather than <literal>ALL</literal>,
- then remove insecure ciphers (Magnus Hagander)
- </para>
-
- <para>
- This should yield a more appropriate SSL cipher set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Parse and load <link
- linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>
- once, not during each connection (Amit Kapila)
- </para>
-
- <para>
- This is similar to how <filename>pg_hba.conf</filename> is processed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Greatly reduce System V <link linkend="sysvipc">shared
- memory</link> requirements (Robert Haas)
- </para>
-
- <para>
- On Unix-like systems, <function>mmap()</function> is now used for most
- of <productname>PostgreSQL</productname>'s shared memory. For most users, this
- will eliminate any need to adjust kernel parameters for shared memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the postmaster to listen on multiple Unix-domain sockets
- (Honza Hor&aacute;k)
- </para>
-
- <para>
- The configuration parameter
- <varname>unix_socket_directory</varname> is replaced by <link
- linkend="guc-unix-socket-directories"><varname>unix_socket_directories</varname></link>,
- which accepts a list of directories.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a directory of configuration files to be processed (Magnus
- Hagander, Greg Smith, Selena Deckelmann)
- </para>
-
- <para>
- Such a directory is specified with <link
- linkend="config-includes"><varname>include_dir</varname></link> in the server
- configuration file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum <link
- linkend="app-initdb">initdb</link>-configured value for <link
- linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
- to 128MB (Robert Haas)
- </para>
-
- <para>
- This is the maximum value that initdb will attempt to set in <link
- linkend="config-setting-configuration-file"><filename>postgresql.conf</filename></link>;
- the previous maximum was 32MB.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <link linkend="guc-external-pid-file">external
- <acronym>PID</acronym> file</link>, if any, on postmaster exit
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow a streaming replication standby to <link
- linkend="protocol-replication">follow a timeline switch</link>
- (Heikki Linnakangas)
- </para>
-
- <para>
- This allows streaming standby servers to receive WAL data from a slave
- newly promoted to master status. Previously, other standbys would
- require a resync to begin following the new master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SQL</acronym> functions <link
- linkend="functions-admin-backup"><function>pg_is_in_backup()</function></link>
- and <link
- linkend="functions-admin-backup"><function>pg_backup_start_time()</function></link>
- (Gilles Darold)
- </para>
-
- <para>
- These functions report the status of base backups.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of streaming log shipping with <link
- linkend="guc-synchronous-commit"><varname>synchronous_commit</varname></link>
- disabled (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow much faster promotion of a streaming standby to primary (Simon
- Riggs, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the last checkpoint's redo location to <link
- linkend="app-pgcontroldata"><application>pg_controldata</application></link>'s
- output (Fujii Masao)
- </para>
-
- <para>
- This information is useful for determining which <acronym>WAL</acronym>
- files are needed for restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow tools like <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to run on computers with different architectures (Heikki
- Linnakangas)
- </para>
-
- <para>
- WAL files can still only be replayed on servers with the same
- architecture as the primary; but they can now be transmitted to and
- stored on machines of any architecture, since the
- streaming replication protocol is now machine-independent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- <option>--write-recovery-conf</option> output a
- minimal <filename>recovery.conf</filename> file (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
- </para>
-
- <para>
- This simplifies setting up a standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- and <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- <option>--xlog-method</option> to handle streaming timeline switches
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</varname></link>
- parameter to control the <acronym>WAL</acronym> receiver's timeout
- (Amit Kapila)
- </para>
-
- <para>
- This allows more rapid detection of connection failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the <link linkend="wal"><acronym>WAL</acronym></link> record format to
- allow splitting the record header across pages (Heikki Linnakangas)
- </para>
-
- <para>
- The new format is slightly more compact, and is more efficient to
- write.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Implement <acronym>SQL</acronym>-standard <link
- linkend="queries-lateral"><literal>LATERAL</literal></link> option for
- <literal>FROM</literal>-clause subqueries and function calls (Tom Lane)
- </para>
-
- <para>
- This feature allows subqueries and functions in <literal>FROM</literal> to
- reference columns from other tables in the <literal>FROM</literal>
- clause. The <literal>LATERAL</literal> keyword is optional for functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for piping <link
- linkend="sql-copy"><command>COPY</command></link> and <link
- linkend="app-psql"><application>psql</application></link> <command>\copy</command>
- data to/from an external program (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a multirow <link
- linkend="sql-values"><literal>VALUES</literal></link> clause in a rule
- to reference <literal>OLD</literal>/<literal>NEW</literal> (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <link linkend="event-triggers">event triggers</link>
- (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This allows server-side functions written in event-enabled
- languages to be called when DDL commands are run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createforeigndatawrapper">foreign data
- wrappers</link> to support writes (inserts/updates/deletes) on foreign
- tables (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-createschema"><command>CREATE SCHEMA ... IF
- NOT EXISTS</command></link> clause (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-reassign-owned"><command>REASSIGN
- OWNED</command></link> also change ownership of shared objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-createaggregate"><command>CREATE
- AGGREGATE</command></link> complain if the given initial value string is not
- valid input for the transition datatype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress <link linkend="sql-createtable"><command>CREATE
- TABLE</command></link>'s messages about implicit index and sequence creation
- (Robert Haas)
- </para>
-
- <para>
- These messages now appear at <literal>DEBUG1</literal> verbosity, so that
- they will not be shown by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-droptable"><command>DROP TABLE IF
- EXISTS</command></link> to succeed when a non-existent schema is specified
- in the table name (Bruce Momjian)
- </para>
-
- <para>
- Previously, it threw an error if the schema did not exist.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide clients with <link
- linkend="libpq-pqresulterrorfield">constraint violation details</link>
- as separate fields (Pavel Stehule)
- </para>
-
- <para>
- This allows clients to retrieve table, column, data type, or
- constraint name error details. Previously such information had to be
- extracted from error strings. Client library support is required to
- access these fields.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER</command></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support <literal>IF NOT EXISTS</literal> option in <link
- linkend="sql-altertype"><command>ALTER TYPE ... ADD VALUE</command></link>
- (Andrew Dunstan)
- </para>
-
- <para>
- This is useful for conditionally adding values to enumerated types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-alterrole"><command>ALTER ROLE ALL
- SET</command></link> to establish settings for all users (Peter Eisentraut)
- </para>
-
- <para>
- This allows settings to apply to all users in all databases. <link
- linkend="sql-alterdatabase"><command>ALTER DATABASE SET</command></link>
- already allowed addition of settings for all users in a single
- database. <filename>postgresql.conf</filename> has a similar effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="sql-alterrule"><command>ALTER RULE
- ... RENAME</command></link> (Ali Dar)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="rules-views"><command>VIEWs</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-creatematerializedview">materialized
- views</link> (Kevin Grittner)
- </para>
-
- <para>
- Unlike ordinary views, where the base tables are read on every access,
- materialized views create physical tables at creation or refresh time.
- Access to the materialized view then reads from its physical
- table. There is not yet any facility for incrementally refreshing
- materialized views or auto-accessing them via base table access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make simple views <link
- linkend="sql-createview-updatable-views">auto-updatable</link>
- (Dean Rasheed)
- </para>
-
- <para>
- Simple views that reference some or all columns from a
- single base table are now updatable by default. More
- complex views can be made updatable using <link
- linkend="sql-createtrigger"><literal>INSTEAD OF</literal></link> triggers
- or <link linkend="sql-createrule"><literal>INSTEAD</literal></link> rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-createview"><command>CREATE RECURSIVE
- VIEW</command></link> syntax (Peter Eisentraut)
- </para>
-
- <para>
- Internally this is translated into <command>CREATE VIEW ... WITH
- RECURSIVE ...</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view/rule printing code to handle cases where referenced
- tables are renamed, or columns are renamed, added, or dropped
- (Tom Lane)
- </para>
-
- <para>
- Table and column renamings can produce cases where, if we merely
- substitute the new name into the original text of a rule or view, the
- result is ambiguous. This change fixes the rule-dumping code to insert
- manufactured table and column aliases when needed to preserve the
- original semantics.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Increase the maximum size of <link linkend="largeobjects">large
- objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
- </para>
-
- <para>
- This change includes adding 64-bit-capable large object access
- functions, both in the server and in libpq.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow text <link linkend="datatype-timezones">timezone
- designations</link>, e.g. <quote>America/Chicago</quote>, in the
- <quote>T</quote> field of <acronym>ISO</acronym>-format <type>timestamptz</type>
- input (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="datatype-json"><type>JSON</type></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="functions-json">operators and functions</link>
- to extract elements from <type>JSON</type> values (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <type>JSON</type> values to be <link
- linkend="functions-json">converted into records</link>
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="functions-json">functions</link> to convert
- scalars, records, and <type>hstore</type> values to <type>JSON</type> (Andrew
- Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="array-functions-table"><function>array_remove()</function></link>
- and <link
- linkend="array-functions-table"><function>array_replace()</function></link>
- functions (Marco Nenciarini, Gabriele Bartolini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-string-other"><function>concat()</function></link>
- and <link
- linkend="functions-string-format"><function>format()</function></link>
- to properly expand <literal>VARIADIC</literal>-labeled arguments
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link
- linkend="functions-string-format"><function>format()</function></link>
- to provide field width and left/right alignment options (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_char()</function></link>,
- <link
- linkend="functions-formatting-table"><function>to_date()</function></link>,
- and <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- handle negative (BC) century values properly
- (Bruce Momjian)
- </para>
-
- <para>
- Previously the behavior was either wrong or inconsistent
- with positive/<acronym>AD</acronym> handling, e.g. with the format mask
- <quote>IYYY-IW-DY</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_date()</function></link>
- and <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- return proper results when mixing <acronym>ISO</acronym> and Gregorian
- week/day designations (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <link
- linkend="functions-info-catalog-table"><function>pg_get_viewdef()</function></link>
- to start a new line by default after each <literal>SELECT</literal> target
- list entry and <literal>FROM</literal> entry (Marko Tiikkaja)
- </para>
-
- <para>
- This reduces line length in view printing, for instance in <link
- linkend="app-pgdump"><application>pg_dump</application></link> output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>map_sql_value_to_xml_value()</function> to print values of
- domain types the same way their base type would be printed
- (Pavel Stehule)
- </para>
-
- <para>
- There are special formatting rules for certain built-in types such as
- <type>boolean</type>; these rules now also apply to domains over these
- types.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow PL/pgSQL to use <literal>RETURN</literal> with a composite-type
- expression (Asif Rehman)
- </para>
-
- <para>
- Previously, in a function returning a composite type,
- <literal>RETURN</literal> could only reference a variable of that type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL to access <link
- linkend="plpgsql-exception-diagnostics">constraint violation
- details</link> as separate fields (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL to access the number of rows processed by
- <link linkend="sql-copy"><command>COPY</command></link> (Pavel Stehule)
- </para>
-
- <para>
- A <command>COPY</command> executed in a PL/pgSQL function now updates the
- value retrieved by <link
- linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
- x = ROW_COUNT</command></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow unreserved keywords to be used as identifiers everywhere in
- PL/pgSQL (Tom Lane)
- </para>
-
- <para>
- In certain places in the PL/pgSQL grammar, keywords had to be quoted
- to be used as identifiers, even if they were nominally unreserved.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add PL/Python result object string handler (Peter Eisentraut)
- </para>
-
- <para>
- This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python convert OID values to a proper Python numeric type
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle <link linkend="spi"><acronym>SPI</acronym></link> errors raised
- explicitly (with PL/Python's <literal>RAISE</literal>) the same as
- internal <acronym>SPI</acronym> errors (Oskari Saarenmaa and Jan Urbanski)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent leakage of <acronym>SPI</acronym> tuple tables during subtransaction
- abort (Tom Lane)
- </para>
-
- <para>
- At the end of any failed subtransaction, the core SPI code now
- releases any SPI tuple tables that were created during that
- subtransaction. This avoids the need for SPI-using code to keep track
- of such tuple tables and release them manually in error-recovery code.
- Failure to do so caused a number of transaction-lifespan memory leakage
- issues in PL/pgSQL and perhaps other SPI clients. <link
- linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</function></link>
- now protects itself against multiple freeing requests, so any existing
- code that did take care to clean up shouldn't be broken by this change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <acronym>SPI</acronym> functions to access the number of rows processed
- by <link linkend="sql-copy"><command>COPY</command></link> (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add command-line utility <link
- linkend="app-pg-isready"><application>pg_isready</application></link> to
- check if the server is ready to accept connections (Phil Sorber)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multiple <option>--table</option> arguments for <link
- linkend="app-pgrestore"><application>pg_restore</application></link>,
- <link linkend="app-clusterdb"><application>clusterdb</application></link>,
- <link linkend="app-reindexdb"><application>reindexdb</application></link>,
- and <link linkend="app-vacuumdb"><application>vacuumdb</application></link>
- (Josh Kupershmidt)
- </para>
-
- <para>
- This is similar to the way <link
- linkend="app-pgdump"><application>pg_dump</application></link>'s
- <option>--table</option> option works.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--dbname</option> option to <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>, and
- <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to allow specifying a connection string (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add libpq function <link
- linkend="libpq-pqconninfo"><function>PQconninfo()</function></link>
- to return connection information (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-psql"><application>psql</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Adjust function cost settings so <application>psql</application> tab
- completion and pattern searching are more efficient (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>psql</application>'s tab completion coverage (Jeff Janes,
- Dean Rasheed, Peter Eisentraut, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the <application>psql</application> <option>--single-transaction</option>
- mode to work when reading from standard input (Fabien Coelho,
- Robert Haas)
- </para>
-
- <para>
- Previously this option only worked when reading from a file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>psql</application> warning when connecting to an older
- server (Peter Eisentraut)
- </para>
-
- <para>
- A warning is still issued when connecting to a server of a newer major
- version than <application>psql</application>'s.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="app-psql-meta-commands">Backslash Commands</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>psql</application> command <command>\watch</command> to repeatedly
- execute a SQL command (Will Leinweber)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>psql</application> command <command>\gset</command> to store query
- results in <application>psql</application> variables (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SSL</acronym> information to <application>psql</application>'s
- <command>\conninfo</command> command (Alastair Turner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <quote>Security</quote> column to <application>psql</application>'s
- <command>\df+</command> output (Jon Erdman)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> command <command>\l</command> to accept a database
- name pattern (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, do not allow <command>\connect</command> to
- use defaults if there is no active connection (Bruce Momjian)
- </para>
-
- <para>
- This might be the case if the server had crashed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reset state after failure of a SQL command executed with
- <application>psql</application>'s <literal>\g</literal> <replaceable>file</replaceable>
- (Tom Lane)
- </para>
-
- <para>
- Previously, the output from subsequent SQL commands would unexpectedly
- continue to go to the same file.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- <sect5>
- <title>Output</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>latex-longtable</literal> output format to
- <application>psql</application> (Bruce Momjian)
- </para>
-
- <para>
- This format allows tables to span multiple pages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <literal>border=3</literal> output mode to the <application>psql</application>
- <literal>latex</literal> format (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>'s tuples-only and expanded output modes, no
- longer emit <quote>(No rows)</quote> for zero rows (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>'s unaligned, expanded output mode, no longer
- print an empty line for zero rows (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>pg_dump</application> <option>--jobs</option> option to dump tables in
- parallel (Joachim Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> output functions in a more predictable
- order (Joel Jacobson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tar files emitted by <application>pg_dump</application>
- to be <acronym>POSIX</acronym> conformant (Brian Weaver, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--dbname</option> option to <application>pg_dump</application>, for
- consistency with other client commands (Heikki Linnakangas)
- </para>
-
- <para>
- The database name could already be supplied last without a flag.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-initdb"><application>initdb</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make initdb fsync the newly created data directory (Jeff Davis)
- </para>
-
- <para>
- This insures data integrity in event of a system crash shortly after
- initdb. This can be disabled by using <option>--nosync</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add initdb <option>--sync-only</option> option to sync the data directory to durable
- storage (Bruce Momjian)
- </para>
-
- <para>
- This is used by <link
- linkend="pgupgrade"><application>pg_upgrade</application></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make initdb issue a warning about placing the data directory at the
- top of a file system mount point (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add infrastructure to allow plug-in <link
- linkend="bgworker">background worker processes</link>
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a centralized timeout <acronym>API</acronym> (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create libpgcommon and move <function>pg_malloc()</function> and other
- functions there (&Aacute;lvaro Herrera, Andres Freund)
- </para>
-
- <para>
- This allows libpgport to be used solely for portability-related code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for list links embedded in larger structs (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>SA_RESTART</literal> for all signals,
- including <literal>SIGALRM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the correct text domain is used when
- translating <function>errcontext()</function> messages
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Standardize naming of client-side memory allocation functions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide support for <quote>static assertions</quote> that will fail at
- compile time if some compile-time-constant condition is not met
- (Andres Freund, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <function>Assert()</function> in client-side code (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add decoration to inform the C compiler that some <function>ereport()</function>
- and <function>elog()</function> calls do not return (Peter Eisentraut,
- Andres Freund, Tom Lane, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow options to be passed to the regression
- test output comparison utility via <link
- linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</envar></link>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add isolation tests for <link
- linkend="sql-createindex"><command>CREATE INDEX
- CONCURRENTLY</command></link> (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove typedefs for <type>int2</type>/<type>int4</type> as they are better
- represented as <type>int16</type>/<type>int32</type> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link linkend="install">install-strip</link> on Mac <productname>OS
- X</productname> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <link linkend="configure">configure</link> flag
- <option>--disable-shared</option>, as it is no longer supported
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite pgindent in <application>Perl</application> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide Emacs macro to set Perl formatting to
- match <productname>PostgreSQL</productname>'s perltidy settings (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run tool to check the keyword list whenever the backend grammar is
- changed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the way <literal>UESCAPE</literal> is lexed, to significantly reduce
- the size of the lexer tables (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralize <application>flex</application> and <application>bison</application>
- <application>make</application> rules (Peter Eisentraut)
- </para>
-
- <para>
- This is useful for <application>pgxs</application> authors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change many internal backend functions to return object <type>OID</type>s
- rather than void (Dimitri Fontaine)
- </para>
-
- <para>
- This is useful for event triggers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Invent pre-commit/pre-prepare/pre-subcommit events for transaction
- callbacks (Tom Lane)
- </para>
-
- <para>
- Loadable modules that use transaction callbacks might need modification
- to handle these new event types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function <link
- linkend="functions-info-catalog-table"><function>pg_identify_object()</function></link>
- to produce a machine-readable description of a database object
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add post-<command>ALTER</command>-object server hooks (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement a generic binary heap and use it for Merge-Append
- operations (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide a tool to help detect timezone abbreviation changes when
- updating the <filename>src/timezone/data</filename> files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pkg-config</application> support for <application>libpq</application>
- and <application>ecpg</application> libraries (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <filename>src/tools/backend</filename>, now that the content is on
- the <productname>PostgreSQL</productname> wiki (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Split out <link linkend="wal"><acronym>WAL</acronym></link> reading as
- an independent facility (Heikki Linnakangas, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use a 64-bit integer to represent <link
- linkend="wal"><acronym>WAL</acronym></link> positions
- (<structname>XLogRecPtr</structname>) instead of two 32-bit integers
- (Heikki Linnakangas)
- </para>
-
- <para>
- Generally, tools that need to read the <acronym>WAL</acronym> format
- will need to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="plpython">PL/Python</link> to support
- platform-specific include directories (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="plpython">PL/Python</link> on <productname>OS
- X</productname> to build against custom versions of <application>Python</application>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <link linkend="postgres-fdw"><productname>Postgres</productname> foreign
- data wrapper</link> contrib module to allow access to
- other <productname>Postgres</productname> servers (Shigeru Hanada)
- </para>
-
- <para>
- This foreign data wrapper supports writes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="pgwaldump"><application>pg_xlogdump</application></link>
- contrib program (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for indexing of regular-expression searches in
- <link linkend="pgtrgm"><productname>pg_trgm</productname></link>
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="pgtrgm"><productname>pg_trgm</productname></link>'s
- handling of multibyte characters (Tom Lane)
- </para>
-
- <para>
- On a platform that does not have the wcstombs() or towlower() library
- functions, this could result in an incompatible change in the contents
- of <productname>pg_trgm</productname> indexes for non-ASCII data. In such cases,
- <command>REINDEX</command> those indexes to ensure correct search results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="pgstattuple">pgstattuple</link> function to report
- the size of the pending-insertions list of a <acronym>GIN</acronym> index
- (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="oid2name"><application>oid2name</application></link>,
- <link linkend="pgbench"><application>pgbench</application></link>, and
- <link linkend="vacuumlo"><application>vacuumlo</application></link> set
- <varname>fallback_application_name</varname> (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve output of <link
- linkend="pgtesttiming"><application>pg_test_timing</application></link>
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve output of <link
- linkend="pgtestfsync"><application>pg_test_fsync</application></link>
- (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a dedicated foreign data wrapper, with its own option validator
- function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
- </para>
-
- <para>
- When using this FDW to define the target of a <application>dblink</application>
- connection, instead of using a hard-wired list of connection options,
- the underlying <application>libpq</application> library is consulted to see what
- connection options it supports.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to do dumps and restores in
- parallel (Bruce Momjian, Andrew Dunstan)
- </para>
-
- <para>
- This allows parallel schema dump/restore of databases, as well as
- parallel copy/link of data files per tablespace. Use the
- <option>--jobs</option> option to specify the level of parallelism.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> create Unix-domain sockets in
- the current directory (Bruce Momjian, Tom Lane)
- </para>
-
- <para>
- This reduces the possibility that someone will accidentally connect
- during the upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> <option>--check</option> mode properly
- detect the location of non-default socket directories (Bruce
- Momjian, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <application>pg_upgrade</application> for databases
- with many tables (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_upgrade</application>'s logs by showing
- executed commands (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_upgrade</application>'s status display during
- copy/link (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="pgbench"><application>pgbench</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <option>--foreign-keys</option> option to <application>pgbench</application>
- (Jeff Janes)
- </para>
-
- <para>
- This adds foreign key constraints to the standard tables created by
- <application>pgbench</application>, for use in foreign key performance testing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pgbench</application> to aggregate performance statistics
- and produce output every <option>--aggregate-interval</option>
- seconds (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> <option>--sampling-rate</option> option
- to control the percentage of transactions logged (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce and improve the status message output of
- <application>pgbench</application>'s initialization mode (Robert Haas,
- Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> <option>-q</option> mode to print one output
- line every five seconds (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Output <application>pgbench</application> elapsed and estimated remaining
- time during initialization (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pgbench</application> to use much larger scale factors,
- by changing relevant columns from <type>integer</type> to <type>bigint</type>
- when the requested scale factor exceeds 20000
- (Greg Smith)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Documentation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <productname>EPUB</productname>-format documentation to be created
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update <productname>FreeBSD</productname> kernel configuration documentation
- (Brad Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="tutorial-window"><literal>WINDOW</literal>
- function</link> documentation (Bruce Momjian, Florian Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="docguide-toolsets">instructions</link> for setting
- up the documentation tool chain on <productname>macOS</productname>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- documentation (Peter Geoghegan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml
deleted file mode 100644
index 9851d96d42f..00000000000
--- a/doc/src/sgml/release-9.4.sgml
+++ /dev/null
@@ -1,13158 +0,0 @@
-<!-- doc/src/sgml/release-9.4.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-4-20">
- <title>Release 9.4.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.19.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.20</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.18,
- see <xref linkend="release-9-4-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <function>ApplyLogicalMappingFile()</function> closes the
- mapping file when done with it (Tomas Vondra)
- </para>
-
- <para>
- Previously, the file descriptor was leaked, eventually resulting in
- failures during logical decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to handle cases where a mapped catalog table is
- repeatedly rewritten, e.g. by <literal>VACUUM FULL</literal>
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent starting the server with <varname>wal_level</varname> set
- to too low a value to support an existing replication slot (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DSM allocation to be interrupted (Chris Travers)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible buffer overrun when replaying GIN page recompression
- from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed fsync of a replication slot's directory (Konstantin
- Knizhnik, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unexpected timeouts when
- using <varname>wal_sender_timeout</varname> on a slow server
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support building on Windows with Visual Studio 2015 or Visual Studio 2017
- (Michael Paquier, Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide <literal>ALLOCSET_DEFAULT_SIZES</literal> and sibling macros
- in back branches (Tom Lane)
- </para>
-
- <para>
- These macros have existed since 9.6, but there were requests to add
- them to older branches to allow extensions to rely on them without
- branch-specific coding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-19">
- <title>Release 9.4.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.18.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.19</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.18,
- see <xref linkend="release-9-4-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make logical WAL senders report streaming state correctly (Simon
- Riggs, Sawada Masahiko)
- </para>
-
- <para>
- The code previously mis-detected whether or not it had caught up with
- the upstream server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in snapshot handling during logical decoding, allowing wrong
- decoding results in rare cases (Arseny Sher, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of empty uncompressed posting list pages in GIN
- indexes (Sivasubramanian Ramasubramanian, Alexander Korotkov)
- </para>
-
- <para>
- This could result in an assertion failure after pg_upgrade of a
- pre-9.4 GIN index (9.4 and later will not create such pages).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM</command> will respond to signals
- within btree page deletion loops (Andres Freund)
- </para>
-
- <para>
- Corrupted btree indexes could result in an infinite loop here, and
- that previously wasn't interruptible without forcing a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, and text search objects
- were not schema-qualified when they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s failure to
- dump <literal>REPLICA IDENTITY</literal> properties for constraint
- indexes (Tom Lane)
- </para>
-
- <para>
- Manually created unique indexes were properly marked, but not those
- created by declaring <literal>UNIQUE</literal> or <literal>PRIMARY
- KEY</literal> constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-18">
- <title>Release 9.4.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.17.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.18</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if the function marking mistakes mentioned in the first
- changelog entry below affect you, you will want to take steps to
- correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.17,
- see <xref linkend="release-9-4-17"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlocks in concurrent <command>CREATE INDEX
- CONCURRENTLY</command> commands that are run
- under <literal>SERIALIZABLE</literal> or <literal>REPEATABLE
- READ</literal> transaction isolation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible slow execution of <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case where a streaming standby gets stuck at a WAL
- continuation record (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In logical decoding, avoid possible double processing of WAL data
- when a walsender restarts (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_recvlogical</application> to not fail against
- pre-v10 <productname>PostgreSQL</productname> servers
- (Michael Paquier)
- </para>
-
- <para>
- A previous fix caused <application>pg_recvlogical</application> to
- issue a command regardless of server version, but it should only be
- issued to v10 and later servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-17">
- <title>Release 9.4.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.16.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.17</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.13,
- see <xref linkend="release-9-4-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-16">
- <title>Release 9.4.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.15.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.16</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.13,
- see <xref linkend="release-9-4-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spurious deadlock failures when multiple sessions are
- running <command>CREATE INDEX CONCURRENTLY</command> (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to correctly clean up disk files for crashed
- transactions (Atsushi Torikoshi)
- </para>
-
- <para>
- Logical decoding may spill WAL records to disk for transactions
- generating many WAL records. Normally these files are cleaned up
- after the transaction's commit or abort record arrives; but if
- no such record is ever seen, the removal code misbehaved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix walsender timeout failure and failure to respond to interrupts
- when processing a large transaction (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with failure to start a parallel worker process
- (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- Parallel query previously tended to hang indefinitely if a worker
- could not be started, as the result of <literal>fork()</literal>
- failure or other low-probability problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-15">
- <title>Release 9.4.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.14.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.15</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.13,
- see <xref linkend="release-9-4-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when logical decoding is invoked from a SPI-using function,
- in particular any function written in a PL language
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>json_build_array()</function>,
- <function>json_build_object()</function>, and their <type>jsonb</type>
- equivalents to handle explicit <literal>VARIADIC</literal> arguments
- correctly (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid <systemitem>SIGBUS</systemitem> crash on Linux when a DSM memory
- request exceeds the space available in <systemitem>tmpfs</systemitem>
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>COPY</command>'s <literal>FREEZE</literal> option to
- work when the transaction isolation level is <literal>REPEATABLE
- READ</literal> or higher (Noah Misch)
- </para>
-
- <para>
- This case was unintentionally broken by a previous bug fix.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-parsing of the last line in a
- non-newline-terminated <filename>pg_hba.conf</filename> file
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s handling of out-of-scope cursor
- declarations with pointer or array variables (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In ecpglib, correctly handle backslashes in string literals depending
- on whether <varname>standard_conforming_strings</varname> is set
- (Tsunakawa Takayuki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-14">
- <title>Release 9.4.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.4.13.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.14</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.13,
- see <xref linkend="release-9-4-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_4_STABLE [b51c8efc6] 2017-08-24 15:21:32 -0700
--->
- <para>
- Fix failure of walsender processes to respond to shutdown signals
- (Marco Nenciarini)
- </para>
-
- <para>
- A missed flag update resulted in walsenders continuing to run as long
- as they had a standby server connected, preventing primary-server
- shutdown unless immediate shutdown mode is used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <application>pg_restore</application> when using parallel mode and
- using a list file to select a subset of items to restore
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-13">
- <title>Release 9.4.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.12.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.13</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.12,
- see <xref linkend="release-9-4-12"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>lo_put()</function> check for <literal>UPDATE</literal> privilege on
- the target large object (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- <function>lo_put()</function> should surely require the same permissions
- as <function>lowrite()</function>, but the check was missing, allowing any
- user to change the data in a large object.
- (CVE-2017-7548)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix concurrent locking of tuple update chains (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If several sessions concurrently lock a tuple update chain with
- nonconflicting lock modes using an old snapshot, and they all
- succeed, it was possible for some of them to nonetheless fail (and
- conclude there is no live tuple version) due to a race condition.
- This had consequences such as foreign-key checks failing to see a
- tuple that definitely exists but is being updated concurrently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential data corruption when freezing a tuple whose XMAX is a
- multixact with exactly one still-interesting member (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow and ensuing crash when sorting more than one
- billion tuples in-memory (Sergey Koposov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>walsender</application> to exit promptly when client requests
- shutdown (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent walsender-triggered panics during shutdown checkpoints
- (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_4_STABLE [23a2b818f] 2017-08-05 14:56:40 -0700
--->
- <para>
- Fix logical decoding failure with very wide tuples (Andres Freund)
- </para>
-
- <para>
- Logical decoding crashed on tuples that are wider than 64KB (after
- compression, but with all data in-line). The case arises only
- when <literal>REPLICA IDENTITY FULL</literal> is enabled for a table
- containing such tuples.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix leakage of small subtransactions spilled to disk during logical
- decoding (Andres Freund)
- </para>
-
- <para>
- This resulted in temporary files consuming excessive disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the work needed to build snapshots during creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
-
- <para>
- The previous algorithm was infeasibly expensive on a server with a
- lot of open transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition that could indefinitely delay creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce overhead in processing syscache invalidation events (Tom Lane)
- </para>
-
- <para>
- This is particularly helpful for logical decoding, which triggers
- frequent cache invalidation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow window functions to be used in sub-<literal>SELECT</literal>s that
- are within the arguments of an aggregate function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, reset GSS/SASL and SSPI authentication
- state properly after a failed connection attempt (Michael Paquier)
- </para>
-
- <para>
- Failure to do this meant that when falling back from SSL to non-SSL
- connections, a GSS/SASL failure in the SSL attempt would always cause
- the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_restore</application> to
- emit <command>REFRESH MATERIALIZED VIEW</command> commands last (Tom Lane)
- </para>
-
- <para>
- This prevents errors during dump/restore when a materialized view
- refers to tables owned by a different user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>/<application>pg_restore</application>'s
- reporting of error conditions originating in <application>zlib</application>
- (Vladimir Kunschikov, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to
- drop event triggers as expected (Tom Lane)
- </para>
-
- <para>
- It also now correctly assigns ownership of event triggers; before,
- they were restored as being owned by the superuser running the
- restore script.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of outer joins with empty constraints, such as the result
- of a <literal>NATURAL LEFT JOIN</literal> with no common columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, re-establish connections to remote
- servers after <command>ALTER SERVER</command> or <command>ALTER USER
- MAPPING</command> commands (Kyotaro Horiguchi)
- </para>
-
- <para>
- This ensures that option changes affecting connection parameters will
- be applied promptly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, allow cancellation of remote
- transaction control commands (Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows us to quickly escape a wait for an unresponsive
- remote server in many more cases than previously.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase <literal>MAX_SYSCACHE_CALLBACKS</literal> to provide more room for
- extensions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unescaped-braces issue in our build scripts for Microsoft MSVC,
- to avoid a warning or error from recent Perl versions (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, honor <literal>PROVE_FLAGS</literal> settings
- on <filename>vcregress.pl</filename>'s command line (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-12">
- <title>Release 9.4.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.11.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.12</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are using third-party replication tools that depend
- on <quote>logical decoding</quote>, see the fourth changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.11,
- see <xref linkend="release-9-4-11"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-4-13"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore <application>libpq</application>'s recognition of
- the <envar>PGREQUIRESSL</envar> environment variable (Daniel Gustafsson)
- </para>
-
- <para>
- Processing of this environment variable was unintentionally dropped
- in <productname>PostgreSQL</productname> 9.3, but its documentation remained.
- This creates a security hazard, since users might be relying on the
- environment variable to force SSL-encrypted connections, but that
- would no longer be guaranteed. Restore handling of the variable,
- but give it lower priority than <envar>PGSSLMODE</envar>, to avoid
- breaking configurations that work correctly with post-9.3 code.
- (CVE-2017-7485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-invalid initial snapshot during logical decoding
- (Petr Jelinek, Andres Freund)
- </para>
-
- <para>
- The initial snapshot created for a logical decoding replication slot
- was potentially incorrect. This could cause third-party tools that
- use logical decoding to copy incomplete/inconsistent initial data.
- This was more likely to happen if the source server was busy at the
- time of slot creation, or if another logical slot already existed.
- </para>
-
- <para>
- If you are using a replication tool that depends on logical decoding,
- and it should have copied a nonempty data set at the start of
- replication, it is advisable to recreate the replica after
- installing this update, or to verify its contents against the source
- server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>walsender</application> due to failure
- to initialize a string buffer (Stas Kelvich, Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of <function>fork()</function> failure for a
- background worker process (Tom Lane)
- </para>
-
- <para>
- Previously, the postmaster updated portions of its state as though
- the process had been launched successfully, resulting in subsequent
- confusion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-overflow problems in <type>interval</type> comparison (Kyotaro
- Horiguchi, Tom Lane)
- </para>
-
- <para>
- The comparison operators for type <type>interval</type> could yield wrong
- answers for intervals larger than about 296000 years. Indexes on
- columns containing such large values should be reindexed, since they
- may be corrupt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix roundoff problems in <function>float8_timestamptz()</function>
- and <function>make_interval()</function> (Tom Lane)
- </para>
-
- <para>
- These functions truncated, rather than rounded, when converting a
- floating-point value to integer microseconds; that could cause
- unexpectedly off-by-one results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory management overhead for contexts containing many large
- blocks (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s extraction of trigrams from regular
- expressions (Tom Lane)
- </para>
-
- <para>
- In some cases it would produce a broken data structure that could never
- match anything, leading to GIN or GiST indexscans that use a trigram
- index not finding any matches to the regular expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>,
- transmit query cancellation requests to the remote server
- (Michael Paquier, Etsuro Fujita)
- </para>
-
- <para>
- Previously, a local query cancellation request did not cause an
- already-sent remote query to terminate early. This is a back-patch
- of work originally done for 9.6.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [bb132cddf] 2017-04-15 20:16:03 -0400
-Branch: REL9_3_STABLE [fbfeceb25] 2017-04-17 12:51:40 -0400
-Branch: REL9_2_STABLE [58384149b] 2017-04-17 12:51:40 -0400
-Branch: REL9_3_STABLE [4e91330da] 2017-04-17 13:52:42 -0400
-Branch: REL9_2_STABLE [fb50c38e9] 2017-04-17 13:52:42 -0400
--->
- <para>
- Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane)
- </para>
-
- <para>
- This is a back-patch of work previously done in newer branches;
- it's needed since many platforms are adopting newer OpenSSL versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-11">
- <title>Release 9.4.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.10.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.11</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.10,
- see <xref linkend="release-9-4-10"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the special snapshot used for catalog scans is not
- invalidated by premature data pruning (Tom Lane)
- </para>
-
- <para>
- Backends failed to account for this snapshot when advertising their
- oldest xmin, potentially allowing concurrent vacuuming operations to
- remove data that was still needed. This led to transient failures
- along the lines of <quote>cache lookup failed for relation 1255</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce interlocking on standby servers during the replay of btree
- index vacuuming operations (Simon Riggs)
- </para>
-
- <para>
- This change avoids substantial replication delays that sometimes
- occurred while replaying such operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby feedback works correctly when it's enabled at
- standby server start (Ants Aasma, Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect updating of trigger function properties when changing a
- foreign-key constraint's deferrability properties with <command>ALTER
- TABLE ... ALTER CONSTRAINT</command> (Tom Lane)
- </para>
-
- <para>
- This led to odd failures during subsequent exercise of the foreign
- key, as the triggers were fired at the wrong times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE OR REPLACE VIEW</command> to update the view query
- before attempting to apply the new view options (Dean Rasheed)
- </para>
-
- <para>
- Previously the command would fail if the new options were
- inconsistent with the old view definition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report correct object identity during <command>ALTER TEXT SEARCH
- CONFIGURATION</command> (Artur Zakirov)
- </para>
-
- <para>
- The wrong catalog OID was reported to extensions such as logical
- decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multicolumn expansion of <replaceable>foo</replaceable><literal>.*</literal> in
- an <command>UPDATE</command> source expression (Tom Lane)
- </para>
-
- <para>
- This led to <quote>UPDATE target count mismatch --- internal
- error</quote>. Now the syntax is understood as a whole-row variable,
- as it would be in other contexts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cached plans are invalidated by changes in foreign-table
- options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> with <option>--create --if-exists</option>
- to behave more sanely if an archive contains
- unrecognized <command>DROP</command> commands (Tom Lane)
- </para>
-
- <para>
- This doesn't fix any live bug, but it may improve the behavior in
- future if <application>pg_restore</application> is used with an archive
- generated by a later <application>pg_dump</application> version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s rate limiting in the presence of
- slow I/O (Antonin Houska)
- </para>
-
- <para>
- If disk I/O was transiently much slower than the specified rate
- limit, the calculation overflowed, effectively disabling the rate
- limit for the rest of the run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s handling of
- symlinked <filename>pg_stat_tmp</filename> and <filename>pg_replslot</filename>
- subdirectories (Magnus Hagander, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach <filename>contrib/dblink</filename> to ignore irrelevant server options
- when it uses a <filename>contrib/postgres_fdw</filename> foreign server as
- the source of connection options (Corey Huinker)
- </para>
-
- <para>
- Previously, if the foreign server object had options that were not
- also <application>libpq</application> connection options, an error occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-10">
- <title>Release 9.4.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.9.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.10</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted free space maps.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.6,
- see <xref linkend="release-9-4-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix WAL-logging of truncation of relation free space maps and
- visibility maps (Pavan Deolasee, Heikki Linnakangas)
- </para>
-
- <para>
- It was possible for these files to not be correctly restored during
- crash recovery, or to be written incorrectly on a standby server.
- Bogus entries in a free space map could lead to attempts to access
- pages that have been truncated away from the relation itself, typically
- producing errors like <quote>could not read block <replaceable>XXX</replaceable>:
- read only 0 of 8192 bytes</quote>. Checksum failures in the
- visibility map are also possible, if checksumming is enabled.
- </para>
-
- <para>
- Procedures for determining whether there is a problem and repairing it
- if so are discussed at
- <ulink url="https://wiki.postgresql.org/wiki/Free_Space_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect creation of GIN index WAL records on big-endian machines
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was <quote>unexpected GIN leaf action</quote> errors
- during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>SELECT FOR UPDATE/SHARE</command> to correctly lock tuples that
- have been updated by a subsequently-aborted transaction
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- In 9.5 and later, the <command>SELECT</command> would sometimes fail to
- return such tuples at all. A failure has not been proven to occur in
- earlier releases, but might be possible with concurrent updates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak in a bulk <command>UPDATE</command> on a table
- with a <literal>PRIMARY KEY</literal> or <literal>REPLICA IDENTITY</literal> index
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress printing of zeroes for unmeasured times
- in <command>EXPLAIN</command> (Maksim Milyutin)
- </para>
-
- <para>
- Certain option combinations resulted in printing zero values for times
- that actually aren't ever measured in that combination. Our general
- policy in <command>EXPLAIN</command> is not to print such fields at all, so
- do that consistently in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical WAL decoding to work properly when a subtransaction's WAL
- output is large enough to spill to disk (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [10ad15f48] 2016-09-01 11:45:16 -0400
--->
- <para>
- Fix buffer overread in logical WAL decoding (Tom Lane)
- </para>
-
- <para>
- Logical decoding of a tuple update record read 23 bytes too many,
- which was usually harmless but with very bad luck could result in a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly initialize replication slot state when recycling a
- previously-used slot (Michael Paquier)
- </para>
-
- <para>
- This failure to reset all of the fields of the slot could
- prevent <command>VACUUM</command> from removing dead tuples.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Round shared-memory allocation request to a multiple of the actual
- huge page size when attempting to use huge pages on Linux (Tom Lane)
- </para>
-
- <para>
- This avoids possible failures during <function>munmap()</function> on systems
- with atypical default huge page sizes. Except in crash-recovery
- cases, there were no ill effects other than a log message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use a more random value for the dynamic shared memory control
- segment's ID (Robert Haas, Tom Lane)
- </para>
-
- <para>
- Previously, the same value would be chosen every time, because it was
- derived from <function>random()</function> but <function>srandom()</function> had not
- yet been called. While relatively harmless, this was not the intended
- behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry creation of the dynamic shared memory control
- segment after an access-denied error (Kyotaro Horiguchi, Amit Kapila)
- </para>
-
- <para>
- Windows sometimes returns <literal>ERROR_ACCESS_DENIED</literal> rather
- than <literal>ERROR_ALREADY_EXISTS</literal> when there is an existing
- segment. This led to postmaster startup failure due to believing that
- the former was an unrecoverable error.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application>'s calculation of average latency
- (Fabien Coelho)
- </para>
-
- <para>
- The calculation was incorrect when there were <literal>\sleep</literal>
- commands in the script, or when the test duration was specified in
- number of transactions rather than total time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, never dump range constructor functions
- (Tom Lane)
- </para>
-
- <para>
- This oversight led to <application>pg_upgrade</application> failures with
- extensions containing range types, due to duplicate creation of the
- constructor functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_xlogdump</application>, retry opening new WAL segments when
- using <option>--follow</option> option (Magnus Hagander)
- </para>
-
- <para>
- This allows for a possible delay in the server's creation of the next
- segment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_xlogdump</application> to cope with a WAL file that begins
- with a continuation record spanning more than one page (Pavan
- Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_buffercache</filename> to work
- when <varname>shared_buffers</varname> exceeds 256GB (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install TAP test infrastructure so that it's available for extension
- testing (Craig Ringer)
- </para>
-
- <para>
- When <productname>PostgreSQL</productname> has been configured
- with <option>--enable-tap-tests</option>, <quote>make install</quote> will now
- install the Perl support files for TAP testing where PGXS can find
- them. This allows non-core extensions to
- use <literal>$(prove_check)</literal> without extra tests.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, include <application>pg_recvlogical</application> in a
- client-only installation (MauMau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update Windows time zone mapping to recognize some time zone names
- added in recent Windows versions (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-9">
- <title>Release 9.4.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.8.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.9</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.6,
- see <xref linkend="release-9-4-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <function>pg_get_expr()</function> when inconsistent
- values are passed to it (Michael Paquier, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not run the planner on the query contained in <literal>CREATE
- MATERIALIZED VIEW</literal> or <literal>CREATE TABLE AS</literal>
- when <literal>WITH NO DATA</literal> is specified (Michael Paquier,
- Tom Lane)
- </para>
-
- <para>
- This avoids some unnecessary failure conditions, for example if a
- stable function invoked by the materialized view depends on a table
- that doesn't exist yet.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hint bit update during WAL replay of row locking operations
- (Andres Freund)
- </para>
-
- <para>
- The only known consequence of this problem is that row locks held by
- a prepared, but uncommitted, transaction might fail to be enforced
- after a crash and restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary <quote>could not serialize access</quote> errors when
- acquiring <literal>FOR KEY SHARE</literal> row locks in serializable mode
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <literal>postgres -C</literal> when the specified variable
- has a null string value (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible loss of large subtransactions in logical decoding
- (Petru-Florin Mihancea)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of logical decoding when a subtransaction contains no
- actual changes (Marko Tiikkaja, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that backends see up-to-date statistics for shared catalogs
- (Tom Lane)
- </para>
-
- <para>
- The statistics collector failed to update the statistics file for
- shared catalogs after a request from a regular backend. This problem
- was partially masked because the autovacuum launcher regularly makes
- requests that did cause such updates; however, it became obvious with
- autovacuum disabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid redundant writes of the statistics files when multiple
- backends request updates close together (Tom Lane, Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_4_STABLE [7a0f09da7] 2016-05-25 19:39:49 -0400
-Branch: REL9_3_STABLE [6537a48c5] 2016-05-25 19:39:49 -0400
-Branch: REL9_2_STABLE [294509ea9] 2016-05-25 19:39:49 -0400
-Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400
--->
- <para>
- Avoid canceling hot-standby queries during <command>VACUUM FREEZE</command>
- (Simon Riggs, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- <command>VACUUM FREEZE</command> on an otherwise-idle master server could
- result in unnecessary cancellations of queries on its standby
- servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible failure when vacuuming multixact IDs in an
- installation that has been pg_upgrade'd from pre-9.3 (Andrew Gierth,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- The usual symptom of this bug is errors
- like <quote>MultiXactId <replaceable>NNN</replaceable> has not been created
- yet -- apparent wraparound</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid duplicate buffer lock release when abandoning a b-tree index
- page deletion attempt (Tom Lane)
- </para>
-
- <para>
- This mistake prevented <command>VACUUM</command> from completing in some
- cases involving corrupt b-tree indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop in GiST index build for geometric columns
- containing NaN component values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> with both <option>-c</option> and <option>-C</option>
- options, avoid emitting an unwanted <literal>CREATE SCHEMA public</literal>
- command (David Johnston, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <systemitem>SIGTERM</systemitem>/control-C in
- parallel <application>pg_dump</application> and <application>pg_restore</application> (Tom
- Lane)
- </para>
-
- <para>
- Make sure that the worker processes will exit promptly, and also arrange
- to send query-cancel requests to the connected backends, in case they
- are doing something long-running such as a <command>CREATE INDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error reporting in parallel <application>pg_dump</application>
- and <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- Previously, errors reported by <application>pg_dump</application>
- or <application>pg_restore</application> worker processes might never make it to
- the user's console, because the messages went through the master
- process, and there were various deadlock scenarios that would prevent
- the master process from passing on the messages. Instead, just print
- everything to <literal>stderr</literal>. In some cases this will result in
- duplicate messages (for instance, if all the workers report a server
- shutdown), but that seems better than no message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that parallel <application>pg_dump</application>
- or <application>pg_restore</application> on Windows will shut down properly
- after an error (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, it would report the error, but then just sit until
- manually stopped by the user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> behave better when built without zlib
- support (Kyotaro Horiguchi)
- </para>
-
- <para>
- It didn't work right for parallel dumps, and emitted some rather
- pointless warnings in other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more predictable about reporting <quote>statement timeout</quote>
- versus <quote>lock timeout</quote> (Tom Lane)
- </para>
-
- <para>
- On heavily loaded machines, the regression tests sometimes failed due
- to reporting <quote>lock timeout</quote> even though the statement timeout
- should have occurred first.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-8">
- <title>Release 9.4.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.7.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.8</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.6,
- see <xref linkend="release-9-4-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of equivalence-class tests in multilevel
- nestloop plans (Tom Lane)
- </para>
-
- <para>
- Given a three-or-more-way equivalence class of variables, such
- as <literal>X.X = Y.Y = Z.Z</literal>, it was possible for the planner to omit
- some of the tests needed to enforce that all the variables are actually
- equal, leading to join rows being output that didn't satisfy
- the <literal>WHERE</literal> clauses. For various reasons, erroneous plans
- were seldom selected in practice, so that this bug has gone undetected
- for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak in GIN index scans (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leak and potential index corruption hazard in
- GIN index insertion (Tom Lane)
- </para>
-
- <para>
- The memory leak would typically not amount to much in simple queries,
- but it could be very substantial during a large GIN index build with
- high <varname>maintenance_work_mem</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow newlines in <command>ALTER SYSTEM</command> parameter values
- (Tom Lane)
- </para>
-
- <para>
- The configuration-file parser doesn't support embedded newlines in
- string literals, so we mustn't allow them in values to be inserted
- by <command>ALTER SYSTEM</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... REPLICA IDENTITY USING INDEX</command> to
- work properly if an index on OID is selected (David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in logical decoding on alignment-picky platforms (Tom Lane,
- Andres Freund)
- </para>
-
- <para>
- The failure occurred only with a transaction large enough to spill to
- disk and a primary-key change within that transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid repeated requests for feedback from receiver while shutting down
- walsender (Nick Cleaton)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to not fail when new-cluster TOAST rules
- differ from old (Tom Lane)
- </para>
-
- <para>
- <application>pg_upgrade</application> had special-case code to handle the
- situation where the new <productname>PostgreSQL</productname> version thinks that
- a table should have a TOAST table while the old version did not. That
- code was broken, so remove it, and instead do nothing in such cases;
- there seems no reason to believe that we can't get along fine without
- a TOAST table if that was okay according to the old version's rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the number of SysV semaphores used by a build configured with
- <option>--disable-spinlocks</option> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>putenv()</function> to work properly with Visual Studio 2013
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-7">
- <title>Release 9.4.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.6.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.7</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.6,
- see <xref linkend="release-9-4-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bug in <function>json_to_record()</function> when a field of its input
- object contains a sub-object with a field name matching one of the
- requested output column names (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misformatting of negative time zone offsets
- by <function>to_char()</function>'s <literal>OF</literal> format code
- (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ignore <varname>recovery_min_apply_delay</varname> parameter until
- recovery has reached a consistent state (Michael Paquier)
- </para>
-
- <para>
- Previously, standby servers would delay application of WAL records in
- response to <varname>recovery_min_apply_delay</varname> even while replaying
- the initial portion of WAL needed to make their database state valid.
- Since the standby is useless until it's reached a consistent database
- state, this was deemed unhelpful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in logical decoding (Andres Freund)
- </para>
-
- <para>
- Trouble cases included tuples larger than one page when replica
- identity is <literal>FULL</literal>, <command>UPDATE</command>s that change a
- primary key within a transaction large enough to be spooled to disk,
- incorrect reports of <quote>subxact logged without previous toplevel
- record</quote>, and incorrect reporting of a transaction's commit time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner error with nested security barrier views when the outer
- view has a <literal>WHERE</literal> clause containing a correlated subquery
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, skip creating a deletion script when
- the new data directory is inside the old data directory (Bruce
- Momjian)
- </para>
-
- <para>
- Blind application of the script in such cases would result in loss of
- the new data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-6">
- <title>Release 9.4.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.5.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.6</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading an installation that contains any GIN
- indexes that use the (non-default) <literal>jsonb_path_ops</literal> operator
- class, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.4,
- see <xref linkend="release-9-4-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b23af4587] 2015-11-05 18:15:48 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [4d867458f] 2015-11-05 18:15:48 -0500
-Branch: REL9_4_STABLE [788e35ac0] 2015-11-05 18:15:48 -0500
--->
-
- <listitem>
- <para>
- Fix inconsistent hash calculations in <literal>jsonb_path_ops</literal> GIN
- indexes (Tom Lane)
- </para>
-
- <para>
- When processing <type>jsonb</type> values that contain both scalars and
- sub-objects at the same nesting level, for example an array containing
- both scalars and sub-arrays, key hash values could be calculated
- differently than they would be for the same key in a different context.
- This could result in queries not finding entries that they should find.
- Fixing this means that existing indexes may now be inconsistent with the
- new hash calculation code. Users
- should <command>REINDEX</command> <literal>jsonb_path_ops</literal> GIN indexes after
- installing this update to make sure that all searches work as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7e2a18a91] 2015-10-06 17:15:52 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [02580df6c] 2015-10-06 17:15:27 -0400
-Branch: REL9_4_STABLE [3d701277f] 2015-10-06 17:15:27 -0400
-Branch: REL9_3_STABLE [31bc563b9] 2015-10-06 17:15:27 -0400
-Branch: REL9_2_STABLE [3d10f3970] 2015-10-06 17:15:27 -0400
-Branch: REL9_1_STABLE [dea6da132] 2015-10-06 17:15:27 -0400
--->
-
- <listitem>
- <para>
- Perform an immediate shutdown if the <filename>postmaster.pid</filename> file
- is removed (Tom Lane)
- </para>
-
- <para>
- The postmaster now checks every minute or so
- that <filename>postmaster.pid</filename> is still there and still contains its
- own PID. If not, it performs an immediate shutdown, as though it had
- received <systemitem>SIGQUIT</systemitem>. The main motivation for this change
- is to ensure that failed buildfarm runs will get cleaned up without
- manual intervention; but it also serves to limit the bad effects if a
- DBA forcibly removes <filename>postmaster.pid</filename> and then starts a new
- postmaster.
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [585e2a3b1] 2015-10-31 14:43:34 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [50ca917d9] 2015-10-31 14:42:46 -0500
-Branch: REL9_4_STABLE [1d95617f7] 2015-10-31 14:45:15 -0500
-Branch: REL9_3_STABLE [18479293c] 2015-10-31 14:46:57 -0500
-Branch: REL9_2_STABLE [caff7fc3f] 2015-10-31 14:36:37 -0500
-Branch: REL9_1_STABLE [08322daed] 2015-10-31 14:36:58 -0500
--->
-
- <listitem>
- <para>
- In <literal>SERIALIZABLE</literal> transaction isolation mode, serialization
- anomalies could be missed due to race conditions during insertions
- (Kevin Grittner, Thomas Munro)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [f54d0629e] 2015-12-12 14:17:39 +0100
-Branch: REL9_5_STABLE Release: REL9_5_0 [ada9c09ae] 2015-12-12 14:19:19 +0100
-Branch: REL9_4_STABLE [d638aeef6] 2015-12-12 14:19:23 +0100
-Branch: REL9_3_STABLE [9037bdc88] 2015-12-12 14:19:25 +0100
-Branch: REL9_2_STABLE [a15ad6708] 2015-12-12 14:19:51 +0100
-Branch: REL9_1_STABLE [5f9a86b35] 2015-12-12 14:19:29 +0100
--->
-
- <listitem>
- <para>
- Fix failure to emit appropriate WAL records when doing <literal>ALTER
- TABLE ... SET TABLESPACE</literal> for unlogged relations (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- Even though the relation's data is unlogged, the move must be logged or
- the relation will be inaccessible after a standby is promoted to master.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [e3f4cfc7a] 2015-12-10 16:29:26 +0100
-Branch: REL9_5_STABLE Release: REL9_5_0 [5b51805fe] 2015-12-10 16:39:25 +0100
-Branch: REL9_4_STABLE [c6a67bbc7] 2015-12-10 16:29:26 +0100
-Branch: REL9_3_STABLE [b19405a44] 2015-12-10 16:29:27 +0100
-Branch: REL9_2_STABLE [2de281da2] 2015-12-10 16:29:27 +0100
-Branch: REL9_1_STABLE [3199c13fc] 2015-12-10 16:29:27 +0100
--->
-
- <listitem>
- <para>
- Fix possible misinitialization of unlogged relations at the end of
- crash recovery (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [263c19572] 2015-12-13 16:46:56 +0100
-Branch: REL9_5_STABLE Release: REL9_5_0 [a9c56ff0e] 2015-12-13 16:43:35 +0100
-Branch: REL9_4_STABLE [61c7bee21] 2015-12-13 16:43:52 +0100
-Branch: REL9_3_STABLE [a1fb84990] 2015-12-13 16:44:04 +0100
--->
-
- <listitem>
- <para>
- Ensure walsender slots are fully re-initialized when being re-used
- (Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [074c5cfbf] 2015-11-20 14:55:47 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [a35c5b7c1] 2015-11-20 14:55:28 -0500
-Branch: REL9_4_STABLE [47ea4614e] 2015-11-20 14:55:28 -0500
-Branch: REL9_3_STABLE [64349f1d2] 2015-11-20 14:55:29 -0500
-Branch: REL9_2_STABLE [c49279dfd] 2015-11-20 14:55:29 -0500
-Branch: REL9_1_STABLE [60ba32cb5] 2015-11-20 14:55:29 -0500
--->
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to reconstruct inherited check
- constraints properly (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_4_STABLE [d07afa42d] 2015-12-21 19:49:15 -0300
-Branch: REL9_3_STABLE [bc72c3b3f] 2015-12-21 19:49:15 -0300
-Branch: REL9_2_STABLE [f9643d0d6] 2015-12-21 19:49:15 -0300
-Branch: REL9_1_STABLE [7e29e7f55] 2015-12-21 19:49:15 -0300
--->
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to change ownership of composite types
- properly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_4_STABLE [2c8ae6442] 2015-12-21 19:16:15 -0300
-Branch: REL9_3_STABLE [62e6eba8d] 2015-12-21 19:16:15 -0300
-Branch: REL9_2_STABLE [7af3dd540] 2015-12-21 19:16:15 -0300
-Branch: REL9_1_STABLE [ab14c1383] 2015-12-21 19:16:15 -0300
--->
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> and <command>ALTER OWNER</command> to correctly
- update granted-permissions lists when changing owners of data types,
- foreign data wrappers, or foreign servers (Bruce Momjian,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [8c1615531] 2015-12-11 18:39:09 -0300
-Branch: REL9_5_STABLE Release: REL9_5_0 [31f88a12a] 2015-12-11 18:39:09 -0300
-Branch: REL9_4_STABLE [1f8757ad8] 2015-12-11 18:39:09 -0300
-Branch: REL9_3_STABLE [4626245bc] 2015-12-11 18:39:09 -0300
-Branch: REL9_2_STABLE [629842a8e] 2015-12-11 18:39:09 -0300
-Branch: REL9_1_STABLE [f44c5203b] 2015-12-11 18:39:09 -0300
--->
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to ignore foreign user mappings,
- rather than fail (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6f8cb1e23] 2015-12-21 10:34:14 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [496943ec2] 2015-12-21 10:34:20 -0500
-Branch: REL9_4_STABLE [f02137da8] 2015-12-21 10:34:23 -0500
-Branch: REL9_3_STABLE [4271ed386] 2015-12-21 10:34:28 -0500
--->
-
- <listitem>
- <para>
- Fix possible crash after doing query rewrite for an updatable view
- (Stephen Frost)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [acfcd45ca] 2015-12-11 14:22:20 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [564c19e86] 2015-12-11 14:22:20 -0500
-Branch: REL9_4_STABLE [7ad696066] 2015-12-11 14:22:20 -0500
-Branch: REL9_3_STABLE [260590e6b] 2015-12-11 14:22:20 -0500
-Branch: master [7e19db0c0] 2015-12-07 17:42:11 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [25517ee14] 2015-12-07 17:41:45 -0500
-Branch: REL9_4_STABLE [0901d68ba] 2015-12-07 17:41:45 -0500
-Branch: REL9_3_STABLE [0a34ff7e9] 2015-12-07 17:41:45 -0500
--->
-
- <listitem>
- <para>
- Fix planner's handling of <literal>LATERAL</literal> references (Tom
- Lane)
- </para>
-
- <para>
- This fixes some corner cases that led to <quote>failed to build any
- N-way joins</quote> or <quote>could not devise a query plan</quote> planner
- failures.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3c93a60f6] 2016-01-01 13:42:21 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [d932391fd] 2016-01-01 13:42:30 -0500
-Branch: REL9_4_STABLE [76eccf07b] 2016-01-01 13:42:35 -0500
-Branch: REL9_3_STABLE [94114469f] 2016-01-01 13:42:39 -0500
-Branch: REL9_2_STABLE [8e79b24c5] 2016-01-01 13:42:43 -0500
-Branch: REL9_1_STABLE [60f8cc91d] 2016-01-01 13:42:48 -0500
--->
-
- <listitem>
- <para>
- Add more defenses against bad planner cost estimates for GIN index
- scans when the index's internal statistics are very out-of-date
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7fb008c5e] 2015-12-01 16:24:34 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [e9986a811] 2015-12-01 16:24:34 -0500
-Branch: REL9_4_STABLE [ab14e0e4c] 2015-12-01 16:24:34 -0500
-Branch: REL9_3_STABLE [52774e52d] 2015-12-01 16:24:34 -0500
-Branch: REL9_2_STABLE [3d4bdd2f9] 2015-12-01 16:24:35 -0500
-Branch: REL9_1_STABLE [7882143dc] 2015-12-01 16:24:35 -0500
--->
-
- <listitem>
- <para>
- Make planner cope with hypothetical GIN indexes suggested by an index
- advisor plug-in (Julien Rouhaud)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8004953b5] 2015-11-16 13:45:17 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [34d4f49bb] 2015-11-16 13:45:17 -0500
-Branch: REL9_4_STABLE [a6c4c07fc] 2015-11-16 13:45:17 -0500
-Branch: REL9_3_STABLE [faf18a905] 2015-11-16 13:45:17 -0500
--->
-
- <listitem>
- <para>
- Speed up generation of unique table aliases in <command>EXPLAIN</command> and
- rule dumping, and ensure that generated aliases do not
- exceed <literal>NAMEDATALEN</literal> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7745bc352] 2015-11-15 14:41:09 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [0489a048d] 2015-11-15 14:41:09 -0500
-Branch: REL9_4_STABLE [d33ab56b0] 2015-11-15 14:41:09 -0500
-Branch: REL9_3_STABLE [7d0e87208] 2015-11-15 14:41:09 -0500
-Branch: REL9_2_STABLE [ed824cf80] 2015-11-15 14:41:09 -0500
-Branch: REL9_1_STABLE [7b21d1bca] 2015-11-15 14:41:09 -0500
--->
-
- <listitem>
- <para>
- Fix dumping of whole-row Vars in <literal>ROW()</literal>
- and <literal>VALUES()</literal> lists (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d43554258] 2015-10-20 11:07:04 -0700
-Branch: REL9_5_STABLE Release: REL9_5_0 [5fb20a5ba] 2015-10-20 11:07:05 -0700
-Branch: REL9_4_STABLE [4f33572ee] 2015-10-20 11:06:24 -0700
--->
-
- <listitem>
- <para>
- Translation of minus-infinity dates and timestamps to <type>json</type>
- or <type>jsonb</type> incorrectly rendered them as plus-infinity (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5f10b7a60] 2015-11-17 15:46:47 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [80be41979] 2015-11-17 15:46:54 -0500
-Branch: REL9_4_STABLE [cc95595e0] 2015-11-17 15:46:59 -0500
-Branch: REL9_3_STABLE [7df6dc405] 2015-11-17 15:47:03 -0500
-Branch: REL9_2_STABLE [c47bdb372] 2015-11-17 15:47:08 -0500
-Branch: REL9_1_STABLE [728a2ac21] 2015-11-17 15:47:12 -0500
--->
-
- <listitem>
- <para>
- Fix possible internal overflow in <type>numeric</type> division
- (Dean Rasheed)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a43b4ab11] 2015-11-07 12:43:24 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [44fc25153] 2015-11-07 12:43:24 -0500
-Branch: REL9_4_STABLE [f69c01f2c] 2015-11-07 12:43:24 -0500
-Branch: REL9_3_STABLE [8db652359] 2015-11-07 12:43:24 -0500
-Branch: REL9_2_STABLE [bfb10db81] 2015-11-07 12:43:24 -0500
-Branch: REL9_1_STABLE [03ee6591d] 2015-11-07 12:43:24 -0500
--->
-
- <listitem>
- <para>
- Fix enforcement of restrictions inside parentheses within regular
- expression lookahead constraints (Tom Lane)
- </para>
-
- <para>
- Lookahead constraints aren't allowed to contain backrefs, and
- parentheses within them are always considered non-capturing, according
- to the manual. However, the code failed to handle these cases properly
- inside a parenthesized subexpression, and would give unexpected
- results.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9f1e642d5] 2015-10-19 13:54:53 -0700
-Branch: REL9_5_STABLE Release: REL9_5_0 [43e36f8dd] 2015-10-19 13:54:53 -0700
-Branch: REL9_4_STABLE [52f21c588] 2015-10-19 13:54:53 -0700
-Branch: REL9_3_STABLE [e69d4756e] 2015-10-19 13:54:54 -0700
-Branch: REL9_2_STABLE [05e62ff59] 2015-10-19 13:54:54 -0700
-Branch: REL9_1_STABLE [0ce829caf] 2015-10-19 13:54:54 -0700
--->
-
- <listitem>
- <para>
- Conversion of regular expressions to indexscan bounds could produce
- incorrect bounds from regexps containing lookahead constraints
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [48789c5d2] 2015-10-16 15:55:58 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [0889e1857] 2015-10-16 15:56:00 -0400
-Branch: REL9_4_STABLE [b6eb5fc40] 2015-10-16 14:14:41 -0400
-Branch: REL9_3_STABLE [6e4dda796] 2015-10-16 14:14:41 -0400
-Branch: REL9_2_STABLE [83c34825e] 2015-10-16 14:14:41 -0400
-Branch: REL9_1_STABLE [d394f12c0] 2015-10-16 14:14:41 -0400
--->
-
- <listitem>
- <para>
- Fix regular-expression compiler to handle loops of constraint arcs
- (Tom Lane)
- </para>
-
- <para>
- The code added for CVE-2007-4772 was both incomplete, in that it didn't
- handle loops involving more than one state, and incorrect, in that it
- could cause assertion failures (though there seem to be no bad
- consequences of that in a non-assert build). Multi-state loops would
- cause the compiler to run until the query was canceled or it reached
- the too-many-states error condition.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [538b3b8b3] 2015-10-16 15:55:59 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [e91cfdead] 2015-10-16 15:56:00 -0400
-Branch: REL9_4_STABLE [0ecf4a9e5] 2015-10-16 15:36:17 -0400
-Branch: REL9_3_STABLE [ad5e5a62a] 2015-10-16 15:36:17 -0400
-Branch: REL9_2_STABLE [4e4610a8a] 2015-10-16 15:36:17 -0400
-Branch: REL9_1_STABLE [b94c2b6a6] 2015-10-16 15:36:17 -0400
--->
-
- <listitem>
- <para>
- Improve memory-usage accounting in regular-expression compiler
- (Tom Lane)
- </para>
-
- <para>
- This causes the code to emit <quote>regular expression is too
- complex</quote> errors in some cases that previously used unreasonable
- amounts of time and memory.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6a7153661] 2015-10-16 15:55:59 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [1bb0fbca3] 2015-10-16 15:56:00 -0400
-Branch: REL9_4_STABLE [9774fda86] 2015-10-16 15:11:49 -0400
-Branch: REL9_3_STABLE [2a8d6e4d0] 2015-10-16 15:11:49 -0400
-Branch: REL9_2_STABLE [a257b808a] 2015-10-16 15:11:49 -0400
-Branch: REL9_1_STABLE [067f96fe3] 2015-10-16 15:11:49 -0400
-Branch: master [f5b7d103b] 2015-10-16 15:55:59 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [e9cf3dc30] 2015-10-16 15:56:00 -0400
-Branch: REL9_4_STABLE [8cf4eed0b] 2015-10-16 14:58:11 -0400
-Branch: REL9_3_STABLE [677e64cb8] 2015-10-16 14:58:11 -0400
-Branch: REL9_2_STABLE [18b032f8f] 2015-10-16 14:58:11 -0400
-Branch: REL9_1_STABLE [5503e6e0f] 2015-10-16 14:58:11 -0400
-Branch: master [579840ca0] 2015-10-16 15:55:59 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [cff9e0659] 2015-10-16 15:56:00 -0400
-Branch: REL9_4_STABLE [bdde29e1c] 2015-10-16 14:43:18 -0400
-Branch: REL9_3_STABLE [296241635] 2015-10-16 14:43:18 -0400
-Branch: REL9_2_STABLE [a2ad467ae] 2015-10-16 14:43:18 -0400
-Branch: REL9_1_STABLE [b00c79b5b] 2015-10-16 14:43:18 -0400
--->
-
- <listitem>
- <para>
- Improve performance of regular-expression compiler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [869f693a3] 2015-10-13 11:21:33 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [39ac29394] 2015-10-13 11:21:33 -0400
-Branch: REL9_4_STABLE [44a6e24fb] 2015-10-13 11:21:33 -0400
-Branch: REL9_3_STABLE [bc6b03bb8] 2015-10-13 11:21:33 -0400
-Branch: REL9_2_STABLE [39cd1bdb8] 2015-10-13 11:21:33 -0400
-Branch: REL9_1_STABLE [b0d858359] 2015-10-13 11:21:33 -0400
--->
-
- <listitem>
- <para>
- On Windows, ensure the shared-memory mapping handle gets closed in
- child processes that don't need it (Tom Lane, Amit Kapila)
- </para>
-
- <para>
- This oversight resulted in failure to recover from crashes
- whenever <varname>logging_collector</varname> is turned on.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [add6d821b] 2016-01-04 17:41:33 -0500
-Branch: REL9_3_STABLE [0f527f73b] 2016-01-04 17:41:33 -0500
-Branch: REL9_2_STABLE [9b2eacba7] 2016-01-04 17:41:33 -0500
-Branch: REL9_1_STABLE [d05103b77] 2016-01-04 17:41:33 -0500
--->
-
- <listitem>
- <para>
- Fix possible failure to detect socket EOF in non-blocking mode on
- Windows (Tom Lane)
- </para>
-
- <para>
- It's not entirely clear whether this problem can happen in pre-9.5
- branches, but if it did, the symptom would be that a walsender process
- would wait indefinitely rather than noticing a loss of connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2ec477dc8] 2015-12-16 16:59:35 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [f1c152866] 2015-12-16 16:58:55 -0500
-Branch: REL9_4_STABLE [e168dfef6] 2015-12-16 16:58:55 -0500
-Branch: REL9_3_STABLE [9afe392dc] 2015-12-16 16:58:56 -0500
-Branch: REL9_2_STABLE [bcce4a5e3] 2015-12-16 16:58:56 -0500
-Branch: REL9_1_STABLE [03b138e90] 2015-12-16 16:58:56 -0500
-Branch: master [aee7705be] 2015-12-17 16:55:23 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [5ec0aad01] 2015-12-17 16:55:33 -0500
-Branch: REL9_4_STABLE [acb6c64f4] 2015-12-17 16:55:39 -0500
-Branch: REL9_3_STABLE [09b7abc27] 2015-12-17 16:55:43 -0500
-Branch: REL9_2_STABLE [b41777988] 2015-12-17 16:55:47 -0500
-Branch: REL9_1_STABLE [db462a44e] 2015-12-17 16:55:51 -0500
--->
-
- <listitem>
- <para>
- In <application>psql</application>, ensure that <application>libreadline</application>'s idea
- of the screen size is updated when the terminal window size changes
- (Merlin Moncure)
- </para>
-
- <para>
- Previously, <application>libreadline</application> did not notice if the window
- was resized during query output, leading to strange behavior during
- later input of multiline queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c5ef8ce53] 2015-11-25 17:31:53 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [55a2cc844] 2015-11-25 17:31:53 -0500
-Branch: REL9_4_STABLE [3d357b48f] 2015-11-25 17:31:53 -0500
-Branch: REL9_3_STABLE [64b7079e5] 2015-11-25 17:31:53 -0500
-Branch: REL9_2_STABLE [d44b4deaa] 2015-11-25 17:31:54 -0500
-Branch: REL9_1_STABLE [6430a11fa] 2015-11-25 17:31:54 -0500
--->
-
- <listitem>
- <para>
- Avoid possible crash in <application>psql</application>'s <literal>\c</literal> command
- when previous connection was via Unix socket and command specifies a
- new hostname and same username (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6bcce2580] 2015-10-12 18:30:36 -0400
-Branch: REL9_5_STABLE Release: REL9_5_0 [a151a5c38] 2015-10-12 18:30:36 -0400
-Branch: REL9_4_STABLE [57f54b5e4] 2015-10-12 18:30:36 -0400
-Branch: REL9_3_STABLE [dfe572de0] 2015-10-12 18:30:37 -0400
-Branch: REL9_2_STABLE [250108b6f] 2015-10-12 18:30:37 -0400
-Branch: REL9_1_STABLE [c869a7d5b] 2015-10-12 18:30:37 -0400
--->
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, test child process status directly
- rather than relying on heuristics (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application> relied on an assumption that the new
- postmaster would always create <filename>postmaster.pid</filename> within five
- seconds. But that can fail on heavily-loaded systems,
- causing <application>pg_ctl</application> to report incorrectly that the
- postmaster failed to start.
- </para>
-
- <para>
- Except on Windows, this change also means that a <literal>pg_ctl start
- -w</literal> done immediately after another such command will now reliably
- fail, whereas previously it would report success if done within two
- seconds of the first command.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [fed19f312] 2015-11-08 17:28:53 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [bdb42bac3] 2015-11-08 17:29:47 -0500
-Branch: REL9_4_STABLE [24379a45c] 2015-11-08 17:31:21 -0500
-Branch: REL9_3_STABLE [34725292d] 2015-11-08 17:31:22 -0500
-Branch: REL9_2_STABLE [99027350e] 2015-11-08 17:31:23 -0500
-Branch: REL9_1_STABLE [87deb55a4] 2015-11-08 17:31:24 -0500
--->
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, don't attempt to use a wildcard listen
- address to connect to the postmaster (Kondo Yuta)
- </para>
-
- <para>
- On Windows, <application>pg_ctl</application> would fail to detect postmaster
- startup if <varname>listen_addresses</varname> is set to <literal>0.0.0.0</literal>
- or <literal>::</literal>, because it would try to use that value verbatim as
- the address to connect to, which doesn't work. Instead assume
- that <literal>127.0.0.1</literal> or <literal>::1</literal>, respectively, is the
- right thing to use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [00cdd8352] 2015-11-21 20:21:31 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [5f5e68b08] 2015-11-21 20:21:32 -0500
-Branch: REL9_4_STABLE [7acad9546] 2015-11-21 20:22:39 -0500
-Branch: REL9_3_STABLE [0e6185283] 2015-11-21 20:21:32 -0500
-Branch: REL9_2_STABLE [b054ca031] 2015-11-21 20:21:32 -0500
-Branch: REL9_1_STABLE [8f1559aa5] 2015-11-21 20:21:32 -0500
-Branch: REL9_2_STABLE [05c9bc063] 2015-11-23 00:32:01 -0500
-Branch: REL9_1_STABLE [6df62ef43] 2015-11-23 00:32:01 -0500
--->
-
- <listitem>
- <para>
- In <application>pg_dump</application> and <application>pg_basebackup</application>, adopt
- the GNU convention for handling tar-archive members exceeding 8GB
- (Tom Lane)
- </para>
-
- <para>
- The POSIX standard for <literal>tar</literal> file format does not allow
- archive member files to exceed 8GB, but most modern implementations
- of <application>tar</application> support an extension that fixes that. Adopt
- this extension so that <application>pg_dump</application> with <option>-Ft</option> no
- longer fails on tables with more than 8GB of data, and so
- that <application>pg_basebackup</application> can handle files larger than 8GB.
- In addition, fix some portability issues that could cause failures for
- members between 4GB and 8GB on some platforms. Potentially these
- problems could cause unrecoverable data loss due to unreadable backup
- files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c7e27becd] 2016-01-01 15:27:53 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [404c45bac] 2016-01-01 15:27:53 -0500
-Branch: REL9_4_STABLE [f9b3b3fec] 2016-01-01 15:27:53 -0500
-Branch: REL9_3_STABLE [babf38e88] 2016-01-01 15:27:53 -0500
-Branch: REL9_2_STABLE [69cfe15b5] 2016-01-01 15:27:53 -0500
-Branch: REL9_1_STABLE [85dbc46bd] 2016-01-01 15:27:53 -0500
-Branch: master [b416c0bb6] 2016-01-02 19:04:45 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [b01828e97] 2016-01-02 19:04:45 -0500
-Branch: REL9_4_STABLE [aab4b73bd] 2016-01-02 19:04:45 -0500
-Branch: REL9_3_STABLE [6a0d63d35] 2016-01-02 19:04:45 -0500
-Branch: REL9_2_STABLE [1eb515ad7] 2016-01-02 19:04:45 -0500
-Branch: REL9_1_STABLE [e4959fb5c] 2016-01-02 19:04:45 -0500
--->
-
- <listitem>
- <para>
- Ensure that relation option values are properly quoted
- in <application>pg_dump</application> (Kouhei Sutou, Tom Lane)
- </para>
-
- <para>
- A reloption value that isn't a simple identifier or number could lead
- to dump/reload failures due to syntax errors in CREATE statements
- issued by <application>pg_dump</application>. This is not an issue with any
- reloption currently supported by core <productname>PostgreSQL</productname>, but
- extensions could allow reloptions that cause the problem.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1aa41e3ea] 2015-12-23 14:25:53 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [a21994c1b] 2015-12-23 14:25:31 -0500
-Branch: REL9_4_STABLE [f56802a2d] 2015-12-23 14:25:31 -0500
-Branch: REL9_3_STABLE [534a4159c] 2015-12-23 14:25:31 -0500
--->
-
- <listitem>
- <para>
- Avoid repeated password prompts during parallel <application>pg_dump</application>
- (Zeus Kronion)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [025106e31] 2015-11-14 11:47:12 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [fae58d5be] 2015-11-14 11:47:11 -0500
-Branch: REL9_4_STABLE [87cdfeb18] 2015-11-14 11:47:11 -0500
-Branch: REL9_3_STABLE [a75efb483] 2015-11-14 11:47:11 -0500
-Branch: REL9_2_STABLE [b4c4220ed] 2015-11-14 11:47:11 -0500
-Branch: REL9_1_STABLE [bdcbc2b47] 2015-11-14 11:47:11 -0500
-Branch: master [13b30c16f] 2015-11-24 17:18:28 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [b17dbf262] 2015-11-24 17:18:28 -0500
-Branch: REL9_4_STABLE [f91c4e326] 2015-11-24 17:18:28 -0500
-Branch: REL9_3_STABLE [6638c9aaf] 2015-11-24 17:18:27 -0500
-Branch: REL9_2_STABLE [0ca3c51e5] 2015-11-24 17:18:27 -0500
-Branch: REL9_1_STABLE [c36064e43] 2015-11-24 17:18:27 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s file-copying code to handle errors
- properly on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [fc995bfdb] 2015-12-28 10:50:35 -0300
-Branch: REL9_5_STABLE Release: REL9_5_0 [c3e068b26] 2015-12-28 10:50:35 -0300
-Branch: REL9_4_STABLE [f98bc20dd] 2015-12-28 10:50:35 -0300
-Branch: REL9_3_STABLE [7533d5d35] 2015-12-28 10:50:35 -0300
-Branch: REL9_2_STABLE [4fb9e6109] 2015-12-28 10:50:35 -0300
--->
-
- <listitem>
- <para>
- Fix failure to localize messages emitted
- by <application>pg_receivexlog</application> and <application>pg_recvlogical</application>
- (Ioseph Kim)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid dump/reload problems when using both <application>plpython2</application>
- and <application>plpython3</application> (Tom Lane)
- </para>
-
- <para>
- In principle, both versions of <application>PL/Python</application> can be used in
- the same database, though not in the same session (because the two
- versions of <application>libpython</application> cannot safely be used concurrently).
- However, <application>pg_restore</application> and <application>pg_upgrade</application> both
- do things that can fall foul of the same-session restriction. Work
- around that by changing the timing of the check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> regression tests to pass with Python 3.5
- (Peter Eisentraut)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c40591885] 2015-11-12 13:03:52 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [747854f01] 2015-11-12 13:03:52 -0500
-Branch: REL9_4_STABLE [40879a92b] 2015-11-12 13:03:52 -0500
-Branch: REL9_3_STABLE [db6e8e162] 2015-11-12 13:03:53 -0500
--->
-
- <listitem>
- <para>
- Fix premature clearing of <application>libpq</application>'s input buffer when
- socket EOF is seen (Tom Lane)
- </para>
-
- <para>
- This mistake caused <application>libpq</application> to sometimes not report the
- backend's final error message before reporting <quote>server closed the
- connection unexpectedly</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [7b96bf445] 2015-12-14 18:19:10 +0200
-Branch: REL9_5_STABLE Release: REL9_5_0 [34d136f92] 2015-12-14 18:24:58 +0200
-Branch: REL9_4_STABLE [affae5e98] 2015-12-14 18:40:51 +0200
-Branch: REL9_3_STABLE [dee1ed54f] 2015-12-14 18:52:29 +0200
-Branch: REL9_2_STABLE [1e23caae3] 2015-12-14 18:41:11 +0200
-Branch: REL9_1_STABLE [4b58ded74] 2015-12-14 18:48:49 +0200
--->
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory situations
- (Michael Paquier, Amit Kapila, Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: REL9_5_STABLE Release: REL9_5_0 [937261454] 2015-10-18 10:15:18 +0200
-Branch: REL9_4_STABLE [a850d7136] 2015-10-18 10:16:36 +0200
-Branch: REL9_3_STABLE [defd2ecf4] 2015-10-18 10:16:49 +0200
-Branch: REL9_2_STABLE [8f67643be] 2015-10-18 10:17:01 +0200
-Branch: REL9_1_STABLE [a9bcd8370] 2015-10-18 10:17:12 +0200
--->
-
- <listitem>
- <para>
- Fix order of arguments
- in <application>ecpg</application>-generated <literal>typedef</literal> statements
- (Michael Meskes)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [db4a5cfc7] 2015-12-01 11:42:25 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [c79bdc990] 2015-12-01 11:42:35 -0500
-Branch: REL9_4_STABLE [346cc2f01] 2015-12-01 11:42:39 -0500
-Branch: REL9_3_STABLE [3e6e98c5a] 2015-12-01 11:42:43 -0500
-Branch: REL9_2_STABLE [74cf6defa] 2015-12-01 11:42:47 -0500
-Branch: REL9_1_STABLE [84387496f] 2015-12-01 11:42:52 -0500
--->
-
- <listitem>
- <para>
- Use <literal>%g</literal> not <literal>%f</literal> format
- in <application>ecpg</application>'s <function>PGTYPESnumeric_from_double()</function>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>hstore_to_json_loose()</function>'s test for whether
- an <type>hstore</type> value can be converted to a JSON number (Tom Lane)
- </para>
-
- <para>
- Previously this function could be fooled by non-alphanumeric trailing
- characters, leading to emitting syntactically-invalid JSON.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [743229a67] 2015-12-27 13:03:19 -0300
-Branch: REL9_5_STABLE Release: REL9_5_0 [c886c30cc] 2015-12-27 13:03:19 -0300
-Branch: REL9_4_STABLE [0a29cf693] 2015-12-27 13:03:19 -0300
-Branch: REL9_3_STABLE [0244677cf] 2015-12-27 13:03:19 -0300
-Branch: REL9_2_STABLE [51dd54ba7] 2015-12-27 13:03:19 -0300
-Branch: REL9_1_STABLE [1b6102eb7] 2015-12-27 13:03:19 -0300
--->
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgcrypto</filename>'s <function>crypt()</function>
- function can be interrupted by query cancel (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>, fix bugs triggered by use
- of <literal>tableoid</literal> in data-modifying commands (Etsuro Fujita,
- Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [32f15d05c] 2015-11-18 17:45:05 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [659d47292] 2015-11-18 17:45:05 -0500
-Branch: REL9_4_STABLE [d5bb7c6f6] 2015-11-18 17:45:05 -0500
-Branch: REL9_3_STABLE [ae81d4fb1] 2015-11-18 17:45:05 -0500
-Branch: REL9_2_STABLE [6e1d26f1f] 2015-11-18 17:45:06 -0500
-Branch: REL9_1_STABLE [b4afc39f7] 2015-11-18 17:45:06 -0500
-Branch: master [9c779c49e] 2015-12-10 10:19:13 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [2355faae0] 2015-12-10 10:19:18 -0500
-Branch: REL9_4_STABLE [ee0df4d77] 2015-12-10 10:19:22 -0500
-Branch: REL9_3_STABLE [b3e377a00] 2015-12-10 10:19:27 -0500
-Branch: REL9_2_STABLE [7f94a5c10] 2015-12-10 10:19:31 -0500
--->
-
- <listitem>
- <para>
- Accept <application>flex</application> versions later than 2.5.x
- (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Now that flex 2.6.0 has been released, the version checks in our build
- scripts needed to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reproducibility of build output by ensuring filenames are given
- to the linker in a fixed order (Christoph Berg)
- </para>
-
- <para>
- This avoids possible bitwise differences in the produced executable
- files from one build to the next.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [dccf8e9e6] 2015-12-11 16:15:05 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [6061aa8ed] 2015-12-11 16:15:06 -0500
-Branch: REL9_4_STABLE [423697e3d] 2015-12-11 16:14:36 -0500
-Branch: REL9_3_STABLE [1ebe75a2c] 2015-12-11 16:14:40 -0500
-Branch: REL9_2_STABLE [98467b35d] 2015-12-11 16:14:44 -0500
-Branch: REL9_1_STABLE [2a37a103b] 2015-12-11 16:14:48 -0500
--->
-
- <listitem>
- <para>
- Install our <filename>missing</filename> script where PGXS builds can find it
- (Jim Nasby)
- </para>
-
- <para>
- This allows sane behavior in a PGXS build done on a machine where build
- tools such as <application>bison</application> are missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [085423e3e] 2015-12-11 19:09:04 -0500
-Branch: REL9_5_STABLE Release: REL9_5_0 [ea7f7d8b3] 2015-12-11 19:08:40 -0500
-Branch: REL9_4_STABLE [09824cd99] 2015-12-11 19:08:40 -0500
-Branch: REL9_3_STABLE [fee485815] 2015-12-11 19:08:40 -0500
-Branch: REL9_2_STABLE [f5eebea8d] 2015-12-11 19:08:40 -0500
-Branch: REL9_1_STABLE [386dcd539] 2015-12-11 19:08:40 -0500
--->
-
- <listitem>
- <para>
- Add variant regression test expected-output file to match behavior of
- current <application>libxml2</application> (Tom Lane)
- </para>
-
- <para>
- The fix for <application>libxml2</application>'s CVE-2015-7499 causes it not to
- output error context reports in some cases where it used to do so.
- This seems to be a bug, but we'll probably have to live with it for
- some time, so work around it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-5">
- <title>Release 9.4.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.4.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.5</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.4,
- see <xref linkend="release-9-4-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [08fa47c48] 2015-10-05 10:06:29 -0400
-Branch: REL9_5_STABLE [98f30d2e5] 2015-10-05 10:06:33 -0400
-Branch: REL9_4_STABLE [16d58b5b5] 2015-10-05 10:06:34 -0400
-Branch: REL9_3_STABLE [f8862172e] 2015-10-05 10:06:34 -0400
--->
-
- <listitem>
- <para>
- Guard against stack overflows in <type>json</type> parsing
- (Oskari Saarenmaa)
- </para>
-
- <para>
- If an application constructs PostgreSQL <type>json</type>
- or <type>jsonb</type> values from arbitrary user input, the application's
- users can reliably crash the PostgreSQL server, causing momentary
- denial of service. (CVE-2015-5289)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [1d812c8b0] 2015-10-05 10:06:29 -0400
-Branch: REL9_5_STABLE [4d6752277] 2015-10-05 10:06:33 -0400
-Branch: REL9_4_STABLE [4d95419e8] 2015-10-05 10:06:34 -0400
-Branch: REL9_3_STABLE [cc1210f0a] 2015-10-05 10:06:34 -0400
-Branch: REL9_2_STABLE [56232f987] 2015-10-05 10:06:35 -0400
-Branch: REL9_1_STABLE [48f6310bc] 2015-10-05 10:06:35 -0400
-Branch: REL9_0_STABLE [188e081ef] 2015-10-05 10:06:36 -0400
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c5454f99c] 2015-09-04 13:37:14 -0400
-Branch: REL9_5_STABLE [a2538da89] 2015-09-04 13:37:16 -0400
-Branch: REL9_4_STABLE [37d10c524] 2015-09-04 13:37:17 -0400
-Branch: REL9_3_STABLE [9e9b310d8] 2015-09-04 13:36:50 -0400
-Branch: REL9_2_STABLE [39ebb6466] 2015-09-04 13:36:50 -0400
-Branch: REL9_1_STABLE [dae1c9480] 2015-09-04 13:36:50 -0400
-Branch: REL9_0_STABLE [81ee435c4] 2015-09-04 13:36:50 -0400
--->
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [358cde320] 2015-08-02 20:08:10 +0300
-Branch: REL9_5_STABLE [54f23a45f] 2015-08-02 20:08:50 +0300
-Branch: REL9_4_STABLE [bab959906] 2015-08-02 20:09:05 +0300
--->
-
- <listitem>
- <para>
- Fix possible deadlock during WAL insertion
- when <varname>commit_delay</varname> is set (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [c3e0ddd40] 2015-09-08 17:02:49 -0400
-Branch: REL9_5_STABLE [9801bae21] 2015-09-08 17:02:53 -0400
-Branch: REL9_4_STABLE [83d004904] 2015-09-08 17:02:56 -0400
-Branch: REL9_3_STABLE [cb1b9b959] 2015-09-08 17:02:59 -0400
--->
-
- <listitem>
- <para>
- Ensure all relations referred to by an updatable view are properly
- locked during an update statement (Dean Rasheed)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_5_BR [5d1ff6bd5] 2015-06-25 14:39:05 -0400
-Branch: REL9_4_STABLE [e118555cf] 2015-06-25 14:39:05 -0400
-Branch: REL9_3_STABLE [834aa56ea] 2015-06-25 14:39:05 -0400
-Branch: REL9_2_STABLE [88fab18a4] 2015-06-25 14:39:05 -0400
-Branch: REL9_1_STABLE [a9b7bf82f] 2015-06-25 14:39:06 -0400
-Branch: REL9_0_STABLE [45c69178b] 2015-06-25 14:39:06 -0400
--->
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6e5d9f278] 2015-08-21 20:32:11 -0400
-Branch: REL9_5_STABLE [68a14ca74] 2015-08-21 20:32:17 -0400
-Branch: REL9_4_STABLE [fe939d950] 2015-08-21 20:32:26 -0400
-Branch: REL9_3_STABLE [ea9892444] 2015-08-21 20:32:29 -0400
-Branch: REL9_2_STABLE [d951d6065] 2015-08-21 20:32:33 -0400
-Branch: REL9_1_STABLE [87b8c9e12] 2015-08-21 20:32:37 -0400
-Branch: REL9_0_STABLE [7c57449fc] 2015-08-21 20:32:41 -0400
--->
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [07e4d03fb] 2015-09-30 23:32:43 -0400
-Branch: REL9_5_STABLE [8c8a834b1] 2015-09-30 23:32:23 -0400
-Branch: REL9_4_STABLE [03f9b63e2] 2015-09-30 23:32:23 -0400
-Branch: REL9_3_STABLE [aad86c518] 2015-09-30 23:32:23 -0400
-Branch: REL9_2_STABLE [e4c00750a] 2015-09-30 23:32:23 -0400
-Branch: REL9_1_STABLE [2bbe8a684] 2015-09-30 23:32:23 -0400
-Branch: REL9_0_STABLE [2d4336cf8] 2015-09-30 23:32:23 -0400
--->
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2abfd9d5e] 2015-09-25 13:16:30 -0400
-Branch: REL9_5_STABLE [c9645f757] 2015-09-25 13:16:30 -0400
-Branch: REL9_4_STABLE [67d0f7a37] 2015-09-25 13:16:30 -0400
-Branch: REL9_3_STABLE [1bcc9e60a] 2015-09-25 13:16:31 -0400
--->
-
- <listitem>
- <para>
- Fix performance problem when a session alters large numbers of foreign
- key constraints (Jan Wieck, Tom Lane)
- </para>
-
- <para>
- This was seen primarily when restoring <application>pg_dump</application> output
- for databases with many thousands of tables.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_4_STABLE [ab6084782] 2015-07-28 22:06:31 +0200
-Branch: REL9_3_STABLE [48d23c72d] 2015-07-28 22:06:31 +0200
-Branch: REL9_2_STABLE [2f91e7bb5] 2015-07-28 22:06:31 +0200
-Branch: REL9_1_STABLE [624a3c9be] 2015-07-28 22:06:32 +0200
-Branch: REL9_0_STABLE [444b2ebee] 2015-07-28 22:06:32 +0200
--->
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [020235a57] 2015-09-24 14:53:32 +0200
-Branch: REL9_5_STABLE [ef4fccd2b] 2015-09-24 14:53:33 +0200
-Branch: REL9_4_STABLE [4ff753c91] 2015-09-24 14:53:33 +0200
-Branch: REL9_3_STABLE [fee2275ae] 2015-09-24 14:53:33 +0200
-Branch: REL9_2_STABLE [f12932dd4] 2015-09-24 14:53:33 +0200
-Branch: REL9_1_STABLE [ff090bbb7] 2015-09-24 14:53:33 +0200
-Branch: REL9_0_STABLE [078d471a9] 2015-09-24 14:53:33 +0200
-Branch: master [2596d705b] 2015-10-05 11:53:43 +0200
-Branch: REL9_5_STABLE [0577821b5] 2015-10-05 11:56:58 +0200
-Branch: REL9_4_STABLE [13ac4c035] 2015-10-05 11:57:07 +0200
-Branch: REL9_3_STABLE [393341714] 2015-10-05 11:57:11 +0200
-Branch: REL9_2_STABLE [e07cfef34] 2015-10-05 11:57:15 +0200
-Branch: REL9_1_STABLE [7116a3e98] 2015-10-05 11:57:20 +0200
-Branch: REL9_0_STABLE [eeb0b7830] 2015-10-05 11:57:25 +0200
--->
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [369342cf7] 2015-08-04 12:58:54 -0400
-Branch: REL9_5_STABLE [cd52e4a2b] 2015-08-04 13:05:43 -0400
-Branch: REL9_4_STABLE [3a35ca5ad] 2015-08-04 13:05:48 -0400
-Branch: REL9_3_STABLE [11ed4bab5] 2015-08-04 13:05:52 -0400
-Branch: REL9_2_STABLE [5ef8e1114] 2015-08-04 13:05:58 -0400
-Branch: REL9_1_STABLE [4e51ea8fd] 2015-08-04 13:06:03 -0400
-Branch: REL9_0_STABLE [b09446ed7] 2015-08-04 13:12:03 -0400
--->
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [1afc1fe9c] 2015-06-28 18:38:06 -0400
-Branch: REL9_3_STABLE [5a56c2545] 2015-06-28 18:38:06 -0400
--->
-
- <listitem>
- <para>
- Avoid logging complaints when a parameter that can only be set at
- server start appears multiple times in <filename>postgresql.conf</filename>,
- and fix counting of line numbers after an <literal>include_dir</literal>
- directive (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [246693e5a] 2015-09-21 12:11:32 -0400
-Branch: REL9_5_STABLE [3dfffac70] 2015-09-21 12:11:45 -0400
-Branch: REL9_4_STABLE [fa9fc3a1b] 2015-09-21 12:11:49 -0400
-Branch: REL9_3_STABLE [8b75e489a] 2015-09-21 12:11:58 -0400
-Branch: REL9_2_STABLE [844486216] 2015-09-21 12:12:04 -0400
-Branch: REL9_1_STABLE [5f79730ec] 2015-09-21 12:12:10 -0400
-Branch: REL9_0_STABLE [a89781e34] 2015-09-21 12:12:16 -0400
--->
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [30cb12881] 2015-10-05 10:06:29 -0400
-Branch: REL9_5_STABLE [acf0da1e6] 2015-10-05 10:06:33 -0400
-Branch: REL9_4_STABLE [a0c02ed5b] 2015-10-05 10:06:34 -0400
-Branch: REL9_3_STABLE [9286ff78f] 2015-10-05 10:06:34 -0400
-Branch: REL9_2_STABLE [5e43130b5] 2015-10-05 10:06:35 -0400
-Branch: REL9_1_STABLE [9581e2699] 2015-10-05 10:06:35 -0400
-Branch: REL9_0_STABLE [0398e071a] 2015-10-05 10:06:36 -0400
-Branch: master [5976097c0] 2015-10-05 10:06:30 -0400
-Branch: REL9_5_STABLE [7bed97d48] 2015-10-05 10:06:33 -0400
-Branch: REL9_4_STABLE [bed3f6d03] 2015-10-05 10:06:34 -0400
-Branch: REL9_3_STABLE [28dea9485] 2015-10-05 10:06:34 -0400
-Branch: REL9_2_STABLE [ea68c221f] 2015-10-05 10:06:35 -0400
-Branch: REL9_1_STABLE [879877b00] 2015-10-05 10:06:35 -0400
-Branch: REL9_0_STABLE [682a25d41] 2015-10-05 10:06:36 -0400
-Branch: REL9_2_STABLE [8dacb29ca] 2015-10-05 10:06:35 -0400
--->
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Greg Stark <stark@mit.edu>
-Branch: master [258ee1b63] 2015-09-06 03:35:56 +0100
-Branch: REL9_5_STABLE [c11100d0f] 2015-09-06 04:05:46 +0100
-Branch: REL9_4_STABLE [b17ce6208] 2015-09-06 03:56:59 +0100
-Branch: REL9_3_STABLE [dd04d43bf] 2015-09-06 03:58:27 +0100
-Branch: REL9_2_STABLE [f4afbe065] 2015-09-06 03:58:32 +0100
-Branch: REL9_1_STABLE [07cef3eb8] 2015-09-06 04:02:57 +0100
-Branch: REL9_0_STABLE [530d0c504] 2015-09-06 04:05:20 +0100
-Branch: master [37239ef8c] 2015-09-07 20:41:29 +0100
-Branch: REL9_5_STABLE [a12424028] 2015-09-07 20:47:41 +0100
-Branch: REL9_4_STABLE [0198a8d82] 2015-09-07 20:47:37 +0100
-Branch: REL9_3_STABLE [fde40e53f] 2015-09-07 20:47:33 +0100
-Branch: REL9_2_STABLE [af9d9e59c] 2015-09-07 20:47:29 +0100
-Branch: REL9_1_STABLE [0252d7777] 2015-09-07 20:47:19 +0100
-Branch: REL9_0_STABLE [92d956f51] 2015-09-07 20:47:06 +0100
--->
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9fe8fe9c9] 2015-10-02 13:45:39 -0400
-Branch: REL9_5_STABLE [bb704a781] 2015-10-02 13:45:39 -0400
-Branch: REL9_4_STABLE [109def032] 2015-10-02 13:45:39 -0400
-Branch: REL9_3_STABLE [384ce1b75] 2015-10-02 13:45:39 -0400
-Branch: REL9_2_STABLE [2d51f55ff] 2015-10-02 13:45:39 -0400
-Branch: REL9_1_STABLE [da8ff2920] 2015-10-02 13:45:39 -0400
-Branch: REL9_0_STABLE [d4f6488ec] 2015-10-02 13:45:39 -0400
--->
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b63fc2877] 2015-10-02 14:51:58 -0400
-Branch: REL9_5_STABLE [20c627707] 2015-10-02 14:51:58 -0400
-Branch: REL9_4_STABLE [c5e38b93c] 2015-10-02 14:51:58 -0400
-Branch: REL9_3_STABLE [9ed207ae9] 2015-10-02 14:51:58 -0400
-Branch: REL9_2_STABLE [a0c089f33] 2015-10-02 14:51:58 -0400
-Branch: REL9_1_STABLE [e7de1bc09] 2015-10-02 14:51:59 -0400
-Branch: REL9_0_STABLE [54b116d83] 2015-10-02 14:51:59 -0400
-Branch: master [2e8cfcf4e] 2015-10-02 15:00:51 -0400
-Branch: REL9_5_STABLE [bdc5d95b6] 2015-10-02 15:00:52 -0400
-Branch: REL9_4_STABLE [bb1d97961] 2015-10-02 15:00:52 -0400
-Branch: REL9_3_STABLE [4175cc604] 2015-10-02 15:00:52 -0400
-Branch: REL9_2_STABLE [57bf7b548] 2015-10-02 15:00:52 -0400
-Branch: REL9_1_STABLE [f80af0117] 2015-10-02 15:00:52 -0400
-Branch: REL9_0_STABLE [b875ca09f] 2015-10-02 15:00:52 -0400
--->
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f2c4ffc33] 2015-10-02 14:26:36 -0400
-Branch: REL9_5_STABLE [51f235931] 2015-10-02 14:26:36 -0400
-Branch: REL9_4_STABLE [c0215b2cf] 2015-10-02 14:26:36 -0400
-Branch: REL9_3_STABLE [6b3810d0a] 2015-10-02 14:26:36 -0400
-Branch: REL9_2_STABLE [483bbc9fe] 2015-10-02 14:26:36 -0400
-Branch: REL9_1_STABLE [630154955] 2015-10-02 14:26:36 -0400
-Branch: REL9_0_STABLE [2a8878289] 2015-10-02 14:26:36 -0400
--->
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f2c4ffc33] 2015-10-02 14:26:36 -0400
-Branch: REL9_5_STABLE [51f235931] 2015-10-02 14:26:36 -0400
-Branch: REL9_4_STABLE [c0215b2cf] 2015-10-02 14:26:36 -0400
-Branch: REL9_3_STABLE [6b3810d0a] 2015-10-02 14:26:36 -0400
-Branch: REL9_2_STABLE [483bbc9fe] 2015-10-02 14:26:36 -0400
--->
-
- <listitem>
- <para>
- In regular expression execution, correctly record match data for
- capturing parentheses within a quantifier even when the match is
- zero-length (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8a0258c31] 2015-08-12 00:48:11 -0400
-Branch: REL9_5_STABLE [c5bfcc18a] 2015-08-12 00:48:28 -0400
-Branch: REL9_4_STABLE [a35a527f2] 2015-08-12 00:48:34 -0400
-Branch: REL9_3_STABLE [a54875602] 2015-08-12 00:48:39 -0400
-Branch: REL9_2_STABLE [234205a2e] 2015-08-12 00:48:44 -0400
-Branch: REL9_1_STABLE [7a801ba8c] 2015-08-12 00:48:48 -0400
-Branch: REL9_0_STABLE [7e23b63bd] 2015-08-12 00:48:54 -0400
--->
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d9c0c728a] 2015-09-18 13:55:17 -0400
-Branch: REL9_5_STABLE [a39331fa5] 2015-09-18 13:55:17 -0400
-Branch: REL9_4_STABLE [f7d896ab9] 2015-09-18 13:55:17 -0400
-Branch: REL9_3_STABLE [b84310808] 2015-09-18 13:55:17 -0400
-Branch: REL9_2_STABLE [dc4e8c101] 2015-09-18 13:55:17 -0400
-Branch: REL9_1_STABLE [28c396134] 2015-09-18 13:55:17 -0400
-Branch: REL9_0_STABLE [ba9eb293f] 2015-09-18 13:55:17 -0400
--->
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ba51774d8] 2015-09-20 16:48:44 -0400
-Branch: REL9_5_STABLE [3d3bc2905] 2015-09-20 16:48:44 -0400
-Branch: REL9_4_STABLE [e32c5f118] 2015-09-20 16:48:44 -0400
-Branch: REL9_3_STABLE [7e6e3bdd3] 2015-09-20 16:48:44 -0400
-Branch: REL9_2_STABLE [ac0c71228] 2015-09-20 16:48:44 -0400
-Branch: REL9_1_STABLE [553ce7e9a] 2015-09-20 16:48:44 -0400
-Branch: REL9_0_STABLE [eed5bbc48] 2015-09-20 16:48:44 -0400
--->
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8ea3e7a75] 2015-08-04 18:18:46 -0400
-Branch: REL9_5_STABLE [e2035dc9a] 2015-08-04 18:18:46 -0400
-Branch: REL9_4_STABLE [118c9bb8d] 2015-08-04 18:18:46 -0400
-Branch: REL9_3_STABLE [8bd45a394] 2015-08-04 18:18:46 -0400
-Branch: REL9_2_STABLE [b6659a3b9] 2015-08-04 18:18:46 -0400
-Branch: REL9_1_STABLE [9965aff1c] 2015-08-04 18:18:47 -0400
-Branch: REL9_0_STABLE [bd327627f] 2015-08-04 18:18:47 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9d6077abf] 2015-07-16 22:57:46 -0400
-Branch: REL9_5_STABLE [fd415ffc9] 2015-07-16 22:57:46 -0400
-Branch: REL9_4_STABLE [b8f368276] 2015-07-16 22:57:46 -0400
-Branch: REL9_3_STABLE [730089d87] 2015-07-16 22:57:46 -0400
-Branch: REL9_2_STABLE [15ca2b6cd] 2015-07-16 22:57:46 -0400
-Branch: REL9_1_STABLE [faef3dc28] 2015-07-16 22:57:46 -0400
-Branch: REL9_0_STABLE [36522d627] 2015-07-16 22:57:46 -0400
--->
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [ff4cbc1ff] 2015-10-04 14:16:59 -0400
-Branch: REL9_3_STABLE [45dd7cdba] 2015-10-04 14:17:14 -0400
-Branch: REL9_2_STABLE [fd3e3cf50] 2015-10-04 14:17:20 -0400
-Branch: REL9_1_STABLE [a8168fbcb] 2015-10-04 14:17:24 -0400
-Branch: REL9_0_STABLE [2647b245d] 2015-10-04 14:17:28 -0400
-Branch: master [f2fc98fb8] 2015-10-04 15:55:07 -0400
-Branch: REL9_5_STABLE [e5c94c7bb] 2015-10-04 15:55:07 -0400
-Branch: REL9_4_STABLE [4075fc4b9] 2015-10-04 15:55:07 -0400
-Branch: REL9_3_STABLE [0867e0ad5] 2015-10-04 15:55:07 -0400
-Branch: REL9_2_STABLE [ebc7d928a] 2015-10-04 15:55:07 -0400
-Branch: REL9_1_STABLE [d84cc40e4] 2015-10-04 15:55:07 -0400
-Branch: REL9_0_STABLE [d637a899c] 2015-10-04 15:55:07 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8693ebe37] 2015-07-30 12:11:23 -0400
-Branch: REL9_5_STABLE [e91a1643a] 2015-07-30 12:11:23 -0400
-Branch: REL9_4_STABLE [3b4a9dbfa] 2015-07-30 12:11:23 -0400
-Branch: REL9_3_STABLE [caae9f764] 2015-07-30 12:11:23 -0400
-Branch: REL9_2_STABLE [c7d171251] 2015-07-30 12:11:23 -0400
-Branch: REL9_1_STABLE [ea6e28649] 2015-07-30 12:11:23 -0400
-Branch: REL9_0_STABLE [54833c5e7] 2015-07-30 12:11:23 -0400
-Branch: master [a6492ff89] 2015-07-31 19:26:33 -0400
-Branch: REL9_5_STABLE [edf26ed03] 2015-07-31 19:26:33 -0400
-Branch: REL9_4_STABLE [216977a7d] 2015-07-31 19:26:33 -0400
-Branch: REL9_3_STABLE [a4df781c9] 2015-07-31 19:26:33 -0400
-Branch: master [f69b4b949] 2015-08-01 20:57:41 -0400
-Branch: REL9_5_STABLE [7968238eb] 2015-08-01 20:57:41 -0400
-Branch: REL9_4_STABLE [e39a3b2ef] 2015-08-01 20:57:41 -0400
-Branch: REL9_3_STABLE [1044541dc] 2015-08-01 20:57:41 -0400
-Branch: REL9_2_STABLE [44618f92b] 2015-08-01 20:57:41 -0400
-Branch: REL9_1_STABLE [b9dfa07e8] 2015-08-01 20:57:41 -0400
-Branch: REL9_0_STABLE [44679965f] 2015-08-01 20:57:41 -0400
-Branch: master [85e5e222b] 2015-08-04 14:55:50 -0400
-Branch: REL9_5_STABLE [a6f43986b] 2015-08-04 14:55:52 -0400
-Branch: REL9_4_STABLE [b58e8caf0] 2015-08-04 14:55:53 -0400
-Branch: REL9_3_STABLE [33afbdd02] 2015-08-04 14:55:54 -0400
-Branch: REL9_2_STABLE [359016d2e] 2015-08-04 14:55:55 -0400
-Branch: master [6af9ee4c8] 2015-08-05 14:39:29 -0400
-Branch: REL9_5_STABLE [06663971b] 2015-08-05 14:39:07 -0400
-Branch: REL9_4_STABLE [4d94b5f1f] 2015-08-05 14:39:07 -0400
-Branch: REL9_3_STABLE [9bc4d5927] 2015-08-05 14:39:07 -0400
-Branch: REL9_2_STABLE [08dee567e] 2015-08-05 14:39:07 -0400
-Branch: REL9_1_STABLE [48d4f1e39] 2015-08-05 14:39:07 -0400
-Branch: REL9_0_STABLE [c084f613e] 2015-08-05 14:39:07 -0400
-Branch: master [8703059c6] 2015-08-06 15:35:46 -0400
-Branch: REL9_5_STABLE [df3b0f47b] 2015-08-06 15:35:47 -0400
-Branch: REL9_4_STABLE [7ef507ad7] 2015-08-06 15:35:48 -0400
-Branch: REL9_3_STABLE [3e79144a8] 2015-08-06 15:35:27 -0400
-Branch: REL9_2_STABLE [754ece936] 2015-08-06 15:35:27 -0400
-Branch: REL9_1_STABLE [656b1e8cf] 2015-08-06 15:35:27 -0400
-Branch: REL9_0_STABLE [d860ba43f] 2015-08-06 15:35:28 -0400
-Branch: master [cde35cf4a] 2015-08-06 20:14:53 -0400
-Branch: REL9_5_STABLE [a8725c2ba] 2015-08-06 20:14:54 -0400
-Branch: REL9_4_STABLE [d31e79415] 2015-08-06 20:14:37 -0400
-Branch: REL9_3_STABLE [0d4913509] 2015-08-06 20:14:37 -0400
-Branch: master [bab163e12] 2015-08-06 22:14:27 -0400
-Branch: REL9_5_STABLE [de0227d8a] 2015-08-06 22:14:28 -0400
-Branch: REL9_4_STABLE [8c7bb0240] 2015-08-06 22:14:07 -0400
-Branch: REL9_3_STABLE [de5edc660] 2015-08-06 22:14:07 -0400
-Branch: master [89db83922] 2015-08-07 14:13:50 -0400
-Branch: REL9_5_STABLE [085338822] 2015-08-07 14:13:51 -0400
-Branch: REL9_4_STABLE [30b4ccdab] 2015-08-07 14:13:52 -0400
-Branch: REL9_3_STABLE [868bfd1f3] 2015-08-07 14:13:39 -0400
-Branch: master [4200a9286] 2015-08-10 17:18:17 -0400
-Branch: REL9_5_STABLE [fda25b220] 2015-08-10 17:18:17 -0400
-Branch: REL9_4_STABLE [7371ab74f] 2015-08-10 17:18:17 -0400
-Branch: REL9_3_STABLE [f6d7a79f4] 2015-08-10 17:18:17 -0400
-Branch: REL9_2_STABLE [54cea765c] 2015-08-10 17:18:17 -0400
-Branch: master [cfe30a72f] 2015-08-12 21:19:03 -0400
-Branch: REL9_5_STABLE [ec94bc147] 2015-08-12 21:19:04 -0400
-Branch: REL9_4_STABLE [8cd3a7ada] 2015-08-12 21:19:05 -0400
-Branch: REL9_3_STABLE [7950657a9] 2015-08-12 21:19:06 -0400
-Branch: REL9_2_STABLE [866197d82] 2015-08-12 21:19:07 -0400
-Branch: REL9_1_STABLE [4390ba7bf] 2015-08-12 21:19:09 -0400
-Branch: REL9_0_STABLE [7b4b57fc4] 2015-08-12 21:19:10 -0400
--->
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_5_BR [2cb9ec1bc] 2015-06-22 18:53:27 -0400
-Branch: REL9_4_STABLE [d8f9ab776] 2015-06-22 18:53:27 -0400
-Branch: REL9_3_STABLE [673068588] 2015-06-22 18:53:27 -0400
-Branch: REL9_2_STABLE [e538e510e] 2015-06-22 18:53:27 -0400
--->
-
- <listitem>
- <para>
- Improve planner's performance for <command>UPDATE</command>/<command>DELETE</command>
- on large inheritance sets (Tom Lane, Dean Rasheed)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [96f6a0cb4] 2015-09-09 22:51:44 +0900
-Branch: REL9_5_STABLE [65f37b3e9] 2015-09-09 22:52:28 +0900
-Branch: REL9_4_STABLE [2244c0652] 2015-09-09 22:52:35 +0900
-Branch: REL9_3_STABLE [47387732b] 2015-09-09 22:52:40 +0900
-Branch: REL9_2_STABLE [67518a141] 2015-09-09 23:01:10 +0900
-Branch: REL9_1_STABLE [60fe73b79] 2015-09-09 23:03:17 +0900
--->
-
- <listitem>
- <para>
- Ensure standby promotion trigger files are removed at postmaster
- startup (Michael Paquier, Fujii Masao)
- </para>
-
- <para>
- This prevents unwanted promotion from occurring if these files appear
- in a database backup that is used to initialize a new standby server.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d73d14c27] 2015-08-02 14:55:03 -0400
-Branch: REL9_5_STABLE [72697d2ba] 2015-08-02 14:55:04 -0400
-Branch: REL9_4_STABLE [c6d901292] 2015-08-02 14:55:05 -0400
-Branch: REL9_3_STABLE [fad824a88] 2015-08-02 14:54:44 -0400
-Branch: REL9_2_STABLE [20d1878b6] 2015-08-02 14:54:44 -0400
-Branch: REL9_1_STABLE [f1e84d3eb] 2015-08-02 14:54:44 -0400
-Branch: REL9_0_STABLE [8b53c087d] 2015-08-02 14:54:44 -0400
--->
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_5_BR [48913db88] 2015-06-19 14:23:39 -0400
-Branch: REL9_4_STABLE [29722d79b] 2015-06-19 14:23:39 -0400
--->
-
- <listitem>
- <para>
- Ensure that the postmaster does not exit until all its child processes
- are gone, even in an immediate shutdown (Tom Lane)
- </para>
-
- <para>
- Like the previous item, this avoids possible race conditions against a
- subsequently-started postmaster.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [45811be94] 2015-07-09 13:22:22 -0400
-Branch: REL9_5_STABLE [193e02707] 2015-07-09 13:22:23 -0400
-Branch: REL9_4_STABLE [0d01c5b93] 2015-07-09 13:22:23 -0400
-Branch: REL9_3_STABLE [9c39d7ae0] 2015-07-09 13:22:23 -0400
-Branch: REL9_2_STABLE [97122b8a8] 2015-07-09 13:22:23 -0400
-Branch: REL9_1_STABLE [da1e7eb72] 2015-07-09 13:22:23 -0400
-Branch: REL9_0_STABLE [6718f07a0] 2015-07-09 13:22:23 -0400
--->
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master Release: REL9_5_BR [667912aee] 2015-06-21 18:57:28 +0200
-Branch: REL9_4_STABLE [ec1408155] 2015-06-21 19:00:30 +0200
-Branch: REL9_3_STABLE [203193144] 2015-06-21 19:00:40 +0200
--->
-
- <listitem>
- <para>
- Make emergency autovacuuming for multixact wraparound more robust
- (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d8f15c95b] 2015-07-28 17:34:23 -0400
-Branch: REL9_5_STABLE [116be6c17] 2015-07-28 17:34:00 -0400
-Branch: REL9_4_STABLE [082d4283b] 2015-07-28 17:34:00 -0400
-Branch: REL9_3_STABLE [47ee27521] 2015-07-28 17:34:00 -0400
-Branch: REL9_2_STABLE [1a2f95630] 2015-07-28 17:34:00 -0400
-Branch: REL9_1_STABLE [3f12041e7] 2015-07-28 17:34:00 -0400
-Branch: REL9_0_STABLE [f527c0a2a] 2015-07-28 17:34:00 -0400
--->
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_5_BR [da1a9d0f5] 2015-06-19 12:44:36 -0300
-Branch: REL9_4_STABLE [cf733760e] 2015-06-19 12:44:35 -0300
-Branch: REL9_3_STABLE [5ac77a276] 2015-06-19 12:44:34 -0300
-Branch: REL9_2_STABLE [41acde2df] 2015-06-19 12:44:34 -0300
-Branch: REL9_1_STABLE [2fed5731a] 2015-06-19 12:44:33 -0300
-Branch: REL9_0_STABLE [d68df5e40] 2015-06-19 12:44:33 -0300
--->
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [e26692248] 2015-09-07 17:16:29 +0300
-Branch: REL9_5_STABLE [d592a8745] 2015-09-07 17:17:15 +0300
-Branch: REL9_4_STABLE [b6e367373] 2015-09-07 17:17:42 +0300
-Branch: REL9_3_STABLE [cd6f4248f] 2015-09-07 17:18:10 +0300
-Branch: REL9_2_STABLE [3ffbc4994] 2015-09-07 17:18:26 +0300
-Branch: REL9_1_STABLE [364c02357] 2015-09-07 17:18:45 +0300
-Branch: REL9_0_STABLE [a7496aee6] 2015-09-07 17:20:44 +0300
--->
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [334445179] 2015-07-27 12:30:26 +0300
-Branch: REL9_5_STABLE [202aea62a] 2015-07-27 12:31:05 +0300
-Branch: REL9_4_STABLE [746e7f1c1] 2015-07-27 12:32:08 +0300
-Branch: REL9_3_STABLE [bafe3b007] 2015-07-27 12:32:30 +0300
-Branch: REL9_2_STABLE [7658368cf] 2015-07-27 12:32:48 +0300
-Branch: REL9_1_STABLE [a471700e3] 2015-07-27 12:33:13 +0300
-Branch: REL9_0_STABLE [f87bf8480] 2015-07-27 12:33:18 +0300
--->
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [023430abf] 2015-07-27 12:28:21 +0300
-Branch: REL9_5_STABLE [2fa8ba348] 2015-07-27 12:31:05 +0300
-Branch: REL9_4_STABLE [579b9f97c] 2015-07-27 12:32:08 +0300
-Branch: REL9_3_STABLE [863af3a37] 2015-07-27 12:32:30 +0300
-Branch: REL9_2_STABLE [f4297f8c5] 2015-07-27 12:32:48 +0300
--->
-
- <listitem>
- <para>
- Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> attempted to recycle such pages, but did so in a
- way that wasn't crash-safe.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [766dcfb16] 2015-07-23 01:29:59 +0300
-Branch: REL9_5_STABLE [a9b3a22aa] 2015-07-23 01:30:07 +0300
-Branch: REL9_4_STABLE [b7551339d] 2015-07-23 01:30:09 +0300
-Branch: REL9_3_STABLE [6ae9a0218] 2015-07-23 01:30:11 +0300
-Branch: REL9_2_STABLE [84330d0c1] 2015-07-23 01:30:15 +0300
-Branch: REL9_1_STABLE [e54e17aca] 2015-07-23 01:30:17 +0300
-Branch: REL9_0_STABLE [40ad78220] 2015-07-23 01:30:19 +0300
--->
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2edb94911] 2015-08-18 19:22:37 -0400
-Branch: REL9_5_STABLE [4c3754ffe] 2015-08-18 19:22:37 -0400
-Branch: REL9_4_STABLE [928d0226e] 2015-08-18 19:22:38 -0400
-Branch: REL9_3_STABLE [8992e1acd] 2015-08-18 19:22:38 -0400
-Branch: REL9_2_STABLE [fb41bf4b5] 2015-08-18 19:22:38 -0400
-Branch: REL9_1_STABLE [17aa3c2d1] 2015-08-18 19:22:38 -0400
-Branch: REL9_0_STABLE [e41718fa1] 2015-08-18 19:22:38 -0400
--->
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b631a46ed] 2015-09-29 10:52:22 -0400
-Branch: REL9_5_STABLE [a16b9b193] 2015-09-29 10:52:22 -0400
-Branch: REL9_4_STABLE [b62c870ff] 2015-09-29 10:52:22 -0400
-Branch: REL9_3_STABLE [f60b2e2d4] 2015-09-29 10:52:22 -0400
-Branch: REL9_2_STABLE [aae40cf13] 2015-09-29 10:52:22 -0400
-Branch: REL9_1_STABLE [ca6c2f863] 2015-09-29 10:52:22 -0400
--->
-
- <listitem>
- <para>
- Fix <application>PL/Perl</application> to handle non-<acronym>ASCII</acronym> error
- message texts correctly (Alex Hunsaker)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [09b3d2725] 2015-08-21 11:19:33 -0400
-Branch: REL9_5_STABLE [20bef3fe2] 2015-08-21 11:19:40 -0400
-Branch: REL9_4_STABLE [f7ed465e0] 2015-08-21 11:19:44 -0400
-Branch: REL9_3_STABLE [461235bda] 2015-08-21 11:19:49 -0400
-Branch: REL9_2_STABLE [2f1d558bc] 2015-08-21 11:19:54 -0400
-Branch: REL9_1_STABLE [f2ae044ba] 2015-08-21 11:19:58 -0400
-Branch: master [f469f634a] 2015-08-21 12:21:37 -0400
-Branch: REL9_5_STABLE [19446280f] 2015-08-21 12:21:37 -0400
-Branch: REL9_4_STABLE [22b9ce798] 2015-08-21 12:21:37 -0400
-Branch: REL9_3_STABLE [59592efcf] 2015-08-21 12:21:37 -0400
-Branch: REL9_2_STABLE [dadef8af2] 2015-08-21 12:21:37 -0400
-Branch: REL9_1_STABLE [1d190d095] 2015-08-21 12:21:37 -0400
--->
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> crash when returning the string
- representation of a <type>record</type> result (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [f8d67ca8d] 2015-07-20 14:10:07 +0200
-Branch: REL9_5_STABLE [b0b6f8d71] 2015-07-20 14:18:08 +0200
-Branch: REL9_4_STABLE [49c300040] 2015-07-20 14:18:08 +0200
-Branch: REL9_3_STABLE [b2efbb71d] 2015-07-20 14:18:08 +0200
-Branch: REL9_2_STABLE [3cb6ef998] 2015-07-20 14:18:08 +0200
-Branch: REL9_1_STABLE [14ade020f] 2015-07-20 14:18:08 +0200
-Branch: REL9_0_STABLE [4c11967e7] 2015-07-20 14:18:08 +0200
--->
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [cb3384a0c] 2015-08-02 22:12:33 +0300
-Branch: REL9_5_STABLE [ea8385df6] 2015-08-02 22:12:38 +0300
-Branch: REL9_4_STABLE [d7d4bd2c3] 2015-08-02 22:12:41 +0300
-Branch: REL9_3_STABLE [9d04a9824] 2015-08-02 22:12:45 +0300
-Branch: REL9_2_STABLE [56187c6fb] 2015-08-02 22:12:48 +0300
-Branch: REL9_1_STABLE [2d19a0e97] 2015-08-02 22:12:51 +0300
--->
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix output of ISBN-13 numbers that begin
- with 979 (Fabien Coelho)
- </para>
-
- <para>
- EANs beginning with 979 (but not 9790) are considered ISBNs, but they
- must be printed in the new 13-digit format, not the 10-digit format.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8bbe4cbd9] 2015-10-04 17:58:42 -0400
-Branch: REL9_5_STABLE [39a716d93] 2015-10-04 17:58:30 -0400
-Branch: REL9_4_STABLE [93840f96c] 2015-10-04 17:58:30 -0400
--->
-
- <listitem>
- <para>
- Improve <filename>contrib/pg_stat_statements</filename>' handling of
- query-text garbage collection (Peter Geoghegan)
- </para>
-
- <para>
- The external file containing query texts could bloat to very large
- sizes; once it got past 1GB attempts to trim it would fail, soon
- leading to situations where the file could not be read at all.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [76f965ff1] 2015-09-24 12:47:29 -0400
-Branch: REL9_5_STABLE [59d765b65] 2015-09-24 12:47:30 -0400
-Branch: REL9_4_STABLE [0da864c53] 2015-09-24 12:47:30 -0400
-Branch: REL9_3_STABLE [b7dcb2dd4] 2015-09-24 12:47:30 -0400
--->
-
- <listitem>
- <para>
- Improve <filename>contrib/postgres_fdw</filename>'s handling of
- collation-related decisions (Tom Lane)
- </para>
-
- <para>
- The main user-visible effect is expected to be that comparisons
- involving <type>varchar</type> columns will be sent to the remote server
- for execution in more cases than before.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [414bef30b] 2015-07-07 18:44:59 +0300
-Branch: REL9_5_STABLE [28c38396e] 2015-07-07 18:47:25 +0300
-Branch: REL9_4_STABLE [992c6f0d2] 2015-07-07 18:45:17 +0300
-Branch: REL9_3_STABLE [fcdac5614] 2015-07-07 18:45:22 +0300
-Branch: REL9_2_STABLE [6d88c1fc5] 2015-07-07 18:45:24 +0300
-Branch: REL9_1_STABLE [dcbaf4b37] 2015-07-07 18:45:28 +0300
-Branch: REL9_0_STABLE [2b189c7ec] 2015-07-07 18:45:31 +0300
--->
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL9_5_BR [82be1bf50] 2015-06-12 14:50:47 +0200
-Branch: REL9_4_STABLE [70767ac26] 2015-06-13 11:05:06 +0200
-Branch: REL9_3_STABLE [d65e5f832] 2015-06-13 11:08:16 +0200
-Branch: REL9_2_STABLE [1ea539ae3] 2015-06-13 11:13:59 +0200
-Branch: REL9_1_STABLE [866e7f591] 2015-06-13 11:15:09 +0200
-Branch: REL9_0_STABLE [4678be617] 2015-06-13 11:18:31 +0200
-Branch: master Release: REL9_5_BR [96ad72d1c] 2015-06-12 14:52:55 +0200
-Branch: REL9_4_STABLE [4f60d6658] 2015-06-13 11:04:58 +0200
-Branch: REL9_3_STABLE [31c06d4b6] 2015-06-13 11:13:16 +0200
-Branch: REL9_2_STABLE [ec311b1d8] 2015-06-13 11:14:07 +0200
-Branch: REL9_1_STABLE [a5238ced6] 2015-06-13 11:17:42 +0200
-Branch: REL9_0_STABLE [235bd4ccb] 2015-06-13 11:20:31 +0200
-Branch: master Release: REL9_5_BR [af0b49fc9] 2015-06-15 14:20:09 +0200
-Branch: REL9_4_STABLE [853222ce0] 2015-06-15 14:22:18 +0200
-Branch: REL9_3_STABLE [3e2a17eec] 2015-06-15 14:22:50 +0200
-Branch: REL9_2_STABLE [fd1ff4a13] 2015-06-15 14:23:04 +0200
-Branch: REL9_1_STABLE [a38f08bb9] 2015-06-15 14:23:17 +0200
-Branch: REL9_0_STABLE [abf92840a] 2015-06-15 14:23:30 +0200
-Branch: master Release: REL9_5_BR [94a484222] 2015-06-15 14:21:03 +0200
-Branch: REL9_4_STABLE [2a781b5bb] 2015-06-15 14:22:24 +0200
-Branch: REL9_3_STABLE [4130b2c1f] 2015-06-15 14:22:54 +0200
-Branch: REL9_2_STABLE [711cbaadd] 2015-06-15 14:23:07 +0200
-Branch: REL9_1_STABLE [6ab1a53dd] 2015-06-15 14:23:21 +0200
-Branch: REL9_0_STABLE [d278ff3b2] 2015-06-15 14:27:39 +0200
--->
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4778a0bda] 2015-09-24 23:01:04 -0400
-Branch: REL9_5_STABLE [f1ee153dc] 2015-09-24 23:01:04 -0400
-Branch: REL9_4_STABLE [348dd2847] 2015-09-24 23:01:04 -0400
-Branch: REL9_3_STABLE [7e327ecd2] 2015-09-24 23:01:04 -0400
-Branch: REL9_2_STABLE [596c9e9ef] 2015-09-24 23:01:04 -0400
-Branch: REL9_1_STABLE [7ddadacec] 2015-09-24 23:01:04 -0400
-Branch: REL9_0_STABLE [c2d6ef14e] 2015-09-24 23:01:04 -0400
-Branch: master [6325527d8] 2015-09-25 00:00:33 -0400
-Branch: REL9_5_STABLE [da4af91ce] 2015-09-25 00:00:43 -0400
-Branch: REL9_4_STABLE [49917edad] 2015-09-25 00:00:51 -0400
-Branch: REL9_3_STABLE [9c547c939] 2015-09-25 00:00:58 -0400
-Branch: REL9_2_STABLE [60617d7d6] 2015-09-25 00:01:08 -0400
-Branch: REL9_1_STABLE [c48623d8d] 2015-09-25 00:01:14 -0400
-Branch: REL9_0_STABLE [71763ecff] 2015-09-25 00:01:20 -0400
-Branch: master [77130fc14] 2015-09-25 12:20:45 -0400
-Branch: REL9_5_STABLE [5eb702437] 2015-09-25 12:20:45 -0400
-Branch: REL9_4_STABLE [c961f401b] 2015-09-25 12:20:45 -0400
-Branch: REL9_3_STABLE [b7d17eca5] 2015-09-25 12:20:46 -0400
-Branch: REL9_2_STABLE [80fa54210] 2015-09-25 12:20:46 -0400
-Branch: REL9_1_STABLE [f88643476] 2015-09-25 12:20:46 -0400
-Branch: REL9_0_STABLE [98d8c75f9] 2015-09-25 12:20:46 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [e135c3d99] 2015-07-08 20:44:21 -0400
-Branch: REL9_5_STABLE [fb990ce6c] 2015-07-08 20:44:25 -0400
-Branch: REL9_4_STABLE [eb1525e89] 2015-07-08 20:44:26 -0400
-Branch: REL9_3_STABLE [49008d645] 2015-07-08 20:44:26 -0400
-Branch: REL9_2_STABLE [458ccbf2b] 2015-07-08 20:44:27 -0400
-Branch: REL9_1_STABLE [5f173a9f2] 2015-07-08 20:44:27 -0400
-Branch: REL9_0_STABLE [6087bf1a1] 2015-07-08 20:44:27 -0400
--->
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8ab4a6bd3] 2015-10-01 16:20:13 -0400
-Branch: REL9_5_STABLE [5ea47e8f2] 2015-10-01 16:20:15 -0400
-Branch: REL9_4_STABLE [35435af38] 2015-10-01 16:19:49 -0400
-Branch: REL9_3_STABLE [7e1e1c9d1] 2015-10-01 16:19:49 -0400
-Branch: REL9_2_STABLE [3756c65a0] 2015-10-01 16:19:49 -0400
--->
-
- <listitem>
- <para>
- Make <application>pg_dump</application> handle inherited <literal>NOT VALID</literal>
- check constraints correctly (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [caef94d59] 2015-07-25 17:14:36 -0400
-Branch: REL9_5_STABLE [08012455c] 2015-07-25 17:15:32 -0400
-Branch: REL9_4_STABLE [41ed5bb9a] 2015-07-25 17:15:48 -0400
-Branch: REL9_3_STABLE [84bf6ece1] 2015-07-25 17:16:03 -0400
-Branch: REL9_2_STABLE [aa1266d5f] 2015-07-25 17:16:14 -0400
-Branch: REL9_1_STABLE [af225551e] 2015-07-25 17:16:39 -0400
--->
-
- <listitem>
- <para>
- Fix selection of default <application>zlib</application> compression level
- in <application>pg_dump</application>'s directory output format (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [8346218c0] 2015-09-20 20:42:27 -0400
-Branch: REL9_5_STABLE [1be9d65e1] 2015-09-20 20:42:44 -0400
-Branch: REL9_4_STABLE [7496aba80] 2015-09-20 20:42:50 -0400
-Branch: REL9_3_STABLE [ea218a2ba] 2015-09-20 20:42:55 -0400
-Branch: REL9_2_STABLE [c94b65f67] 2015-09-20 20:43:47 -0400
-Branch: REL9_1_STABLE [5dc49efe9] 2015-09-20 20:44:23 -0400
-Branch: REL9_0_STABLE [24aed2124] 2015-09-20 20:44:34 -0400
--->
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [7f8d090b8] 2015-09-11 15:51:11 -0400
-Branch: REL9_5_STABLE [3243fce88] 2015-09-11 15:51:11 -0400
-Branch: REL9_4_STABLE [35d2fc1f2] 2015-09-11 15:51:11 -0400
-Branch: REL9_3_STABLE [ca445043e] 2015-09-11 15:51:10 -0400
-Branch: REL9_2_STABLE [befc63e84] 2015-09-11 15:51:10 -0400
-Branch: REL9_1_STABLE [c5391e933] 2015-09-11 15:51:10 -0400
-Branch: REL9_0_STABLE [52b07779d] 2015-09-11 15:51:10 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b861678f5] 2015-08-10 20:10:15 -0400
-Branch: REL9_5_STABLE [1cd468516] 2015-08-10 20:10:15 -0400
-Branch: REL9_4_STABLE [3352c23a6] 2015-08-10 20:10:16 -0400
-Branch: REL9_3_STABLE [75d02d787] 2015-08-10 20:10:16 -0400
-Branch: REL9_2_STABLE [be9ef396c] 2015-08-10 20:10:16 -0400
-Branch: REL9_1_STABLE [34f1a85e5] 2015-08-10 20:10:16 -0400
-Branch: REL9_0_STABLE [298d1f808] 2015-08-10 20:10:16 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping data types from pre-9.2 servers, and when dumping
- functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3bdd7f90f] 2015-08-04 19:34:12 -0400
-Branch: REL9_5_STABLE [1f507c7e9] 2015-08-04 19:34:12 -0400
-Branch: REL9_4_STABLE [fa6e785fd] 2015-08-04 19:34:12 -0400
-Branch: REL9_3_STABLE [5da713f31] 2015-08-04 19:34:12 -0400
-Branch: REL9_2_STABLE [dae6e4601] 2015-08-04 19:34:12 -0400
-Branch: REL9_1_STABLE [270a877cc] 2015-08-04 19:34:12 -0400
-Branch: REL9_0_STABLE [5d175be17] 2015-08-04 19:34:12 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bcc87b6b0] 2015-07-12 16:26:08 -0400
-Branch: REL9_5_STABLE [0e78a610f] 2015-07-12 16:26:18 -0400
-Branch: REL9_4_STABLE [1ed549387] 2015-07-12 16:25:51 -0400
-Branch: REL9_3_STABLE [faf686b54] 2015-07-12 16:25:52 -0400
-Branch: REL9_2_STABLE [a24ceea4b] 2015-07-12 16:25:52 -0400
-Branch: REL9_1_STABLE [e9a859b54] 2015-07-12 16:25:52 -0400
--->
-
- <listitem>
- <para>
- Fix assorted minor memory leaks in <application>pg_dump</application> and other
- client-side programs (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [9031ff91a] 2015-07-03 11:12:34 +0300
-Branch: REL9_5_STABLE [5174ca17a] 2015-07-03 11:15:55 +0300
-Branch: REL9_4_STABLE [9d6352aaa] 2015-07-03 11:15:27 +0300
--->
-
- <listitem>
- <para>
- Fix <application>pgbench</application>'s progress-report behavior when a query,
- or <application>pgbench</application> itself, gets stuck (Fabien Coelho)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_4_STABLE [747ca6697] 2015-08-29 16:34:30 -0400
--->
-
- <listitem>
- <para>
- Fix spinlock assembly code for Alpha hardware (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c41a1215f] 2015-08-29 16:09:25 -0400
-Branch: REL9_5_STABLE [ffbc387bf] 2015-08-29 16:09:25 -0400
-Branch: REL9_4_STABLE [3da9c060f] 2015-08-29 16:09:25 -0400
-Branch: REL9_3_STABLE [c355df54e] 2015-08-29 16:09:25 -0400
-Branch: REL9_2_STABLE [472680c57] 2015-08-29 16:09:25 -0400
-Branch: REL9_1_STABLE [14b497cfb] 2015-08-29 16:09:25 -0400
-Branch: REL9_0_STABLE [b5a22d8bb] 2015-08-29 16:09:25 -0400
--->
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [43d89a23d] 2015-07-17 03:01:14 -0400
-Branch: REL9_5_STABLE [eb3b93b53] 2015-07-17 03:01:29 -0400
-Branch: REL9_4_STABLE [f3f037e18] 2015-07-17 03:01:35 -0400
-Branch: REL9_3_STABLE [7319c0524] 2015-07-17 03:02:03 -0400
-Branch: REL9_2_STABLE [12073b9aa] 2015-07-17 03:02:18 -0400
-Branch: REL9_1_STABLE [76fa354c5] 2015-07-17 03:02:23 -0400
-Branch: REL9_0_STABLE [cdf596b1c] 2015-07-17 03:02:46 -0400
--->
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [bcd7c4120] 2015-07-15 21:00:26 -0400
-Branch: REL9_5_STABLE [c2b824e34] 2015-07-15 21:00:30 -0400
-Branch: REL9_4_STABLE [2405107b4] 2015-07-15 21:00:30 -0400
-Branch: REL9_3_STABLE [dc5075fed] 2015-07-15 21:00:30 -0400
-Branch: REL9_2_STABLE [690bec26c] 2015-07-15 21:00:31 -0400
-Branch: REL9_1_STABLE [1dd2b6b68] 2015-07-15 21:00:31 -0400
-Branch: REL9_0_STABLE [7803d5720] 2015-07-15 21:00:31 -0400
--->
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [c53f73879] 2015-07-29 22:49:48 -0400
-Branch: REL9_5_STABLE [a664d4790] 2015-07-29 22:52:43 -0400
-Branch: REL9_4_STABLE [76cf5f195] 2015-07-29 22:53:09 -0400
-Branch: REL9_3_STABLE [23e7ee962] 2015-07-29 22:53:40 -0400
-Branch: REL9_2_STABLE [0a89f3bc6] 2015-07-29 22:53:58 -0400
-Branch: REL9_1_STABLE [d20327a4f] 2015-07-29 22:54:03 -0400
-Branch: REL9_0_STABLE [2d8c136e7] 2015-07-29 22:54:08 -0400
--->
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_5_BR [ab93f90cd] 2015-06-30 14:20:38 -0300
-Branch: REL9_4_STABLE [ef704ec06] 2015-06-30 14:20:38 -0300
-Branch: REL9_3_STABLE [c085e072f] 2015-06-30 14:20:38 -0300
-Branch: REL9_2_STABLE [c538d7363] 2015-06-30 14:20:38 -0300
-Branch: REL9_1_STABLE [a9f886f41] 2015-06-30 14:20:38 -0300
-Branch: REL9_0_STABLE [b185c42c1] 2015-06-30 14:20:37 -0300
--->
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [ec79978dd] 2015-08-14 20:23:13 -0400
-Branch: REL9_5_STABLE [f19ad6fbe] 2015-08-14 20:23:35 -0400
-Branch: REL9_4_STABLE [a0104e080] 2015-08-14 20:23:42 -0400
--->
-
- <listitem>
- <para>
- Translate encoding <literal>UHC</literal> as Windows code page 949
- (Noah Misch)
- </para>
-
- <para>
- This fixes presentation of non-ASCII log messages from processes that
- are not attached to any particular database, such as the postmaster.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [43adc7a71] 2015-08-14 20:23:09 -0400
-Branch: REL9_5_STABLE [92516bf19] 2015-08-14 20:23:34 -0400
-Branch: REL9_4_STABLE [f988da953] 2015-08-14 20:23:41 -0400
--->
-
- <listitem>
- <para>
- On Windows, avoid failure when doing encoding conversion to UTF16
- outside a transaction, such as for log messages (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master Release: REL9_5_BR [f0a264a36] 2015-06-20 12:09:29 -0400
-Branch: REL9_4_STABLE [b2ed1682d] 2015-06-20 12:10:56 -0400
--->
-
- <listitem>
- <para>
- Fix postmaster startup failure due to not
- copying <function>setlocale()</function>'s return value (Noah Misch)
- </para>
-
- <para>
- This has been reported on Windows systems with the ANSI code page set
- to CP936 (<quote>Chinese (Simplified, PRC)</quote>), and may occur with
- other multibyte code pages.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [6c534fd68] 2015-07-06 22:18:26 +0300
-Branch: REL9_5_STABLE [e5460aa02] 2015-07-07 16:33:10 +0300
-Branch: REL9_4_STABLE [4dac5651b] 2015-07-07 16:31:52 +0300
-Branch: REL9_3_STABLE [880365a3c] 2015-07-07 16:37:16 +0300
-Branch: REL9_2_STABLE [a5273ef37] 2015-07-07 16:37:34 +0300
-Branch: REL9_1_STABLE [3b7cf4367] 2015-07-07 16:38:24 +0300
-Branch: REL9_0_STABLE [341b877d3] 2015-07-07 16:39:25 +0300
--->
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a5d489ccb] 2015-07-02 17:24:36 -0400
-Branch: REL9_5_STABLE [d1fec374f] 2015-07-05 12:01:01 -0400
-Branch: REL9_4_STABLE [60c38e62c] 2015-07-05 12:01:01 -0400
-Branch: REL9_3_STABLE [544e75814] 2015-07-05 12:01:01 -0400
-Branch: REL9_2_STABLE [89b8cf47b] 2015-07-05 12:01:01 -0400
-Branch: REL9_1_STABLE [9b00885d0] 2015-07-05 12:01:01 -0400
-Branch: REL9_0_STABLE [29ff43adf] 2015-07-05 12:01:02 -0400
--->
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [241e6844a] 2015-10-02 19:15:39 -0400
-Branch: REL9_5_STABLE [19b06cc66] 2015-10-02 19:15:49 -0400
-Branch: REL9_4_STABLE [8e45497a2] 2015-10-02 19:15:57 -0400
-Branch: REL9_3_STABLE [0f6a046b6] 2015-10-02 19:16:06 -0400
-Branch: REL9_2_STABLE [fd519c170] 2015-10-02 19:16:18 -0400
-Branch: REL9_1_STABLE [3a68e0a10] 2015-10-02 19:16:29 -0400
-Branch: REL9_0_STABLE [47ac95f37] 2015-10-02 19:16:37 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-4">
- <title>Release 9.4.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.4.3.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.4</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading an installation that was previously
- upgraded using a <application>pg_upgrade</application> version between 9.3.0 and
- 9.3.4 inclusive, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.2,
- see <xref linkend="release-9-4-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [068cfadf9] 2015-06-05 09:31:57 -0400
-Branch: REL9_4_STABLE [b6a3444fa] 2015-06-05 09:33:52 -0400
-Branch: REL9_3_STABLE [2a9b01928] 2015-06-05 09:34:15 -0400
--->
-
- <listitem>
- <para>
- Fix possible failure to recover from an inconsistent database state
- (Robert Haas)
- </para>
-
- <para>
- Recent <productname>PostgreSQL</productname> releases introduced mechanisms to
- protect against multixact wraparound, but some of that code did not
- account for the possibility that it would need to run during crash
- recovery, when the database may not be in a consistent state. This
- could result in failure to restart after a crash, or failure to start
- up a secondary server. The lingering effects of a previously-fixed
- bug in <application>pg_upgrade</application> could also cause such a failure, in
- installations that had used <application>pg_upgrade</application> versions
- between 9.3.0 and 9.3.4.
- </para>
-
- <para>
- The <application>pg_upgrade</application> bug in question was that it would
- set <literal>oldestMultiXid</literal> to 1 in <filename>pg_control</filename> even
- if the true value should be higher. With the fixes introduced in
- this release, such a situation will result in immediate emergency
- autovacuuming until a correct <literal>oldestMultiXid</literal> value can
- be determined. If that would pose a hardship, users can avoid it by
- doing manual vacuuming <emphasis>before</emphasis> upgrading to this release.
- In detail:
-
- <orderedlist>
- <listitem>
- <para>
- Check whether <application>pg_controldata</application> reports <quote>Latest
- checkpoint's oldestMultiXid</quote> to be 1. If not, there's nothing
- to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Look in <filename>PGDATA/pg_multixact/offsets</filename> to see if there's a
- file named <filename>0000</filename>. If there is, there's nothing to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Otherwise, for each table that has
- <structname>pg_class</structname>.<structfield>relminmxid</structfield> equal to 1,
- <command>VACUUM</command> that table with
- both <xref linkend="guc-vacuum-multixact-freeze-min-age"/>
- and <xref linkend="guc-vacuum-multixact-freeze-table-age"/> set to
- zero. (You can use the vacuum cost delay parameters described
- in <xref linkend="runtime-config-resource-vacuum-cost"/> to reduce
- the performance consequences for concurrent sessions.)
- </para>
- </listitem>
- </orderedlist>
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f3b5565dd] 2015-06-07 15:32:09 -0400
-Branch: REL9_4_STABLE [be25a08a9] 2015-06-07 15:32:09 -0400
-Branch: REL9_3_STABLE [4f2458dd7] 2015-06-07 15:32:09 -0400
-Branch: REL9_2_STABLE [3e69a73b9] 2015-06-07 15:32:09 -0400
-Branch: REL9_1_STABLE [e06e56212] 2015-06-07 15:32:09 -0400
-Branch: REL9_0_STABLE [2fe1939b0] 2015-06-07 15:32:09 -0400
--->
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ac23b711d] 2015-06-05 13:22:27 -0400
-Branch: REL9_4_STABLE [247263dc3] 2015-06-05 13:22:27 -0400
-Branch: REL9_3_STABLE [ac86eda63] 2015-06-05 13:22:27 -0400
-Branch: REL9_2_STABLE [04358dab2] 2015-06-05 13:22:27 -0400
-Branch: REL9_1_STABLE [002e7d144] 2015-06-05 13:22:27 -0400
-Branch: REL9_0_STABLE [dbd99c7f0] 2015-06-05 13:22:27 -0400
--->
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3f59be836] 2015-06-03 11:59:10 -0400
-Branch: REL9_4_STABLE [f0a8515c4] 2015-06-03 11:58:47 -0400
-Branch: REL9_3_STABLE [d3fdec6ae] 2015-06-03 11:58:47 -0400
--->
-
- <listitem>
- <para>
- Improve planner's cost estimates for semi-joins and anti-joins with
- inner indexscans (Tom Lane, Tomas Vondra)
- </para>
-
- <para>
- This type of plan is quite cheap when all the join clauses are used
- as index scan conditions, even if the inner scan would nominally
- fetch many rows, because the executor will stop after obtaining one
- row. The planner only partially accounted for that effect, and would
- therefore overestimate the cost, leading it to possibly choose some
- other much less efficient plan type.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-3">
- <title>Release 9.4.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.4.2.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.3</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.4.2,
- see <xref linkend="release-9-4-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d8179b001] 2015-05-28 17:33:03 -0400
-Branch: REL9_4_STABLE [a3ae3db43] 2015-05-28 17:33:03 -0400
-Branch: REL9_3_STABLE [81f3d3b7c] 2015-05-28 17:33:03 -0400
-Branch: REL9_2_STABLE [aa8377e64] 2015-05-28 17:33:03 -0400
-Branch: REL9_1_STABLE [cb867853a] 2015-05-28 17:33:03 -0400
-Branch: REL9_0_STABLE [e4a04e5a4] 2015-05-28 17:33:03 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c07d8c963] 2015-05-29 13:05:16 -0400
-Branch: REL9_4_STABLE [dbde225b1] 2015-05-29 13:05:16 -0400
-Branch: REL9_3_STABLE [52fc94844] 2015-05-29 13:05:16 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [57e1138bc] 2015-05-29 15:11:36 -0400
-Branch: REL9_4_STABLE [70a4519b8] 2015-05-29 15:11:36 -0400
-Branch: REL9_3_STABLE [35dd1b51f] 2015-05-29 15:11:36 -0400
-Branch: REL9_2_STABLE [77642a819] 2015-05-29 15:11:36 -0400
-Branch: REL9_1_STABLE [9e79ca326] 2015-05-29 15:11:36 -0400
-Branch: REL9_0_STABLE [bf2f20c08] 2015-05-29 15:11:36 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1943c000b] 2015-05-29 17:02:58 -0400
-Branch: REL9_4_STABLE [99f50dd72] 2015-05-29 17:02:58 -0400
-Branch: REL9_3_STABLE [c2b68b1f7] 2015-05-29 17:02:58 -0400
--->
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
-
- <para>
- Also apply the same rules in <literal>initdb --sync-only</literal>.
- This case is less critical but it should act similarly.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f46edf479] 2015-05-28 11:24:37 -0400
-Branch: REL9_4_STABLE [d4a9f5519] 2015-05-28 11:24:37 -0400
-Branch: REL9_3_STABLE [27bae8d96] 2015-05-28 11:24:37 -0400
-Branch: REL9_2_STABLE [f3c67aad4] 2015-05-28 11:24:37 -0400
--->
-
- <listitem>
- <para>
- Fix <function>pg_get_functiondef()</function> to show
- functions' <literal>LEAKPROOF</literal> property, if set (Jeevan Chalke)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [5302760a5] 2015-05-22 10:21:41 -0400
-Branch: REL9_4_STABLE [9b74f32cd] 2015-05-22 10:31:29 -0400
--->
-
- <listitem>
- <para>
- Fix <function>pushJsonbValue()</function> to unpack <type>jbvBinary</type>
- objects (Andrew Dunstan)
- </para>
-
- <para>
- This change does not affect any behavior in the core code as of 9.4,
- but it avoids a corner case for possible third-party callers.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [86832eb89] 2015-05-26 22:14:59 -0400
-Branch: REL9_4_STABLE [79f0f7cab] 2015-05-26 22:14:59 -0400
-Branch: REL9_3_STABLE [9e980e7d0] 2015-05-26 22:14:59 -0400
-Branch: REL9_2_STABLE [1b1457120] 2015-05-26 22:14:59 -0400
-Branch: REL9_1_STABLE [5585cc707] 2015-05-26 22:14:59 -0400
-Branch: REL9_0_STABLE [b06649b7f] 2015-05-26 22:15:00 -0400
--->
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-2">
- <title>Release 9.4.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.1.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.2</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you use <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions, see the changelog entry below
- about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.4.1,
- see <xref linkend="release-9-4-1"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [b0ce38503] 2015-05-18 10:02:31 -0400
-Branch: REL9_4_STABLE [7a0d48ac7] 2015-05-18 10:02:35 -0400
-Branch: REL9_3_STABLE [f4c12b415] 2015-05-18 10:02:36 -0400
-Branch: REL9_2_STABLE [439ff9b6b] 2015-05-18 10:02:37 -0400
-Branch: REL9_1_STABLE [6675ab595] 2015-05-18 10:02:38 -0400
-Branch: REL9_0_STABLE [648e41a6e] 2015-05-18 10:02:38 -0400
--->
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [cac18a76b] 2015-05-18 10:02:31 -0400
-Branch: REL9_4_STABLE [f7c4fe7d9] 2015-05-18 10:02:35 -0400
-Branch: REL9_3_STABLE [d5abbd114] 2015-05-18 10:02:36 -0400
-Branch: REL9_2_STABLE [1e6652aea] 2015-05-18 10:02:37 -0400
-Branch: REL9_1_STABLE [b544dcdad] 2015-05-18 10:02:38 -0400
-Branch: REL9_0_STABLE [19f7adc01] 2015-05-18 10:02:38 -0400
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [16304a013] 2015-05-18 10:02:31 -0400
-Branch: REL9_4_STABLE [2e3bd0665] 2015-05-18 10:02:35 -0400
-Branch: REL9_3_STABLE [34d21e770] 2015-05-18 10:02:36 -0400
-Branch: REL9_2_STABLE [82b7393eb] 2015-05-18 10:02:37 -0400
-Branch: REL9_1_STABLE [e58f042d9] 2015-05-18 10:02:38 -0400
-Branch: REL9_0_STABLE [b08c7aff7] 2015-05-18 10:02:38 -0400
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [fd97bd411] 2015-05-18 10:02:31 -0400
-Branch: REL9_4_STABLE [ca325941d] 2015-05-18 10:02:35 -0400
-Branch: REL9_3_STABLE [c669915fd] 2015-05-18 10:02:37 -0400
-Branch: REL9_2_STABLE [01272d95a] 2015-05-18 10:02:37 -0400
-Branch: REL9_1_STABLE [2cb9f2cab] 2015-05-18 10:02:38 -0400
-Branch: REL9_0_STABLE [9b5e831e3] 2015-05-18 10:02:38 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0c071936e] 2015-05-19 18:19:38 -0400
-Branch: REL9_4_STABLE [2eb2fcd56] 2015-05-19 18:16:19 -0400
-Branch: REL9_3_STABLE [13341276e] 2015-05-19 18:16:58 -0400
-Branch: REL9_2_STABLE [221f7a949] 2015-05-19 18:17:42 -0400
-Branch: REL9_1_STABLE [0510cff6e] 2015-05-19 18:18:16 -0400
-Branch: REL9_0_STABLE [cf893530a] 2015-05-19 18:18:56 -0400
--->
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [85270ac7a] 2015-05-18 10:02:31 -0400
-Branch: REL9_4_STABLE [fba1fb4ef] 2015-05-18 10:02:35 -0400
-Branch: REL9_3_STABLE [7b758b7d6] 2015-05-18 10:02:37 -0400
-Branch: REL9_2_STABLE [0ba200431] 2015-05-18 10:02:37 -0400
-Branch: REL9_1_STABLE [e5981aebd] 2015-05-18 10:02:38 -0400
-Branch: REL9_0_STABLE [b84e5c017] 2015-05-18 10:02:39 -0400
--->
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [b69bf30b9] 2015-04-28 11:32:53 -0300
-Branch: REL9_4_STABLE [942542cbb] 2015-04-28 11:32:53 -0300
-Branch: REL9_3_STABLE [e2eda4b11] 2015-04-28 11:32:53 -0300
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [669c7d20e] 2015-04-30 13:55:06 -0300
-Branch: REL9_4_STABLE [7140e11d8] 2015-04-30 13:55:06 -0300
-Branch: REL9_3_STABLE [e60581fdf] 2015-04-30 13:55:06 -0300
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [7be47c56a] 2015-05-07 11:19:31 -0400
-Branch: REL9_4_STABLE [32c50af4c] 2015-05-07 11:13:55 -0400
-Branch: REL9_3_STABLE [83fbd9b59] 2015-05-07 11:16:41 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [312747c22] 2015-05-10 21:34:26 -0400
-Branch: REL9_4_STABLE [7b3f0f8b8] 2015-05-10 21:47:28 -0400
-Branch: REL9_3_STABLE [24aa77ec9] 2015-05-10 21:47:41 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [f6a6c46d7] 2015-05-10 22:21:20 -0400
-Branch: REL9_4_STABLE [ded891916] 2015-05-10 22:45:27 -0400
-Branch: REL9_3_STABLE [5bbac7ec1] 2015-05-10 22:45:42 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [53bb309d2] 2015-05-08 12:53:00 -0400
-Branch: REL9_4_STABLE [3ecab37d9] 2015-05-08 12:53:30 -0400
-Branch: REL9_3_STABLE [596fb5aa7] 2015-05-08 12:55:14 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [04e6d3b87] 2015-05-11 10:51:14 -0400
-Branch: REL9_4_STABLE [8ec1a3a54] 2015-05-11 10:56:19 -0400
-Branch: REL9_3_STABLE [543fbecee] 2015-05-11 10:56:32 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [b4d4ce1d5] 2015-05-11 12:15:50 -0400
-Branch: REL9_4_STABLE [ea70595a3] 2015-05-11 12:16:35 -0400
-Branch: REL9_3_STABLE [ddebd2119] 2015-05-11 12:16:51 -0400
--->
-
- <listitem>
- <para>
- Protect against wraparound of multixact member IDs
- (&Aacute;lvaro Herrera, Robert Haas, Thomas Munro)
- </para>
-
- <para>
- Under certain usage patterns, the existing defenses against this might
- be insufficient, allowing <filename>pg_multixact/members</filename> files to be
- removed too early, resulting in data loss.
- The fix for this includes modifying the server to fail transactions
- that would result in overwriting old multixact member ID data, and
- improving autovacuum to ensure it will act proactively to prevent
- multixact member ID wraparound, as it does for transaction ID
- wraparound.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b22527f29] 2015-05-05 15:51:22 -0400
-Branch: REL9_4_STABLE [b1ec45994] 2015-05-05 15:50:53 -0400
-Branch: REL9_3_STABLE [ffac9f65d] 2015-05-05 15:50:53 -0400
-Branch: REL9_2_STABLE [d4070d10c] 2015-05-05 15:50:53 -0400
-Branch: REL9_1_STABLE [801e250a8] 2015-05-05 15:50:53 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect declaration of <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions (Tom Lane)
- </para>
-
- <para>
- These functions should return <type>setof text[]</type>, like the core
- functions they are wrappers for; but they were incorrectly declared as
- returning just <type>text[]</type>. This mistake had two results: first,
- if there was no match you got a scalar null result, whereas what you
- should get is an empty set (zero rows). Second, the <literal>g</literal> flag
- was effectively ignored, since you would get only one result array even
- if there were multiple matches.
- </para>
-
- <para>
- While the latter behavior is clearly a bug, there might be applications
- depending on the former behavior; therefore the function declarations
- will not be changed by default until <productname>PostgreSQL</productname> 9.5.
- In pre-9.5 branches, the old behavior exists in version 1.0 of
- the <literal>citext</literal> extension, while we have provided corrected
- declarations in version 1.1 (which is <emphasis>not</emphasis> installed by
- default). To adopt the fix in pre-9.5 branches, execute
- <literal>ALTER EXTENSION citext UPDATE TO '1.1'</literal> in each database in
- which <literal>citext</literal> is installed. (You can also <quote>update</quote>
- back to 1.0 if you need to undo that.) Be aware that either update
- direction will require dropping and recreating any views or rules that
- use <filename>citext</filename>'s <function>regexp_matches()</function> functions.
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [bda76c1c8] 2015-02-26 12:25:21 -0500
-Branch: REL9_4_STABLE [79afe6e66] 2015-02-26 12:34:43 -0500
--->
-
- <listitem>
- <para>
- Render infinite dates and timestamps as <literal>infinity</literal> when
- converting to <type>json</type>, rather than throwing an error
- (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [3c000fd9a] 2015-05-04 12:38:58 -0400
-Branch: REL9_4_STABLE [997066f44] 2015-05-04 12:43:16 -0400
--->
-
- <listitem>
- <para>
- Fix <type>json</type>/<type>jsonb</type>'s <function>populate_record()</function>
- and <function>to_record()</function> functions to handle empty input properly
- (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [20781765f] 2015-05-11 12:25:43 -0400
-Branch: REL9_4_STABLE [4d3d9719d] 2015-05-11 12:25:44 -0400
-Branch: REL9_3_STABLE [7d09fdf82] 2015-05-11 12:25:45 -0400
-Branch: REL9_2_STABLE [46f9acd3e] 2015-05-11 12:25:28 -0400
-Branch: REL9_1_STABLE [dd75518d5] 2015-05-11 12:25:28 -0400
-Branch: REL9_0_STABLE [b93c8eaf8] 2015-05-11 12:25:28 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a4820434c] 2015-05-03 11:30:24 -0400
-Branch: REL9_4_STABLE [79edb2981] 2015-05-03 11:30:24 -0400
--->
-
- <listitem>
- <para>
- Fix behavior when changing foreign key constraint deferrability status
- with <literal>ALTER TABLE ... ALTER CONSTRAINT</literal> (Tom Lane)
- </para>
-
- <para>
- Operations later in the same session or concurrent sessions might not
- honor the status change promptly.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b514a7460] 2015-02-28 12:43:04 -0500
-Branch: REL9_4_STABLE [fdacbf9e8] 2015-02-28 12:43:04 -0500
-Branch: REL9_3_STABLE [1b558782b] 2015-02-28 12:43:04 -0500
-Branch: REL9_2_STABLE [6f419958a] 2015-02-28 12:43:04 -0500
--->
-
- <listitem>
- <para>
- Fix planning of star-schema-style queries (Tom Lane)
- </para>
-
- <para>
- Sometimes, efficient scanning of a large table requires that index
- parameters be provided from more than one other table (commonly,
- dimension tables whose keys are needed to index a large fact table).
- The planner should be able to find such plans, but an overly
- restrictive search heuristic prevented it.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3cf868601] 2015-04-25 16:44:27 -0400
-Branch: REL9_4_STABLE [5f3d1909c] 2015-04-25 16:44:27 -0400
-Branch: REL9_3_STABLE [3e47d0b2a] 2015-04-25 16:44:27 -0400
-Branch: REL9_2_STABLE [950f80dd5] 2015-04-25 16:44:27 -0400
-Branch: REL9_1_STABLE [2e38198f6] 2015-04-25 16:44:27 -0400
-Branch: REL9_0_STABLE [985da346e] 2015-04-25 16:44:27 -0400
--->
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ca6805338] 2015-04-04 19:55:15 -0400
-Branch: REL9_4_STABLE [1d71d36ff] 2015-04-04 19:55:15 -0400
-Branch: REL9_3_STABLE [e105df208] 2015-04-04 19:55:15 -0400
-Branch: REL9_2_STABLE [b7d493bf7] 2015-04-04 19:55:15 -0400
-Branch: REL9_1_STABLE [3b5d67102] 2015-04-04 19:55:15 -0400
-Branch: REL9_0_STABLE [da8819194] 2015-04-04 19:55:15 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1a179f36f] 2015-02-10 20:37:19 -0500
-Branch: REL9_4_STABLE [433c79d2c] 2015-02-10 20:37:22 -0500
-Branch: REL9_3_STABLE [672abc402] 2015-02-10 20:37:24 -0500
-Branch: REL9_2_STABLE [0d083103f] 2015-02-10 20:37:26 -0500
-Branch: REL9_1_STABLE [52579d507] 2015-02-10 20:37:29 -0500
-Branch: REL9_0_STABLE [72bbca27e] 2015-02-10 20:37:31 -0500
--->
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6f9bd50ea] 2015-02-25 21:36:29 -0500
-Branch: REL9_4_STABLE [f16270ade] 2015-02-25 21:36:40 -0500
--->
-
- <listitem>
- <para>
- Ensure that row locking occurs properly when the target of
- an <command>UPDATE</command> or <command>DELETE</command> is a security-barrier view
- (Stephen Frost)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [dfbaed459] 2015-04-28 00:17:43 +0200
-Branch: REL9_4_STABLE [fd3dfc236] 2015-04-28 00:18:04 +0200
--->
-
- <listitem>
- <para>
- Use a file opened for read/write when syncing replication slot data
- during database startup (Andres Freund)
- </para>
-
- <para>
- On some platforms, the previous coding could result in errors like
- <quote>could not fsync file "pg_replslot/...": Bad file descriptor</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [2c47fe16a] 2015-04-23 21:39:35 +0300
-Branch: REL9_4_STABLE [438a062d5] 2015-04-23 21:35:10 +0300
-Branch: REL9_3_STABLE [f73ebd766] 2015-04-23 21:36:24 +0300
-Branch: REL9_2_STABLE [d3f5d2892] 2015-04-23 21:36:50 +0300
-Branch: REL9_1_STABLE [e8528a8f5] 2015-04-23 21:36:59 +0300
-Branch: REL9_0_STABLE [223a94680] 2015-04-23 21:37:09 +0300
--->
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [b2a5545bd] 2015-04-13 16:53:49 +0300
-Branch: REL9_4_STABLE [d72792d02] 2015-04-13 17:22:21 +0300
-Branch: REL9_3_STABLE [a800267e4] 2015-04-13 17:22:35 +0300
-Branch: REL9_2_STABLE [cc2939f44] 2015-04-13 17:26:59 +0300
-Branch: REL9_1_STABLE [ad2925e20] 2015-04-13 17:26:49 +0300
-Branch: REL9_0_STABLE [5b6938186] 2015-04-13 17:26:35 +0300
--->
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [2ce439f33] 2015-05-04 14:13:53 -0400
-Branch: REL9_4_STABLE [d8ac77ab1] 2015-05-04 14:19:32 -0400
-Branch: REL9_3_STABLE [14de825de] 2015-05-04 12:27:55 -0400
-Branch: REL9_2_STABLE [2bc339716] 2015-05-04 12:41:53 -0400
-Branch: REL9_1_STABLE [4b71d28d5] 2015-05-04 12:47:11 -0400
-Branch: REL9_0_STABLE [30ba0d0c2] 2015-05-04 14:04:53 -0400
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [456ff0863] 2015-05-05 09:29:49 -0400
-Branch: REL9_4_STABLE [603fe0181] 2015-05-05 09:16:39 -0400
-Branch: REL9_3_STABLE [6fd666954] 2015-05-05 09:19:39 -0400
-Branch: REL9_2_STABLE [53e1498c6] 2015-05-05 09:22:51 -0400
-Branch: REL9_1_STABLE [6ee1a7738] 2015-05-05 09:25:51 -0400
-Branch: REL9_0_STABLE [262fbcb9d] 2015-05-05 09:30:07 -0400
--->
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [5df64f298] 2015-04-08 13:19:49 -0300
-Branch: REL9_4_STABLE [ec01c1c0a] 2015-04-08 13:19:49 -0300
-Branch: REL9_3_STABLE [0d6c9e061] 2015-04-08 13:19:49 -0300
-Branch: REL9_2_STABLE [37dc228e8] 2015-04-08 13:19:49 -0300
-Branch: REL9_1_STABLE [cf5d3f274] 2015-04-08 13:19:49 -0300
-Branch: REL9_0_STABLE [595bc97b5] 2015-04-08 13:19:49 -0300
--->
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bc49d9324] 2015-04-03 00:07:29 -0400
-Branch: REL9_4_STABLE [ee0d06c0b] 2015-04-03 00:07:29 -0400
--->
-
- <listitem>
- <para>
- Fix failure to handle invalidation messages for system catalogs
- early in session startup (Tom Lane)
- </para>
-
- <para>
- This oversight could result in failures in sessions that start
- concurrently with a <command>VACUUM FULL</command> on a system catalog.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [701dcc983] 2015-03-30 13:05:27 -0400
-Branch: REL9_4_STABLE [2897e069c] 2015-03-30 13:05:35 -0400
--->
-
- <listitem>
- <para>
- Fix crash in <function>BackendIdGetTransactionIds()</function> when trying
- to get status for a backend process that just exited (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [bc208a5a2] 2015-02-23 16:14:14 +0100
-Branch: REL9_4_STABLE [89629f289] 2015-02-23 16:14:14 +0100
-Branch: REL9_3_STABLE [a6ddff812] 2015-02-23 16:14:15 +0100
-Branch: REL9_2_STABLE [c76e6dd7a] 2015-02-23 16:14:15 +0100
-Branch: REL9_1_STABLE [25576bee2] 2015-02-23 16:14:15 +0100
-Branch: REL9_0_STABLE [87b7fcc87] 2015-02-23 16:14:16 +0100
--->
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [08361cea2] 2015-02-15 23:26:45 -0500
-Branch: REL9_4_STABLE [1bf32972e] 2015-02-15 23:26:45 -0500
-Branch: REL9_3_STABLE [4662ba5a2] 2015-02-15 23:26:46 -0500
-Branch: REL9_2_STABLE [effcaa4c2] 2015-02-15 23:26:46 -0500
--->
-
- <listitem>
- <para>
- Fix crash when doing <literal>COPY IN</literal> to a table with check
- constraints that contain whole-row references (Tom Lane)
- </para>
-
- <para>
- The known failure case only crashes in 9.4 and up, but there is very
- similar code in 9.3 and 9.2, so back-patch those branches as well.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [fd6a3f3ad] 2015-02-26 12:50:07 +0100
-Branch: REL9_4_STABLE [d72115112] 2015-02-26 12:50:07 +0100
-Branch: REL9_3_STABLE [abce8dc7d] 2015-02-26 12:50:07 +0100
-Branch: REL9_2_STABLE [d67076529] 2015-02-26 12:50:07 +0100
-Branch: REL9_1_STABLE [5c8dabecd] 2015-02-26 12:50:08 +0100
-Branch: REL9_0_STABLE [82e0d6eb5] 2015-02-26 12:50:08 +0100
--->
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [87cec51d3] 2015-03-23 16:51:11 +0100
-Branch: REL9_4_STABLE [16be9737c] 2015-03-23 16:52:17 +0100
--->
-
- <listitem>
- <para>
- Avoid busy-waiting with short <literal>recovery_min_apply_delay</literal>
- values (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_4_STABLE [462a2f1f0] 2015-05-13 09:53:50 +0300
-Branch: REL9_3_STABLE [96b676cc6] 2015-05-13 09:54:06 +0300
-Branch: REL9_2_STABLE [1a99d392c] 2015-05-13 10:06:52 +0300
-Branch: REL9_1_STABLE [f6c4a8690] 2015-05-13 10:06:47 +0300
-Branch: REL9_0_STABLE [bd1cfde70] 2015-05-13 10:06:38 +0300
--->
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ed9cc2b5d] 2015-03-30 16:40:05 -0400
-Branch: REL9_4_STABLE [a6a8bf5cd] 2015-03-30 16:40:05 -0400
-Branch: REL9_3_STABLE [246bbf65c] 2015-03-30 16:40:05 -0400
-Branch: REL9_2_STABLE [f155466fe] 2015-03-30 16:40:05 -0400
-Branch: REL9_1_STABLE [46bfe44e8] 2015-03-30 16:40:05 -0400
-Branch: REL9_0_STABLE [8f3c57721] 2015-03-30 16:40:05 -0400
--->
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [26d2c5dc8] 2015-03-12 15:34:32 +0100
-Branch: REL9_4_STABLE [d81072026] 2015-03-12 15:40:07 +0100
--->
-
- <listitem>
- <para>
- Fix memory leaks in GIN index vacuum (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e4cbfd673] 2015-03-29 15:04:09 -0400
-Branch: REL9_4_STABLE [f444de5e3] 2015-03-29 15:04:18 -0400
-Branch: REL9_3_STABLE [995a664c8] 2015-03-29 15:04:24 -0400
-Branch: REL9_2_STABLE [d12afe114] 2015-03-29 15:04:28 -0400
-Branch: REL9_1_STABLE [ab02d35e0] 2015-03-29 15:04:33 -0400
-Branch: REL9_0_STABLE [152c94632] 2015-03-29 15:04:38 -0400
--->
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [443fd0540] 2015-03-12 13:39:09 -0400
-Branch: REL9_4_STABLE [32269be59] 2015-03-12 13:39:10 -0400
-Branch: REL9_3_STABLE [5bdf3cf5a] 2015-03-12 13:38:49 -0400
-Branch: REL9_2_STABLE [590fc5d96] 2015-03-12 13:38:49 -0400
-Branch: REL9_1_STABLE [4a4fd2b0c] 2015-03-12 13:38:49 -0400
--->
-
- <listitem>
- <para>
- Ensure <structfield>tableoid</structfield> of a foreign table is reported
- correctly when a <literal>READ COMMITTED</literal> recheck occurs after
- locking rows in <command>SELECT FOR UPDATE</command>, <command>UPDATE</command>,
- or <command>DELETE</command> (Etsuro Fujita)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [cf34e373f] 2015-03-05 18:03:16 -0300
-Branch: REL9_4_STABLE [749977634] 2015-03-05 18:03:16 -0300
-Branch: REL9_3_STABLE [5cf400003] 2015-03-05 18:03:16 -0300
-Branch: REL9_2_STABLE [e166e6441] 2015-03-05 18:03:16 -0300
-Branch: REL9_1_STABLE [8167ef8e2] 2015-03-05 18:03:16 -0300
-Branch: REL9_0_STABLE [71b8e8e6c] 2015-03-05 18:03:16 -0300
--->
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [0d906798f] 2015-02-18 14:28:11 -0300
-Branch: REL9_4_STABLE [66463a3cf] 2015-02-18 14:28:12 -0300
-Branch: REL9_3_STABLE [a196e67f9] 2015-02-18 14:28:12 -0300
--->
-
- <listitem>
- <para>
- Include the schema name in object identity strings for conversions
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: REL9_4_STABLE [c106f397d] 2015-05-08 19:39:52 -0400
-Branch: REL9_3_STABLE [3de791ee7] 2015-05-08 19:40:06 -0400
-Branch: REL9_2_STABLE [21cb21de2] 2015-05-08 19:40:09 -0400
-Branch: REL9_1_STABLE [edfef090a] 2015-05-08 19:40:11 -0400
-Branch: REL9_0_STABLE [c981e5999] 2015-05-08 19:40:15 -0400
--->
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cb66f495f] 2015-02-16 16:18:31 -0500
-Branch: REL9_4_STABLE [23291a796] 2015-02-16 16:17:59 -0500
-Branch: REL9_3_STABLE [7bc6e5954] 2015-02-16 16:18:04 -0500
-Branch: REL9_2_STABLE [3913b897d] 2015-02-16 16:18:08 -0500
-Branch: REL9_1_STABLE [2df854f84] 2015-02-16 16:18:12 -0500
-Branch: REL9_0_STABLE [c99ef9aff] 2015-02-16 16:18:17 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2e105def0] 2015-02-17 12:49:18 -0500
-Branch: REL9_4_STABLE [a271c9260] 2015-02-17 12:49:18 -0500
-Branch: REL9_3_STABLE [4ea2d2ddb] 2015-02-17 12:49:18 -0500
-Branch: REL9_2_STABLE [d068609b9] 2015-02-17 12:49:44 -0500
-Branch: REL9_1_STABLE [64e045838] 2015-02-17 12:49:46 -0500
-Branch: REL9_0_STABLE [e48ce4f33] 2015-02-17 12:49:18 -0500
--->
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [bf740ce9e] 2015-03-19 11:04:09 -0400
-Branch: REL9_4_STABLE [76d07a2a0] 2015-03-19 11:08:54 -0400
--->
-
- <listitem>
- <para>
- Fix status reporting for terminated background workers that were never
- actually started (Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [b3a5e76e1] 2015-04-02 14:38:06 -0400
-Branch: REL9_4_STABLE [a1f4ade01] 2015-04-02 14:39:18 -0400
--->
-
- <listitem>
- <para>
- After a database crash, don't restart background workers that are
- marked <literal>BGW_NEVER_RESTART</literal> (Amit Khandekar)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [ff16b40f8] 2015-02-06 11:26:50 +0200
-Branch: REL9_4_STABLE [3bc4c6942] 2015-02-06 11:27:12 +0200
-Branch: REL9_3_STABLE [5f0ba4abb] 2015-02-06 11:32:16 +0200
-Branch: REL9_2_STABLE [2af568c6b] 2015-02-06 11:32:37 +0200
-Branch: REL9_1_STABLE [0d36d9f2b] 2015-02-06 11:32:42 +0200
--->
-
- <listitem>
- <para>
- Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</literal>
- replication command (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids a possible startup failure
- in <application>pg_receivexlog</application>.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [1a241d22a] 2015-05-07 15:04:13 +0200
-Branch: REL9_4_STABLE [43ed06816] 2015-05-07 15:09:21 +0200
-Branch: REL9_3_STABLE [ba3caee84] 2015-05-07 15:09:32 +0200
-Branch: REL9_2_STABLE [447e16581] 2015-05-07 15:09:42 +0200
-Branch: REL9_1_STABLE [b9ded1529] 2015-05-07 15:09:53 +0200
-Branch: REL9_0_STABLE [78ce2dc8e] 2015-05-07 15:10:01 +0200
--->
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [2a3f6e368] 2015-02-23 13:34:21 +0200
-Branch: REL9_4_STABLE [0214a61e0] 2015-02-23 13:32:39 +0200
-Branch: REL9_3_STABLE [cdf813c59] 2015-02-23 13:32:42 +0200
-Branch: REL9_2_STABLE [22c9c8a7e] 2015-02-23 13:32:46 +0200
-Branch: REL9_1_STABLE [7052abbb6] 2015-02-23 13:32:50 +0200
-Branch: REL9_0_STABLE [8878eaaa8] 2015-02-23 13:32:53 +0200
--->
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b26e20814] 2015-02-21 12:59:54 -0500
-Branch: REL9_4_STABLE [9c15a778a] 2015-02-21 12:59:35 -0500
-Branch: REL9_3_STABLE [f389b6e0a] 2015-02-21 12:59:39 -0500
-Branch: REL9_2_STABLE [83c3115dd] 2015-02-21 12:59:43 -0500
--->
-
- <listitem>
- <para>
- In <application>libpq</application>, fix misparsing of empty values in URI
- connection strings (Thomas Fanghaenel)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [1f393fc92] 2015-02-10 12:04:10 +0100
-Branch: REL9_4_STABLE [66c4ea8cb] 2015-02-11 10:57:02 +0100
-Branch: REL9_3_STABLE [1a321fea7] 2015-02-11 11:13:11 +0100
-Branch: REL9_2_STABLE [9be9ac425] 2015-02-11 11:14:14 +0100
-Branch: REL9_1_STABLE [32e633195] 2015-02-11 11:27:21 +0100
-Branch: REL9_0_STABLE [ce2fcc58e] 2015-02-11 11:30:11 +0100
--->
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [fcef16172] 2015-04-01 20:00:07 -0300
-Branch: REL9_4_STABLE [a44e54cf4] 2015-04-01 20:00:07 -0300
-Branch: REL9_3_STABLE [f4540cae1] 2015-04-01 20:00:07 -0300
-Branch: REL9_2_STABLE [d4bacdcb9] 2015-04-01 20:00:07 -0300
-Branch: REL9_1_STABLE [276591bc4] 2015-04-01 20:00:07 -0300
-Branch: REL9_0_STABLE [557fcfae3] 2015-04-01 20:00:07 -0300
--->
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [df9ebf1ee] 2015-03-14 13:43:00 -0400
-Branch: REL9_4_STABLE [f50b5c7d0] 2015-03-14 13:43:08 -0400
-Branch: REL9_3_STABLE [2cb76fa6f] 2015-03-14 13:43:13 -0400
-Branch: REL9_2_STABLE [309ff2ad0] 2015-03-14 13:43:17 -0400
-Branch: REL9_1_STABLE [043fe5c5a] 2015-03-14 13:43:21 -0400
-Branch: REL9_0_STABLE [396ef6fd8] 2015-03-14 13:43:26 -0400
--->
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9feefedf9] 2015-02-10 22:38:15 -0500
-Branch: REL9_4_STABLE [a592e5883] 2015-02-10 22:38:17 -0500
-Branch: REL9_3_STABLE [a4e871caa] 2015-02-10 22:38:20 -0500
-Branch: REL9_2_STABLE [2593c7039] 2015-02-10 22:38:22 -0500
-Branch: REL9_1_STABLE [14794f9b8] 2015-02-10 22:38:26 -0500
-Branch: REL9_0_STABLE [8e70f3c40] 2015-02-10 22:38:29 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0e7e355f2] 2015-02-18 11:43:00 -0500
-Branch: REL9_4_STABLE [a75dfb73e] 2015-02-18 11:43:00 -0500
-Branch: REL9_3_STABLE [a7ad5cf0c] 2015-02-18 11:43:00 -0500
-Branch: REL9_2_STABLE [c86f8f361] 2015-02-18 11:43:00 -0500
-Branch: REL9_1_STABLE [b0d53b2e3] 2015-02-18 11:43:00 -0500
--->
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix failure to honor <literal>-Z</literal>
- compression level option together with <literal>-Fd</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [ebd092bc2] 2015-03-02 14:12:21 -0500
-Branch: REL9_4_STABLE [c05fa3433] 2015-03-02 14:12:28 -0500
-Branch: REL9_3_STABLE [43d81f16a] 2015-03-02 14:12:33 -0500
-Branch: REL9_2_STABLE [d13bbfabb] 2015-03-02 14:12:38 -0500
-Branch: REL9_1_STABLE [dcb467b8e] 2015-03-02 14:12:43 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_dump</application> consider foreign key relationships
- between extension configuration tables while choosing dump order
- (Gilles Darold, Michael Paquier, Stephen Frost)
- </para>
-
- <para>
- This oversight could result in producing dumps that fail to reload
- because foreign key constraints are transiently violated.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e3bfe6d84] 2015-03-06 13:27:46 -0500
-Branch: REL9_4_STABLE [629f8613f] 2015-03-06 13:27:46 -0500
-Branch: REL9_3_STABLE [d645273cf] 2015-03-06 13:27:46 -0500
--->
-
- <listitem>
- <para>
- Avoid possible <application>pg_dump</application> failure when concurrent sessions
- are creating and dropping temporary functions (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e9f1c01b7] 2015-02-25 12:01:12 -0500
-Branch: REL9_4_STABLE [2164a0de2] 2015-02-25 12:01:12 -0500
-Branch: REL9_3_STABLE [f864fe074] 2015-02-25 12:01:12 -0500
-Branch: REL9_2_STABLE [be8801e9c] 2015-02-25 12:01:12 -0500
-Branch: REL9_1_STABLE [f7b41902a] 2015-02-25 12:01:12 -0500
-Branch: REL9_0_STABLE [7a501bcbf] 2015-02-25 12:01:12 -0500
--->
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [b2f95c34f] 2015-05-01 13:03:23 -0400
-Branch: REL9_4_STABLE [70fac4844] 2015-05-01 13:03:23 -0400
--->
-
- <listitem>
- <para>
- Ensure that a view's replication identity is correctly set
- to <literal>nothing</literal> during dump/restore (Marko Tiikkaja)
- </para>
-
- <para>
- Previously, if the view was involved in a circular dependency,
- it might wind up with an incorrect replication identity property.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [4c5e06004] 2015-05-16 00:40:18 -0400
-Branch: REL9_4_STABLE [387a3e46c] 2015-05-16 00:40:18 -0400
-Branch: REL9_3_STABLE [bffbeec0c] 2015-05-16 00:40:18 -0400
-Branch: REL9_2_STABLE [affc04d16] 2015-05-16 00:40:18 -0400
-Branch: REL9_1_STABLE [acd75b264] 2015-05-16 00:40:18 -0400
-Branch: REL9_0_STABLE [df161c94e] 2015-05-16 00:40:18 -0400
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_4_STABLE [5f6539635] 2015-05-16 15:16:28 -0400
-Branch: REL9_3_STABLE [4e9935979] 2015-05-16 15:16:28 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [fb694d959] 2015-05-16 00:10:03 -0400
-Branch: REL9_4_STABLE [31f5d3f35] 2015-05-16 00:10:03 -0400
-Branch: REL9_3_STABLE [4cfba5369] 2015-05-16 00:10:03 -0400
-Branch: REL9_2_STABLE [2a55e7134] 2015-05-16 00:10:03 -0400
-Branch: REL9_1_STABLE [321db7123] 2015-05-16 00:10:03 -0400
-Branch: REL9_0_STABLE [2194aa92b] 2015-05-16 00:10:03 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [056764b10] 2015-02-11 22:06:04 -0500
-Branch: REL9_4_STABLE [5eef3c61e] 2015-02-11 22:06:04 -0500
-Branch: REL9_3_STABLE [9ecd51da7] 2015-02-11 22:06:04 -0500
-Branch: REL9_2_STABLE [66f5217f5] 2015-02-11 22:06:04 -0500
-Branch: REL9_1_STABLE [08aaae40e] 2015-02-11 22:06:04 -0500
-Branch: REL9_0_STABLE [4ae178f60] 2015-02-11 22:06:04 -0500
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [866f3017a] 2015-02-11 21:02:44 -0500
-Branch: REL9_4_STABLE [c7bc5be11] 2015-02-11 21:02:36 -0500
-Branch: REL9_3_STABLE [e20523f8f] 2015-02-11 21:02:28 -0500
-Branch: REL9_2_STABLE [d99cf27b7] 2015-02-11 21:02:12 -0500
-Branch: REL9_1_STABLE [55179b03e] 2015-02-11 21:02:07 -0500
-Branch: REL9_0_STABLE [85dac37ee] 2015-02-11 21:02:06 -0500
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [fa1e5afa8] 2015-03-30 17:07:52 -0400
-Branch: REL9_4_STABLE [2366761bf] 2015-03-30 17:16:57 -0400
-Branch: REL9_3_STABLE [0904eb3e1] 2015-03-30 17:17:17 -0400
-Branch: REL9_2_STABLE [948566313] 2015-03-30 17:17:39 -0400
-Branch: REL9_1_STABLE [22b3f5b26] 2015-03-30 17:17:54 -0400
-Branch: REL9_0_STABLE [bf22a8e58] 2015-03-30 17:18:10 -0400
--->
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [5d6c2405f] 2015-02-17 10:19:30 -0500
-Branch: REL9_4_STABLE [5e49c98e0] 2015-02-17 10:50:49 -0500
-Branch: REL9_3_STABLE [9a90ec9cf] 2015-02-17 10:54:29 -0500
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_2_STABLE [319406c2a] 2015-02-17 11:02:46 -0500
-Branch: REL9_1_STABLE [d7d294f59] 2015-02-17 11:08:40 -0500
--->
-
- <listitem>
- <para>
- Improve handling of <function>readdir()</function> failures when scanning
- directories in <application>initdb</application> and <application>pg_basebackup</application>
- (Marco Nenciarini)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8d1f23900] 2015-03-15 23:22:03 -0400
-Branch: REL9_4_STABLE [904e8b627] 2015-03-15 23:22:03 -0400
-Branch: REL9_3_STABLE [83587a075] 2015-03-15 23:22:03 -0400
-Branch: REL9_2_STABLE [8582ae7aa] 2015-03-15 23:22:03 -0400
-Branch: REL9_1_STABLE [9288645b5] 2015-03-15 23:22:03 -0400
-Branch: REL9_0_STABLE [40b0c10b7] 2015-03-15 23:22:03 -0400
--->
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [33e879c4e] 2015-02-13 23:56:25 +0200
-Branch: REL9_4_STABLE [56a23a83f] 2015-02-13 23:56:57 +0200
-Branch: REL9_3_STABLE [6ef5d894a] 2015-02-13 23:57:05 +0200
-Branch: REL9_2_STABLE [a0d84da1d] 2015-02-13 23:57:25 +0200
-Branch: REL9_1_STABLE [ebdc2e1e2] 2015-02-13 23:57:28 +0200
-Branch: REL9_0_STABLE [61165fae0] 2015-02-13 23:57:35 +0200
--->
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [91f4a5a97] 2015-03-14 14:08:45 -0400
-Branch: REL9_4_STABLE [c415c13b7] 2015-03-14 14:08:45 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [73b416b2e] 2015-04-05 13:01:59 -0400
-Branch: REL9_4_STABLE [8972a152c] 2015-04-05 13:01:55 -0400
-Branch: REL9_3_STABLE [6347bdb31] 2015-04-05 13:01:55 -0400
--->
-
- <listitem>
- <para>
- Silence some build warnings on macOS (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9d366c1f3] 2015-05-15 19:35:29 -0400
-Branch: REL9_4_STABLE [d0ddcf62e] 2015-05-15 19:35:51 -0400
-Branch: REL9_3_STABLE [4fd69e412] 2015-05-15 19:35:58 -0400
-Branch: REL9_2_STABLE [2a63434f0] 2015-05-15 19:36:06 -0400
-Branch: REL9_1_STABLE [436f35609] 2015-05-15 19:36:13 -0400
-Branch: REL9_0_STABLE [3c3749a3b] 2015-05-15 19:36:20 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4-1">
- <title>Release 9.4.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.4.0.
- For information about new features in the 9.4 major release, see
- <xref linkend="release-9-4"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.4.1</title>
-
- <para>
- A dump/restore is not required for those running 9.4.X.
- </para>
-
- <para>
- However, if you are a Windows user and are using the <quote>Norwegian
- (Bokm&aring;l)</quote> locale, manual action is needed after the upgrade to
- replace any <quote>Norwegian (Bokm&aring;l)_Norway</quote>
- or <quote>norwegian-bokmal</quote> locale names stored
- in <productname>PostgreSQL</productname> system catalogs with the plain-ASCII
- alias <quote>Norwegian_Norway</quote>. For details see
- <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></ulink>
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0150ab567] 2015-02-02 10:00:44 -0500
-Branch: REL9_4_STABLE [1628a0bbf] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [b8b580147] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [5ae3bf1af] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [037529a11] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [611e110aa] 2015-02-02 10:00:52 -0500
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [9241c84cb] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [56d2bee9d] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [fe2526990] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [e09651e9d] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [2ceb63deb] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [56b970f2e] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [29725b3db] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [2ac95c83c] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [bc4d5f2e5] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [c6c6aa288] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [98f2479d8] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [9e05c5063] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [1dc755158] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [82806cf4e] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [6994f0790] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d95ebe0ac] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [11f738a8a] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [ce6f261cd] 2015-02-02 10:00:52 -0500
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [8b59672d8] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [258e294db] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [a558ad3a7] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d1972da8c] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [8d412e02e] 2015-02-02 10:00:52 -0500
-Branch: REL9_0_STABLE [0a3ee8a5f] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [2b3a8b20c] 2015-02-02 17:09:53 +0200
-Branch: REL9_4_STABLE [57ec87c6b] 2015-02-02 17:09:46 +0200
-Branch: REL9_3_STABLE [cd19848bd] 2015-02-02 17:09:40 +0200
-Branch: REL9_2_STABLE [289592b23] 2015-02-02 17:09:35 +0200
-Branch: REL9_1_STABLE [af9c5c074] 2015-02-02 17:09:31 +0200
-Branch: REL9_0_STABLE [47ba0fbd7] 2015-02-02 17:09:25 +0200
--->
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [804b6b6db] 2015-01-28 12:31:30 -0500
-Branch: REL9_4_STABLE [3cc74a3d6] 2015-01-28 12:32:06 -0500
-Branch: REL9_3_STABLE [4b9874216] 2015-01-28 12:32:39 -0500
-Branch: REL9_2_STABLE [d49f84b08] 2015-01-28 12:32:56 -0500
-Branch: REL9_1_STABLE [9406884af] 2015-01-28 12:33:15 -0500
-Branch: REL9_0_STABLE [3a2063369] 2015-01-28 12:33:29 -0500
--->
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [f6dc6dd5b] 2014-12-17 22:48:40 -0500
-Branch: REL9_4_STABLE [6b87d423d] 2014-12-17 22:48:45 -0500
-Branch: REL9_3_STABLE [442dc2c35] 2014-12-17 22:48:46 -0500
-Branch: REL9_2_STABLE [0046f651d] 2014-12-17 22:48:47 -0500
-Branch: REL9_1_STABLE [6aa98e957] 2014-12-17 22:48:47 -0500
-Branch: REL9_0_STABLE [6d45ee572] 2014-12-17 22:48:48 -0500
--->
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [8f80dcf3c] 2014-10-24 19:59:49 +0300
-Branch: REL9_2_STABLE [d440c4b55] 2014-10-24 19:59:52 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [2a1b34959] 2014-10-24 19:36:28 +0300
-Branch: REL9_2_STABLE [737ae3fc7] 2014-10-24 19:53:27 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [aa1d2fc5e] 2015-01-16 13:28:19 +0200
-Branch: REL9_4_STABLE [2049a7d82] 2015-01-16 13:10:06 +0200
-Branch: REL9_3_STABLE [1619442a1] 2015-01-16 13:10:15 +0200
-Branch: REL9_2_STABLE [6bf343c6e] 2015-01-16 13:10:23 +0200
--->
-
- <listitem>
- <para>
- Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</quote>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Non-ASCII locale names are problematic since it's not clear what
- encoding they should be represented in. Map the troublesome locale
- name to a plain-ASCII alias, <quote>Norwegian_Norway</quote>.
- </para>
-
- <para>
- 9.4.0 mapped the troublesome name to <quote>norwegian-bokmal</quote>,
- but that turns out not to work on all Windows configurations.
- <quote>Norwegian_Norway</quote> is now recommended instead.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c480cb9d2] 2015-01-15 18:52:58 -0500
-Branch: REL9_4_STABLE [b75d18bd4] 2015-01-15 18:53:05 -0500
-Branch: REL9_3_STABLE [34668c8ec] 2015-01-15 18:52:28 -0500
-Branch: REL9_2_STABLE [0acb32efb] 2015-01-15 18:52:31 -0500
-Branch: REL9_1_STABLE [450530fce] 2015-01-15 18:52:34 -0500
-Branch: REL9_0_STABLE [5308e085b] 2015-01-15 18:52:38 -0500
--->
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [0e5680f47] 2014-12-26 13:52:27 -0300
-Branch: REL9_4_STABLE [0e3a1f71d] 2014-12-26 13:52:27 -0300
-Branch: REL9_3_STABLE [048912386] 2014-12-26 13:52:27 -0300
--->
-
- <listitem>
- <para>
- Avoid possible deadlock while trying to acquire tuple locks
- in EvalPlanQual processing (&Aacute;lvaro Herrera, Mark Kirkwood)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d5e3d1e96] 2015-01-04 15:48:29 -0300
-Branch: REL9_4_STABLE [51742063b] 2015-01-04 15:48:29 -0300
-Branch: REL9_3_STABLE [54a8abc2b] 2015-01-04 15:48:29 -0300
--->
-
- <listitem>
- <para>
- Fix failure to wait when a transaction tries to acquire a <literal>FOR
- NO KEY EXCLUSIVE</literal> tuple lock, while multiple other transactions
- currently hold <literal>FOR SHARE</literal> locks (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a5cd70dcb] 2015-01-15 13:18:12 -0500
-Branch: REL9_4_STABLE [d25192892] 2015-01-15 13:18:16 -0500
-Branch: REL9_3_STABLE [939f0fb67] 2015-01-15 13:18:19 -0500
--->
-
- <listitem>
- <para>
- Improve performance of <command>EXPLAIN</command> with large range tables
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [451d28081] 2015-01-30 14:44:56 -0500
-Branch: REL9_4_STABLE [4cbf390d5] 2015-01-30 14:44:49 -0500
--->
-
- <listitem>
- <para>
- Fix <type>jsonb</type> Unicode escape processing, and in consequence
- disallow <literal>\u0000</literal> (Tom Lane)
- </para>
-
- <para>
- Previously, the JSON Unicode escape <literal>\u0000</literal> was accepted
- and was stored as those six characters; but that is indistinguishable
- from what is stored for the input <literal>\\u0000</literal>, resulting in
- ambiguity. Moreover, in cases where de-escaped textual output is
- expected, such as the <literal>-&gt;&gt;</literal> operator, the sequence was
- printed as <literal>\u0000</literal>, which does not meet the expectation
- that JSON escaping would be removed. (Consistent behavior would
- require emitting a zero byte, but <productname>PostgreSQL</productname> does not
- support zero bytes embedded in text strings.) 9.4.0 included an
- ill-advised attempt to improve this situation by adjusting JSON output
- conversion rules; but of course that could not fix the fundamental
- ambiguity, and it turned out to break other usages of Unicode escape
- sequences. Revert that, and to avoid the core problem,
- reject <literal>\u0000</literal> in <type>jsonb</type> input.
- </para>
-
- <para>
- If a <type>jsonb</type> column contains a <literal>\u0000</literal> value stored
- with 9.4.0, it will henceforth read out as though it
- were <literal>\\u0000</literal>, which is the other valid interpretation of
- the data stored by 9.4.0 for this case.
- </para>
-
- <para>
- The <type>json</type> type did not have the storage-ambiguity problem, but
- it did have the problem of inconsistent de-escaped textual output.
- Therefore <literal>\u0000</literal> will now also be rejected
- in <type>json</type> values when conversion to de-escaped form is
- required. This change does not break the ability to
- store <literal>\u0000</literal> in <type>json</type> columns so long as no
- processing is done on the values. This is exactly parallel to the
- cases in which non-ASCII Unicode escapes are allowed when the database
- encoding is not UTF8.
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [79af9a1d2] 2015-01-06 23:06:13 -0500
-Branch: REL9_4_STABLE [6bbf75192] 2015-01-17 22:11:20 -0500
-Branch: REL9_3_STABLE [e32cb8d0e] 2015-01-17 22:13:27 -0500
-Branch: REL9_2_STABLE [c8ef5b1ac] 2015-01-17 22:14:21 -0500
-Branch: REL9_1_STABLE [c975fa471] 2015-01-17 22:37:07 -0500
-Branch: REL9_0_STABLE [cebb3f032] 2015-01-17 22:37:32 -0500
--->
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3d660d33a] 2015-01-30 12:30:59 -0500
-Branch: REL9_4_STABLE [b6a164e5c] 2015-01-30 12:31:08 -0500
-Branch: REL9_3_STABLE [527ff8baf] 2015-01-30 12:30:43 -0500
--->
-
- <listitem>
- <para>
- Fix assorted oversights in range-operator selectivity estimation
- (Emre Hasegeli)
- </para>
-
- <para>
- This patch fixes corner-case <quote>unexpected operator NNNN</quote> planner
- errors, and improves the selectivity estimates for some other cases.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [930fd6845] 2014-12-30 14:53:11 +0200
-Branch: REL9_4_STABLE [4e241f7cd] 2014-12-30 14:53:03 +0200
--->
-
- <listitem>
- <para>
- Revert unintended reduction in maximum size of a GIN index item
- (Heikki Linnakangas)
- </para>
-
- <para>
- 9.4.0 could fail with <quote>index row size exceeds maximum</quote> errors
- for data that previous versions would accept.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [68fa75f31] 2015-01-30 17:58:23 +0100
-Branch: REL9_4_STABLE [dc40ca696] 2015-01-30 17:59:17 +0100
--->
-
- <listitem>
- <para>
- Fix query-duration memory leak during repeated GIN index rescans
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [31ed42b9a] 2015-01-29 19:35:55 +0200
-Branch: REL9_4_STABLE [28a37deab] 2015-01-29 19:37:29 +0200
-Branch: REL9_3_STABLE [1c2774f37] 2015-01-29 19:37:27 +0200
-Branch: REL9_2_STABLE [61729e99d] 2015-01-29 19:37:25 +0200
-Branch: REL9_1_STABLE [37e0f13f2] 2015-01-29 19:37:22 +0200
--->
-
- <listitem>
- <para>
- Fix possible crash when using
- nonzero <varname>gin_fuzzy_search_limit</varname> (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [3fabed070] 2015-01-07 00:19:37 +0100
-Branch: REL9_4_STABLE [7da102154] 2015-01-07 00:24:58 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [31912d01d] 2015-01-07 00:18:00 +0100
-Branch: REL9_4_STABLE [84911ff51] 2015-01-07 00:24:47 +0100
--->
-
- <listitem>
- <para>
- Assorted fixes for logical decoding (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [49b04188f] 2015-01-15 20:52:41 +0200
-Branch: REL9_4_STABLE [b337d9657] 2015-01-15 20:52:18 +0200
--->
-
- <listitem>
- <para>
- Fix incorrect replay of WAL parameter change records that report
- changes in the <varname>wal_log_hints</varname> setting (Petr Jelinek)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [75b48e1ff] 2015-01-19 23:01:33 -0500
-Branch: REL9_4_STABLE [3387cbbcb] 2015-01-19 23:01:36 -0500
-Branch: REL9_3_STABLE [19794e997] 2015-01-19 23:01:39 -0500
-Branch: REL9_2_STABLE [33b723538] 2015-01-19 23:01:41 -0500
-Branch: REL9_1_STABLE [b87c1dcef] 2015-01-19 23:01:44 -0500
-Branch: REL9_0_STABLE [a1a8d0249] 2015-01-19 23:01:46 -0500
--->
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [894459e59] 2015-01-07 22:35:44 -0500
-Branch: REL9_4_STABLE [83fb1ca5c] 2015-01-07 22:36:35 -0500
-Branch: REL9_3_STABLE [1a366d51e] 2015-01-07 22:40:40 -0500
-Branch: REL9_2_STABLE [5ca4e444c] 2015-01-07 22:41:49 -0500
-Branch: REL9_1_STABLE [8dc83104e] 2015-01-07 22:42:42 -0500
-Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500
--->
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [080eabe2e] 2015-01-11 12:35:44 -0500
-Branch: REL9_4_STABLE [733728ff3] 2015-01-11 12:35:47 -0500
--->
-
- <listitem>
- <para>
- Fix <application>libpq</application>'s behavior when <filename>/etc/passwd</filename>
- isn't readable (Tom Lane)
- </para>
-
- <para>
- While doing <function>PQsetdbLogin()</function>, <application>libpq</application>
- attempts to ascertain the user's operating system name, which on most
- Unix platforms involves reading <filename>/etc/passwd</filename>. As of 9.4,
- failure to do that was treated as a hard error. Restore the previous
- behavior, which was to fail only if the application does not provide a
- database role name to connect as. This supports operation in chroot
- environments that lack an <filename>/etc/passwd</filename> file.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [28551797a] 2014-12-31 12:18:50 -0500
-Branch: REL9_4_STABLE [c35249939] 2014-12-31 12:16:57 -0500
-Branch: REL9_3_STABLE [7582cce56] 2014-12-31 12:17:00 -0500
-Branch: REL9_2_STABLE [64c506535] 2014-12-31 12:17:04 -0500
-Branch: REL9_1_STABLE [1773e0702] 2014-12-31 12:17:08 -0500
-Branch: REL9_0_STABLE [2600e4436] 2014-12-31 12:17:12 -0500
--->
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [adfc157dd] 2015-01-05 19:27:04 -0500
-Branch: REL9_4_STABLE [c99e41f68] 2015-01-05 19:27:06 -0500
-Branch: REL9_3_STABLE [bb1e2426b] 2015-01-05 19:27:09 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle comments on event triggers
- without failing (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [cff1bd2a3] 2015-01-30 08:57:24 -0600
-Branch: REL9_4_STABLE [cb0168528] 2015-01-30 08:57:53 -0600
-Branch: REL9_3_STABLE [cc609c46f] 2015-01-30 09:01:36 -0600
--->
-
- <listitem>
- <para>
- Allow parallel <application>pg_dump</application> to
- use <option>--serializable-deferrable</option> (Kevin Grittner)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [2c0a48589] 2015-01-03 20:54:12 +0100
-Branch: REL9_4_STABLE [90e4a2bf9] 2015-01-03 20:54:13 +0100
-Branch: REL9_3_STABLE [f6cea4502] 2015-01-03 20:54:13 +0100
-Branch: REL9_2_STABLE [f961ad479] 2015-01-03 20:54:13 +0100
-Branch: REL9_1_STABLE [2a0bfa4d6] 2015-01-03 20:54:13 +0100
--->
-
- <listitem>
- <para>
- Prevent WAL files created by <literal>pg_basebackup -x/-X</literal> from
- being archived again when the standby is promoted (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [37507962c] 2015-01-29 20:18:33 -0500
-Branch: REL9_4_STABLE [202621d04] 2015-01-29 20:18:37 -0500
-Branch: REL9_3_STABLE [53ae24692] 2015-01-29 20:18:40 -0500
-Branch: REL9_2_STABLE [66cc74680] 2015-01-29 20:18:42 -0500
-Branch: REL9_1_STABLE [290c2daad] 2015-01-29 20:18:44 -0500
-Branch: REL9_0_STABLE [dc9a506e6] 2015-01-29 20:18:46 -0500
--->
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a59ee8819] 2015-01-30 13:05:30 -0500
-Branch: REL9_4_STABLE [70da7aeba] 2015-01-30 13:04:59 -0500
-Branch: REL9_3_STABLE [f08cf8ad9] 2015-01-30 13:05:01 -0500
-Branch: REL9_2_STABLE [a97dfdfd9] 2015-01-30 13:05:04 -0500
-Branch: REL9_1_STABLE [8f51c432c] 2015-01-30 13:05:07 -0500
-Branch: REL9_0_STABLE [7c41a32b3] 2015-01-30 13:05:09 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8824bae87] 2014-11-18 13:28:13 -0500
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [0b49642b9] 2015-01-15 09:26:03 -0500
-Branch: REL9_4_STABLE [7b65f194e] 2015-01-15 09:29:41 -0500
-Branch: REL9_3_STABLE [ebbef4f39] 2015-01-15 09:29:55 -0500
-Branch: REL9_2_STABLE [d452bfd1b] 2015-01-15 09:42:21 -0500
-Branch: REL9_1_STABLE [151fb75b0] 2015-01-15 09:42:33 -0500
-Branch: REL9_0_STABLE [0a67c0018] 2015-01-15 09:42:47 -0500
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [e37d474f9] 2015-01-13 14:33:05 +0200
-Branch: REL9_4_STABLE [4ebb3494e] 2015-01-13 16:01:04 +0200
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [8cadeb792] 2015-01-04 15:44:49 +0100
-Branch: REL9_4_STABLE [7ced1b6c5] 2015-01-04 15:52:52 +0100
-Branch: REL9_3_STABLE [a68b8aec7] 2015-01-04 15:53:08 +0100
-Branch: REL9_2_STABLE [6f9b84a40] 2015-01-04 15:55:00 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [58bc4747b] 2015-01-04 15:35:46 +0100
-Branch: REL9_4_STABLE [2d8411a0a] 2015-01-04 15:35:46 +0100
-Branch: REL9_3_STABLE [d33f36f16] 2015-01-04 15:35:47 +0100
-Branch: REL9_2_STABLE [029e41afd] 2015-01-04 15:35:47 +0100
-Branch: REL9_1_STABLE [39cdf365a] 2015-01-04 15:35:47 +0100
-Branch: REL9_0_STABLE [17797e18d] 2015-01-04 15:35:48 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [0398ece4c] 2015-01-04 14:36:21 +0100
-Branch: REL9_4_STABLE [ff7d46b85] 2015-01-04 14:36:21 +0100
-Branch: REL9_3_STABLE [ec14f1601] 2015-01-04 14:36:22 +0100
-Branch: REL9_2_STABLE [f4060db11] 2015-01-04 14:36:22 +0100
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [3b5a89c48] 2014-12-30 20:33:01 +0900
-Branch: REL9_4_STABLE [458e8bc65] 2014-12-30 20:27:26 +0900
-Branch: REL9_3_STABLE [ed0e03283] 2014-12-30 20:20:56 +0900
-Branch: REL9_2_STABLE [4db7eaae0] 2014-12-30 19:59:26 +0900
-Branch: REL9_1_STABLE [4c136b0b6] 2014-12-30 19:48:53 +0900
-Branch: REL9_0_STABLE [9b74f3574] 2014-12-30 19:37:55 +0900
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [66709133c] 2014-12-16 15:35:33 -0500
-Branch: REL9_4_STABLE [383d224a0] 2014-12-16 15:35:36 -0500
-Branch: REL9_3_STABLE [53960e7eb] 2014-12-16 15:35:40 -0500
-Branch: REL9_2_STABLE [e92c67ddc] 2014-12-16 15:35:43 -0500
-Branch: REL9_1_STABLE [5c784d96a] 2014-12-16 15:35:46 -0500
-Branch: REL9_0_STABLE [a2969bd72] 2014-12-16 15:35:49 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d38e8d30c] 2014-12-16 13:31:42 -0500
-Branch: REL9_4_STABLE [6c75384ee] 2014-12-16 13:31:57 -0500
-Branch: REL9_3_STABLE [3b750ec15] 2014-12-16 13:32:02 -0500
-Branch: REL9_2_STABLE [5b2c8f04a] 2014-12-16 13:32:15 -0500
-Branch: REL9_1_STABLE [926da211a] 2014-12-16 13:32:25 -0500
-Branch: REL9_0_STABLE [961df1853] 2014-12-16 13:32:38 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [586dd5d6a] 2015-01-24 13:05:42 -0500
-Branch: REL9_4_STABLE [d51d4ff31] 2015-01-24 13:05:45 -0500
-Branch: REL9_3_STABLE [7240f9200] 2015-01-24 13:05:49 -0500
-Branch: REL9_2_STABLE [502e5f9c3] 2015-01-24 13:05:53 -0500
-Branch: REL9_1_STABLE [b00a08859] 2015-01-24 13:05:56 -0500
-Branch: REL9_0_STABLE [3a3ee655c] 2015-01-24 13:05:58 -0500
--->
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [85a2a8903] 2015-01-14 11:08:13 -0500
-Branch: REL9_4_STABLE [adb355106] 2015-01-14 11:08:17 -0500
--->
-
- <listitem>
- <para>
- Allow <varname>CFLAGS</varname> from <application>configure</application>'s environment
- to override automatically-supplied <varname>CFLAGS</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <application>configure</application> would add any switches that it
- chose of its own accord to the end of the
- user-specified <varname>CFLAGS</varname> string. Since most compilers
- process switches left-to-right, this meant that configure's choices
- would override the user-specified flags in case of conflicts. That
- should work the other way around, so adjust the logic to put the
- user's string at the end not the beginning.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aa719391d] 2015-01-19 23:44:19 -0500
-Branch: REL9_4_STABLE [3de9f22ac] 2015-01-19 23:44:22 -0500
-Branch: REL9_3_STABLE [1681e2f74] 2015-01-19 23:44:24 -0500
-Branch: REL9_2_STABLE [89b6a19e1] 2015-01-19 23:44:28 -0500
-Branch: REL9_1_STABLE [f4f522deb] 2015-01-19 23:44:30 -0500
-Branch: REL9_0_STABLE [338ff75fc] 2015-01-19 23:44:33 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5b89473d8] 2014-12-24 16:35:23 -0500
-Branch: REL9_4_STABLE [068024719] 2014-12-24 16:35:34 -0500
--->
-
- <listitem>
- <para>
- Add CST (China Standard Time) to our lists of timezone abbreviations
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [08bd0c581] 2015-01-30 22:45:44 -0500
-Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a
- for DST law changes in Chile and Mexico, plus historical changes in
- Iceland.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-4">
- <title>Release 9.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-12-18</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 9.4 include:
- </para>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="datatype-json"><type>jsonb</type></link>, a more
- capable and efficient data type for storing <acronym>JSON</acronym> data
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <acronym>SQL</acronym> command <xref linkend="sql-altersystem"/>
- for changing <filename>postgresql.conf</filename> configuration file entries
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce lock strength for some <xref linkend="sql-altertable"/>
- commands
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="rules-materializedviews">materialized views</link>
- to be refreshed without blocking concurrent reads
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="logicaldecoding">logical decoding</link>
- of WAL data, to allow database changes to be streamed out in a
- customizable format
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="bgworker">background worker processes</link>
- to be dynamically registered, started and terminated
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.4</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.4 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Tighten checks for multidimensional <link
- linkend="arrays">array</link> input (Bruce Momjian)
- </para>
-
- <para>
- Previously, an input array string that started with a single-element
- sub-array could later contain multi-element sub-arrays,
- e.g. <literal>'{{1}, {2,3}}'::int[]</literal> would be accepted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When converting values of type <type>date</type>, <type>timestamp</type>
- or <type>timestamptz</type>
- to <link linkend="datatype-json"><type>JSON</type></link>, render the
- values in a format compliant with ISO 8601 (Andrew Dunstan)
- </para>
-
- <para>
- Previously such values were rendered according to the current
- <xref linkend="guc-datestyle"/> setting; but many JSON processors
- require timestamps to be in ISO 8601 format. If necessary, the
- previous behavior can be obtained by explicitly casting the datetime
- value to <type>text</type> before passing it to the JSON conversion
- function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <link linkend="functions-json-op-table"><type>json</type>
- <literal>#&gt;</literal> <type>text[]</type></link> path extraction operator now
- returns its lefthand input, not NULL, if the array is empty (Tom Lane)
- </para>
-
- <para>
- This is consistent with the notion that this represents zero
- applications of the simple field/element extraction
- operator <literal>-&gt;</literal>. Similarly, <type>json</type>
- <literal>#&gt;&gt;</literal> <type>text[]</type> with an empty array merely
- coerces its lefthand input to text.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Corner cases in
- the <link linkend="functions-json-op-table"><type>JSON</type>
- field/element/path extraction operators</link> now return NULL rather
- than raising an error (Tom Lane)
- </para>
-
- <para>
- For example, applying field extraction to a JSON array now yields NULL
- not an error. This is more consistent (since some comparable cases such
- as no-such-field already returned NULL), and it makes it safe to create
- expression indexes that use these operators, since they will now not
- throw errors for any valid JSON input.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause consecutive whitespace in <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- and <function>to_date()</function> format strings to consume a corresponding
- number of characters in the input string (whitespace or not), then
- conditionally consume adjacent whitespace, if not in <literal>FX</literal>
- mode (Jeevan Chalke)
- </para>
-
- <para>
- Previously, consecutive whitespace characters in a non-<literal>FX</literal>
- format string behaved like a single whitespace character and consumed
- all adjacent whitespace in the input string. For example, previously
- a format string of three spaces would consume only the first space in
- <literal>' 12'</literal>, but it will now consume all three characters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="textsearch-functions-table"><function>ts_rank_cd()</function></link>
- to ignore stripped lexemes (Alex Hill)
- </para>
-
- <para>
- Previously, stripped lexemes were treated as if they had a default
- location, producing a rank of dubious usefulness.
- </para>
- </listitem>
-
- <listitem>
- <para>
- For functions declared to
- take <link linkend="xfunc-sql-variadic-functions"><literal>VARIADIC
- "any"</literal></link>, an actual parameter marked as <literal>VARIADIC</literal>
- must be of a determinable array type (Pavel Stehule)
- </para>
-
- <para>
- Such parameters can no longer be written as an undecorated string
- literal or <literal>NULL</literal>; a cast to an appropriate array data type
- will now be required. Note that this does not affect parameters not
- marked <literal>VARIADIC</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that whole-row variables expose the expected column names
- to functions that pay attention to column names within composite
- arguments (Tom Lane)
- </para>
-
- <para>
- Constructs like <literal>row_to_json(tab.*)</literal> now always emit column
- names that match the column aliases visible for table <literal>tab</literal>
- at the point of the call. In previous releases the emitted column
- names would sometimes be the table's actual column names regardless
- of any aliases assigned in the query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <xref linkend="sql-discard"/> now also discards sequence-related state
- (Fabr&iacute;zio de Royes Mello, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename <link linkend="sql-explain"><command>EXPLAIN
- ANALYZE</command></link>'s <quote>total runtime</quote> output
- to <quote>execution time</quote> (Tom Lane)
- </para>
-
- <para>
- Now that planning time is also reported, the previous name was
- confusing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link linkend="sql-show"><command>SHOW TIME ZONE</command></link> now
- outputs simple numeric UTC offsets in <acronym>POSIX</acronym> timezone
- format (Tom Lane)
- </para>
-
- <para>
- Previously, such timezone settings were displayed as <link
- linkend="datatype-interval-output"><type>interval</type></link> values.
- The new output is properly interpreted by <command>SET TIME ZONE</command>
- when passed as a simple string, whereas the old output required
- special treatment to be re-parsed correctly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Foreign data wrappers that support updating foreign tables must
- consider the possible presence of <literal>AFTER ROW</literal> triggers
- (Noah Misch)
- </para>
-
- <para>
- When an <literal>AFTER ROW</literal> trigger is present, all columns of the
- table must be returned by updating actions, since the trigger might
- inspect any or all of them. Previously, foreign tables never had
- triggers, so the FDW might optimize away fetching columns not mentioned
- in the <literal>RETURNING</literal> clause (if any).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <link
- linkend="ddl-constraints-check-constraints"><literal>CHECK</literal></link>
- constraints from referencing system columns, except
- <structfield>tableoid</structfield> (Amit Kapila)
- </para>
-
- <para>
- Previously such check constraints were allowed, but they would often
- cause errors during restores.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the last specified recovery
- target parameter if multiple target parameters are specified
- (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, there was an undocumented precedence order among
- the <literal>recovery_target_<replaceable>xxx</replaceable></literal> parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, automatically preserve quotes in command strings supplied
- by the user (Heikki Linnakangas)
- </para>
-
- <para>
- User commands that did their own quote preservation might need
- adjustment. This is likely to be an issue for commands used in
- <xref linkend="guc-archive-command"/>, <xref linkend="guc-restore-command"/>,
- and <link linkend="sql-copy"><command>COPY TO/FROM PROGRAM</command></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove catalog column <link
- linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</structfield></link>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove catalog column <link
- linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</structfield></link>
- (Kevin Grittner)
- </para>
-
- <para>
- Per-column rules have not been supported since
- <application>PostgreSQL</application> 7.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove native support for <application>Kerberos</application> authentication
- (<option>--with-krb5</option>, etc)
- (Magnus Hagander)
- </para>
-
- <para>
- The supported way to use <application>Kerberos</application> authentication is
- with <acronym>GSSAPI</acronym>. The native code has been deprecated since
- <productname>PostgreSQL</productname> 8.3.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>PL/Python</application>, handle domains over arrays like the
- underlying array type (Rodolfo Campero)
- </para>
-
- <para>
- Previously such values were treated as strings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make libpq's <link
- linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</function></link>
- and <link
- linkend="libpq-pqpingparams"><function>PQpingParams()</function></link>
- functions process zero-length strings as defaults (Adrian
- Vondendriesch)
- </para>
-
- <para>
- Previously, these functions treated zero-length string values as
- selecting the default in only some cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change empty arrays returned by the <xref linkend="intarray"/> module
- to be zero-dimensional arrays (Bruce Momjian)
- </para>
-
- <para>
- Previously, empty arrays were returned as zero-length one-dimensional
- arrays, whose text representation looked the same as zero-dimensional
- arrays (<literal>{}</literal>), but they acted differently in array
- operations. <application>intarray</application>'s behavior in this area now
- matches the built-in array operators.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <xref linkend="pgupgrade"/> now uses <option>-U</option>
- or <option>--username</option> to specify the user name (Bruce Momjian)
- </para>
-
- <para>
- Previously this option was spelled <option>-u</option> or <option>--user</option>,
- but that was inconsistent with other tools.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.4 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="bgworker">background worker processes</link>
- to be dynamically registered, started and terminated (Robert Haas)
- </para>
-
- <para>
- The new <filename>worker_spi</filename> module shows an example of use
- of this feature.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow dynamic allocation of shared memory segments (Robert Haas,
- Amit Kapila)
- </para>
-
- <para>
- This feature is illustrated in the <filename>test_shm_mq</filename>
- module.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During crash recovery or immediate shutdown, send uncatchable
- termination signals (<systemitem>SIGKILL</systemitem>) to child processes
- that do not shut down promptly (MauMau, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This reduces the likelihood of leaving orphaned child processes
- behind after <xref linkend="app-postmaster"/> shutdown, as well
- as ensuring that crash recovery can proceed if some child processes
- have become <quote>stuck</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve randomness of the database system identifier (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <xref linkend="sql-vacuum"/> properly report dead but
- not-yet-removable rows to the statistics collector (Hari Babu)
- </para>
-
- <para>
- Previously these were reported as live rows.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Reduce <link linkend="gin"><acronym>GIN</acronym></link> index size
- (Alexander Korotkov, Heikki Linnakangas)
- </para>
-
- <para>
- Indexes upgraded via <xref linkend="pgupgrade"/> will work fine
- but will still be in the old, larger <acronym>GIN</acronym> format.
- Use <xref linkend="sql-reindex"/> to recreate old GIN indexes in the
- new format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of multi-key <link
- linkend="gin"><acronym>GIN</acronym></link> lookups (Alexander Korotkov,
- Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="gist"><acronym>GiST</acronym></link> index support
- for <link linkend="datatype-inet"><type>inet</type></link> and
- <link linkend="datatype-cidr"><type>cidr</type></link> data types
- (Emre Hasegeli)
- </para>
-
- <para>
- Such indexes improve <link
- linkend="cidr-inet-operators-table">subnet and supernet</link>
- lookups and ordering comparisons.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the handling of interrupted B-tree page splits more robust
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow multiple backends to insert
- into <link linkend="wal"><acronym>WAL</acronym></link> buffers
- concurrently (Heikki Linnakangas)
- </para>
-
- <para>
- This improves parallel write performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Conditionally write only the modified portion of updated rows to
- <link linkend="wal"><acronym>WAL</acronym></link> (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of aggregate functions used as <link
- linkend="syntax-window-functions">window functions</link>
- (David Rowley, Florian Pflug, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of aggregates that
- use <link linkend="datatype-numeric"><type>numeric</type></link> state
- values (Hadi Moshayedi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
- tuples when tables are rewritten with <xref
- linkend="sql-cluster"/> or <link
- linkend="sql-vacuum"><command>VACUUM FULL</command></link> (Robert Haas,
- Andres Freund)
- </para>
-
- <para>
- This can avoid the need to freeze the tuples in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of <xref linkend="sql-copy"/> with default <link
- linkend="functions-sequence-table"><function>nextval()</function></link>
- columns (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of accessing many different <link
- linkend="sql-createsequence">sequences</link> in the same session
- (David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Raise hard limit on the number of tuples held in memory during sorting
- and B-tree index builds (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory allocated by <application>PL/pgSQL</application>
- <xref linkend="sql-do"/> blocks (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the planner more aggressive about extracting restriction clauses
- from mixed <literal>AND</literal>/<literal>OR</literal> clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow pushing volatile <literal>WHERE</literal> clauses down
- into <literal>DISTINCT</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Pushing down a <literal>WHERE</literal> clause can produce a more
- efficient plan overall, but at the cost of evaluating the clause
- more often than is implied by the text of the query; so don't do it
- if the clause contains any volatile functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Auto-resize the catalog caches (Heikki Linnakangas)
- </para>
-
- <para>
- This reduces memory consumption for sessions accessing only a few
- tables, and improves performance for sessions accessing many tables.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <xref linkend="pg-stat-archiver-view"/> system view to
- report <link linkend="wal"><acronym>WAL</acronym></link> archiver activity
- (Gabriele Bartolini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <structfield>n_mod_since_analyze</structfield> columns to
- <xref linkend="pg-stat-all-tables-view"/> and related system views
- (Mark Kirkwood)
- </para>
-
- <para>
- These columns expose the system's estimate of the number of changed
- tuples since the table's last <xref linkend="sql-analyze"/>. This
- estimate drives decisions about when to auto-analyze.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <structfield>backend_xid</structfield> and <structfield>backend_xmin</structfield>
- columns to the system view <xref linkend="pg-stat-activity-view"/>,
- and a <structfield>backend_xmin</structfield> column to
- <xref linkend="pg-stat-replication-view"/> (Christian Kruse)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><acronym>SSL</acronym></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <acronym>SSL</acronym> <acronym>ECDH</acronym> key exchange
- (Marko Kreen)
- </para>
-
- <para>
- This allows use of Elliptic Curve keys for server authentication.
- Such keys are faster and have better security than <acronym>RSA</acronym>
- keys. The new configuration parameter
- <xref linkend="guc-ssl-ecdh-curve"/>
- controls which curve is used for <acronym>ECDH</acronym>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the default <xref linkend="guc-ssl-ciphers"/> setting
- (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- By default, the server not the client now controls the preference
- order of <acronym>SSL</acronym> ciphers
- (Marko Kreen)
- </para>
-
- <para>
- Previously, the order specified by <xref linkend="guc-ssl-ciphers"/>
- was usually ignored in favor of client-side defaults, which are not
- configurable in most <productname>PostgreSQL</productname> clients. If
- desired, the old behavior can be restored via the new configuration
- parameter <xref linkend="guc-ssl-prefer-server-ciphers"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <xref linkend="guc-log-connections"/> show <acronym>SSL</acronym>
- encryption information (Andreas Kunert)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <acronym>SSL</acronym> renegotiation handling (&Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add new <acronym>SQL</acronym> command <xref linkend="sql-altersystem"/>
- for changing <filename>postgresql.conf</filename> configuration file entries
- (Amit Kapila)
- </para>
-
- <para>
- Previously such settings could only be changed by manually
- editing <filename>postgresql.conf</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="guc-autovacuum-work-mem"/> configuration parameter
- to control the amount of memory used by autovacuum workers
- (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="guc-huge-pages"/> parameter to allow using huge
- memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
- Menon-Sen)
- </para>
-
- <para>
- This can improve performance on large-memory systems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="guc-max-worker-processes"/> parameter
- to limit the number of background workers (Robert Haas)
- </para>
-
- <para>
- This is helpful in configuring a standby server to have the
- required number of worker processes (the same as the primary).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add superuser-only <xref linkend="guc-session-preload-libraries"/>
- parameter to load libraries at session start (Peter Eisentraut)
- </para>
-
- <para>
- In contrast to <xref linkend="guc-local-preload-libraries"/>, this
- parameter can load any shared library, not just those in
- the <filename>$libdir/plugins</filename> directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="guc-wal-log-hints"/> parameter to enable WAL
- logging of hint-bit changes (Sawada Masahiko)
- </para>
-
- <para>
- Hint bit changes are not normally logged, except when checksums are
- enabled. This is useful for external tools
- like <application>pg_rewind</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the default settings of <xref linkend="guc-work-mem"/>
- and <xref linkend="guc-maintenance-work-mem"/> by four times (Bruce
- Momjian)
- </para>
-
- <para>
- The new defaults are 4MB and 64MB respectively.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the default setting of <xref
- linkend="guc-effective-cache-size"/>
- to 4GB (Bruce Momjian, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>printf</function>-style space padding to be
- specified in <xref linkend="guc-log-line-prefix"/> (David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow terabyte units (<literal>TB</literal>) to be used when specifying
- configuration variable values (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show <acronym>PID</acronym>s of lock holders and waiters and improve
- information about relations in <xref linkend="guc-log-lock-waits"/>
- log messages (Christian Kruse)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce server logging level when loading shared libraries (Peter
- Geoghegan)
- </para>
-
- <para>
- The previous level was <literal>LOG</literal>, which was too verbose
- for libraries loaded per-session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, make <literal>SQL_ASCII</literal>-encoded databases and server
- processes (e.g., <xref linkend="app-postmaster"/>) emit messages in
- the character encoding of the server's Windows user locale
- (Alexander Law, Noah Misch)
- </para>
-
- <para>
- Previously these messages were output in the Windows
- <acronym>ANSI</acronym> code page.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="streaming-replication-slots">replication
- slots</link> to coordinate activity on streaming standbys with the
- node they are streaming from (Andres Freund, Robert Haas)
- </para>
-
- <para>
- Replication slots allow preservation of resources like
- <acronym>WAL</acronym> files on the primary until they are no longer
- needed by standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recovery parameter <varname>recovery_min_apply_delay</varname>
- to delay replication (Robert Haas, Fabr&iacute;zio de Royes Mello,
- Simon Riggs)
- </para>
-
- <para>
- Delaying replay on standby servers can be useful for recovering
- from user errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <varname>recovery_target</varname>
- option <option>immediate</option> to stop <link
- linkend="wal"><acronym>WAL</acronym></link> recovery as soon as a
- consistent state is reached (MauMau, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve recovery target processing (Heikki Linnakangas)
- </para>
-
- <para>
- The timestamp reported
- by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</function></link>
- now reflects already-committed records, not transactions about to
- be committed. Recovering to a restore point now replays the restore
- point, rather than stopping just before the restore point.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <link
- linkend="functions-admin-backup-table"><function>pg_switch_xlog()</function></link>
- now clears any unused trailing space in the old <acronym>WAL</acronym> file
- (Heikki Linnakangas)
- </para>
-
- <para>
- This improves the compression ratio for <acronym>WAL</acronym> files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report failure return codes from external recovery commands
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce spinlock contention during <acronym>WAL</acronym> replay (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Write <acronym>WAL</acronym> records of running transactions more
- frequently (Andres Freund)
- </para>
-
- <para>
- This allows standby servers to start faster and clean up resources
- more aggressively.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="logicaldecoding">Logical Decoding</link></title>
-
- <para>
- Logical decoding allows database changes to be streamed in a
- configurable format. The data is read from
- the <link linkend="wal"><acronym>WAL</acronym></link> and transformed into the
- desired target format. To implement this feature, the following changes
- were made:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <link linkend="logicaldecoding">logical decoding</link>
- of WAL data, to allow database changes to be streamed out in a
- customizable format
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new <xref linkend="guc-wal-level"/> setting <option>logical</option>
- to enable logical change-set encoding in <acronym>WAL</acronym> (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add table-level parameter <link
- linkend="catalog-pg-class"><literal>REPLICA IDENTITY</literal></link>
- to control logical replication (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add relation option <link
- linkend="sql-createtable-storage-parameters"><option>user_catalog_table</option></link>
- to identify user-created tables involved in logical change-set
- encoding (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="app-pgrecvlogical"/> application to receive
- logical-decoding data (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="test-decoding"/> module to illustrate logical
- decoding at the <acronym>SQL</acronym> level (Andres Freund)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="queries-tablefunctions"><literal>WITH
- ORDINALITY</literal></link> syntax to number the rows returned from a
- set-returning function in the <literal>FROM</literal> clause
- (Andrew Gierth, David Fetter)
- </para>
-
- <para>
- This is particularly useful for functions like
- <function>unnest()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="queries-tablefunctions"><literal>ROWS
- FROM()</literal></link> syntax to allow horizontal concatenation of
- set-returning functions in the <literal>FROM</literal> clause (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <xref linkend="sql-select"/> to have
- an empty target list (Tom Lane)
- </para>
-
- <para>
- This was added so that views that select from a table with zero
- columns can be dumped and restored correctly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <link linkend="sql-select"><literal>SELECT ... FOR UPDATE
- NOWAIT</literal></link> does not wait in corner cases involving
- already-concurrently-updated tuples (Craig Ringer and Thomas Munro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-discard"><command>DISCARD
- SEQUENCES</command></link> command to discard cached sequence-related state
- (Fabr&iacute;zio de Royes Mello, Robert Haas)
- </para>
-
- <para>
- <command>DISCARD ALL</command> will now also discard such information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>FORCE NULL</literal> option
- to <link linkend="sql-copy"><command>COPY FROM</command></link>, which
- causes quoted strings matching the specified null string to be
- converted to NULLs in <literal>CSV</literal> mode (Ian Barwick, Michael
- Paquier)
- </para>
-
- <para>
- Without this option, only unquoted matching strings will be imported
- as null values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Issue warnings for commands used outside of transaction blocks
- when they can have no effect (Bruce Momjian)
- </para>
-
- <para>
- New warnings are issued for <command>SET
- LOCAL</command>, <command>SET CONSTRAINTS</command>, <command>SET TRANSACTION</command> and
- <command>ABORT</command> when used outside a transaction block.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="sql-explain"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <command>EXPLAIN ANALYZE</command> show planning time (Andreas
- Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXPLAIN</command> show the grouping columns in Agg and
- Group nodes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>EXPLAIN ANALYZE</command> show exact and lossy
- block counts in bitmap heap scans (Etsuro Fujita)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Views</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow a <link linkend="rules-materializedviews">materialized view</link>
- to be refreshed without blocking other sessions from reading the view
- meanwhile (Kevin Grittner)
- </para>
-
- <para>
- This is done with <link
- linkend="sql-refreshmaterializedview"><command>REFRESH MATERIALIZED
- VIEW CONCURRENTLY</command></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow views to be <link
- linkend="sql-createview-updatable-views">automatically
- updated</link> even if they contain some non-updatable columns
- (Dean Rasheed)
- </para>
-
- <para>
- Previously the presence of non-updatable output columns such as
- expressions, literals, and function calls prevented automatic
- updates. Now <command>INSERT</command>s, <command>UPDATE</command>s and
- <command>DELETE</command>s are supported, provided that they do not
- attempt to assign new values to any of the non-updatable columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow control over whether <command>INSERT</command>s and
- <command>UPDATE</command>s can add rows to an auto-updatable view that
- would not appear in the view (Dean Rasheed)
- </para>
-
- <para>
- This is controlled with the new <xref linkend="sql-createview"/>
- clause <literal>WITH CHECK OPTION</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="rules-privileges">security barrier views</link>
- to be automatically updatable (Dean Rasheed)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support triggers on <link linkend="sql-createforeigntable">foreign
- tables</link> (Ronan Dunklau)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow moving groups of objects from one tablespace to another
- using the <literal>ALL IN TABLESPACE ... SET TABLESPACE</literal> form of
- <xref linkend="sql-altertable"/>, <xref linkend="sql-alterindex"/>, or
- <xref linkend="sql-altermaterializedview"/> (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow changing foreign key constraint deferrability
- via <xref linkend="sql-altertable"/> ... <literal>ALTER
- CONSTRAINT</literal> (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce lock strength for some <xref linkend="sql-altertable"/>
- commands
- (Simon Riggs, Noah Misch, Robert Haas)
- </para>
-
- <para>
- Specifically, <literal>VALIDATE CONSTRAINT</literal>, <literal>CLUSTER
- ON</literal>, <literal>SET WITHOUT CLUSTER</literal>, <literal>ALTER COLUMN
- SET STATISTICS</literal>, <literal>ALTER COLUMN</literal> <literal>SET</literal>
- <option>(attribute_option)</option>, <literal>ALTER COLUMN RESET</literal>
- <option>(attribute_option)</option> no longer require <literal>ACCESS
- EXCLUSIVE</literal> locks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow tablespace options to be set
- in <xref linkend="sql-createtablespace"/> (Vik Fearing)
- </para>
-
- <para>
- Formerly these options could only be set
- via <xref linkend="sql-altertablespace"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <xref linkend="sql-createaggregate"/> to define the estimated
- size of the aggregate's transition state data (Hadi Moshayedi)
- </para>
-
- <para>
- Proper use of this feature allows the planner to better estimate
- how much memory will be used by aggregates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>DROP IF EXISTS</command> to avoid errors for non-existent
- objects in more cases (Pavel Stehule, Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve how system relations are identified (Andres Freund,
- Robert Haas)
- </para>
-
- <para>
- Previously, relations once moved into the <literal>pg_catalog</literal>
- schema could no longer be modified or dropped.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fully implement the <link
- linkend="datatype-line"><type>line</type></link> data type (Peter
- Eisentraut)
- </para>
-
- <para>
- The line <emphasis>segment</emphasis> data type (<link
- linkend="datatype-lseg"><type>lseg</type></link>) has always been
- fully supported. The previous <type>line</type> data type (which was
- enabled only via a compile-time option) is not binary or
- dump-compatible with the new implementation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="datatype-pg-lsn"><type>pg_lsn</type></link>
- data type to represent a <acronym>WAL</acronym> log sequence number
- (<acronym>LSN</acronym>) (Robert Haas, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow single-point <link
- linkend="datatype-polygon"><type>polygon</type></link>s to be converted
- to <link linkend="datatype-circle"><type>circle</type></link>s
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow 5+ digit years for non-<acronym>ISO</acronym> <link
- linkend="datatype-datetime"><type>timestamp</type></link> and
- <type>date</type> strings, where appropriate (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add checks for overflow/underflow of <link
- linkend="datatype-datetime"><type>interval</type></link> values
- (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="datatype-json"><acronym>JSON</acronym></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="datatype-json"><type>jsonb</type></link>, a more
- capable and efficient data type for storing <acronym>JSON</acronym> data
- (Oleg Bartunov, Teodor Sigaev, Alexander
- Korotkov, Peter Geoghegan, Andrew Dunstan)
- </para>
-
- <para>
- This new type allows faster access to values within a JSON
- document, and faster and more useful indexing of JSON columns.
- Scalar values in <type>jsonb</type> documents are stored as appropriate
- scalar SQL types, and the JSON document structure is pre-parsed
- rather than being stored as text as in the original <type>json</type>
- data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add new JSON functions to allow for the construction
- of arbitrarily complex JSON trees (Andrew Dunstan, Laurence Rowe)
- </para>
-
- <para>
- New functions include <link
- linkend="functions-json-processing-table"><function>json_array_elements_text()</function></link>,
- <function>json_build_array()</function>, <function>json_object()</function>,
- <function>json_object_agg()</function>, <function>json_to_record()</function>,
- and <function>json_to_recordset()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-json-processing-table"><function>json_typeof()</function></link>
- to return the data type of a <type>json</type> value (Andrew Tipton)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</function></link>
- and <function>pg_sleep_until(timestamp)</function> to specify
- delays more flexibly (Vik Fearing, Julien Rouhaud)
- </para>
-
- <para>
- The existing <function>pg_sleep()</function> function only supports delays
- specified in seconds.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="array-functions-table"><function>cardinality()</function></link>
- function for arrays (Marko Tiikkaja)
- </para>
-
- <para>
- This returns the total number of elements in the array, or zero
- for an array with no elements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SQL</acronym> functions to allow <link linkend="lo-funcs">large
- object reads/writes</link> at arbitrary offsets (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="array-functions-table"><function>unnest()</function></link>
- to take multiple arguments, which are individually unnested then
- horizontally concatenated (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add functions to construct <type>time</type>s, <type>date</type>s,
- <type>timestamp</type>s, <type>timestamptz</type>s, and <type>interval</type>s
- from individual values, rather than strings (Pavel Stehule)
- </para>
-
- <para>
- These functions' names are prefixed with <literal>make_</literal>,
- e.g. <link linkend="functions-datetime-table"><function>make_date()</function></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_char()</function></link>'s
- <literal>TZ</literal> format specifier return a useful value for simple
- numeric time zone offsets (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</literal> returned
- an empty string if the <literal>timezone</literal> was set to a constant
- like <literal>-4</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add timezone offset format specifier <literal>OF</literal> to <link
- linkend="functions-formatting-table"><function>to_char()</function></link>
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve the random seed used for <link
- linkend="functions-math-random-table"><function>random()</function></link>
- (Honza Horak)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten validity checking for Unicode code points in <link
- linkend="functions-string-other"><function>chr(int)</function></link>
- (Tom Lane)
- </para>
-
- <para>
- This function now only accepts values that are valid UTF8 characters
- according to RFC 3629.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>System Information Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add functions for looking up objects in <structname>pg_class</structname>,
- <structname>pg_proc</structname>, <structname>pg_type</structname>, and
- <structname>pg_operator</structname> that do not generate errors for
- non-existent objects (Yugo Nagata, Nozomi Anzai,
- Robert Haas)
- </para>
-
- <para>
- For example, <link
- linkend="functions-info-catalog-table"><function>to_regclass()</function></link>
- does a lookup in <structname>pg_class</structname> similarly to
- the <type>regclass</type> input function, but it returns NULL for a
- non-existent object instead of failing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function <link
- linkend="functions-admin-dblocation"><function>pg_filenode_relation()</function></link>
- to allow for more efficient lookup of relation names from filenodes
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <structfield>parameter_default</structfield> column to <link
- linkend="infoschema-parameters"><structname>information_schema.parameters</structname></link>
- view (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="infoschema-schemata"><structname>information_schema.schemata</structname></link>
- show all accessible schemas (Peter Eisentraut)
- </para>
-
- <para>
- Previously it only showed schemas owned by the current user.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Aggregates</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add control over which rows are passed
- into aggregate functions via the <link
- linkend="syntax-aggregates"><literal>FILTER</literal></link> clause
- (David Fetter)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support ordered-set (<link
- linkend="syntax-aggregates"><literal>WITHIN GROUP</literal></link>)
- aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add standard ordered-set aggregates <link
- linkend="functions-orderedset-table"><function>percentile_cont()</function></link>,
- <function>percentile_disc()</function>, <function>mode()</function>, <link
- linkend="functions-hypothetical-table"><function>rank()</function></link>,
- <function>dense_rank()</function>, <function>percent_rank()</function>, and
- <function>cume_dist()</function>
- (Atri Sharma, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <link
- linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</literal></link>
- aggregate functions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow polymorphic aggregates to have non-polymorphic state data
- types (Tom Lane)
- </para>
- <para>
- This allows proper declaration in SQL of aggregates like the built-in
- aggregate <function>array_agg()</function>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add event trigger support to <link linkend="plperl">PL/Perl</link>
- and <link linkend="pltcl">PL/Tcl</link> (Dimitri Fontaine)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert <link linkend="datatype-numeric"><type>numeric</type></link>
- values to <type>decimal</type> in <link linkend="plpython">PL/Python</link>
- (Szymon Guz, Ronan Dunklau)
- </para>
-
- <para>
- Previously such values were converted to Python <type>float</type> values,
- risking loss of precision.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add ability to retrieve the current PL/pgSQL call stack
- using <link linkend="plpgsql-call-stack"><command>GET
- DIAGNOSTICS</command></link>
- (Pavel Stehule, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add option <link
- linkend="plpgsql-statements-sql-onerow"><option>print_strict_params</option></link>
- to display the parameters passed to a query that violated a
- <literal>STRICT</literal> constraint (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variables <link
- linkend="plpgsql-extra-checks"><varname>plpgsql.extra_warnings</varname></link>
- and <varname>plpgsql.extra_errors</varname> to enable additional PL/pgSQL
- warnings and errors (Marko Tiikkaja, Petr Jelinek)
- </para>
-
- <para>
- Currently only warnings/errors about shadowed variables are available.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title><link linkend="libpq"><application>libpq</application></link></title>
- <itemizedlist>
-
- <listitem>
- <para>
- Make libpq's <link
- linkend="libpq-pqconndefaults"><function>PQconndefaults()</function></link>
- function ignore invalid service files (Steve Singer, Bruce Momjian)
- </para>
-
- <para>
- Previously it returned NULL if an incorrect service file was
- encountered.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <acronym>TLS</acronym> protocol versions beyond <literal>TLSv1</literal>
- in libpq (Marko Kreen)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <xref linkend="app-createuser"/> option <option>-g</option>
- to specify role membership (Christopher Browne)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <xref linkend="app-vacuumdb"/>
- option <option>--analyze-in-stages</option> to analyze in stages of
- increasing granularity (Peter Eisentraut)
- </para>
-
- <para>
- This allows minimal statistics to be created quickly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="app-pgresetwal"><application>pg_resetxlog</application></link>
- with option <option>-n</option> output current and potentially changed
- values (Rajeev Rastogi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <xref linkend="app-initdb"/> throw error for incorrect locale
- settings, rather than silently falling back to a default choice
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <xref linkend="app-pg-ctl"/> return exit code <literal>4</literal> for
- an inaccessible data directory (Amit Kapila, Bruce Momjian)
- </para>
-
- <para>
- This behavior more closely matches the Linux Standard Base
- (<acronym>LSB</acronym>) Core Specification.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that a non-absolute <option>-D</option> path
- specification is interpreted relative
- to <xref linkend="app-pg-ctl"/>'s current directory
- (Kumar Rajeev Rastogi)
- </para>
-
- <para>
- Previously it would be interpreted relative to whichever directory
- the underlying Windows service was started in.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>sizeof()</function> in <link linkend="ecpg">ECPG</link>
- C array definitions (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="ecpg">ECPG</link> properly handle nesting
- of C-style comments in both C and <acronym>SQL</acronym> text
- (Michael Meskes)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Suppress <quote>No rows</quote> output in <application>psql</application> <link
- linkend="app-psql-meta-commands"><option>expanded</option></link>
- mode when the footer is disabled (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow Control-C to abort <application>psql</application> when it's hung at
- connection startup (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="app-psql-meta-commands">Backslash Commands</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <application>psql</application>'s <command>\db+</command> show tablespace options
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\do+</command> display the functions
- that implement the operators (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d+</command> output an
- <literal>OID</literal> line only if an <literal>oid</literal> column
- exists in the table (Bruce Momjian)
- </para>
-
- <para>
- Previously, the presence or absence of an <literal>oid</literal>
- column was always reported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\d</command> show disabled system triggers (Bruce
- Momjian)
- </para>
-
- <para>
- Previously, if you disabled all triggers, only user triggers
- would show as disabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>\copy</command> to no longer require
- a space between <literal>stdin</literal> and a semicolon (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Output the row count at the end of <command>\copy</command>, just
- like <command>COPY</command> already did (Kumar Rajeev Rastogi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>\conninfo</command> to display the
- server's <acronym>IP</acronym> address for connections using
- <literal>hostaddr</literal> (Fujii Masao)
- </para>
-
- <para>
- Previously <command>\conninfo</command> could not display the server's
- <acronym>IP</acronym> address in such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show the <acronym>SSL</acronym> protocol version in
- <command>\conninfo</command> (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add tab completion for <command>\pset</command>
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>\pset</command> with no arguments
- to show all settings (Gilles Darold)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>\s</command> display the name of the history file it wrote
- without converting it to an absolute path (Tom Lane)
- </para>
-
- <para>
- The code previously attempted to convert a relative file name to
- an absolute path for display, but frequently got it wrong.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="app-pgdump"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <xref linkend="app-pgrestore"/> options
- <option>-I</option>, <option>-P</option>, <option>-T</option> and <option>-n</option>
- to be specified multiple times (Heikki Linnakangas)
- </para>
-
- <para>
- This allows multiple objects to be restored in one operation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optionally add <literal>IF EXISTS</literal> clauses to the <command>DROP</command>
- commands emitted when removing old objects during a restore (Pavel
- Stehule)
- </para>
-
- <para>
- This change prevents unnecessary errors when removing old objects.
- The new <option>--if-exists</option> option
- for <xref linkend="app-pgdump"/>, <xref linkend="app-pg-dumpall"/>,
- and <xref linkend="app-pgrestore"/> is only available
- when <option>--clean</option> is also specified.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="app-pgbasebackup"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>pg_basebackup</application> option <option>--xlogdir</option>
- to specify the <filename>pg_xlog</filename> directory location (Haribabu
- Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pg_basebackup</application> to relocate tablespaces in
- the backup copy (Steeve Lennmark)
- </para>
-
- <para>
- This is particularly useful for using <application>pg_basebackup</application>
- on the same machine as the primary.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow network-stream base backups to be throttled (Antonin Houska)
- </para>
-
- <para>
- This can be controlled with the <application>pg_basebackup</application>
- <option>--max-rate</option> parameter.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Improve the way tuples are frozen to preserve forensic information
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- This change removes the main objection to freezing tuples as soon
- as possible. Code that inspects tuple flag bits will need to be
- modified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- No longer require function prototypes for functions marked with the
- <link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</function></link>
- macro (Peter Eisentraut)
- </para>
-
- <para>
- This change eliminates the need to write boilerplate prototypes.
- Note that the <function>PG_FUNCTION_INFO_V1</function> macro must appear
- before the corresponding function definition to avoid compiler
- warnings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <varname>SnapshotNow</varname> and
- <function>HeapTupleSatisfiesNow()</function> (Robert Haas)
- </para>
-
- <para>
- All existing uses have been switched to more appropriate snapshot
- types. Catalog scans now use <acronym>MVCC</acronym> snapshots.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add an <acronym>API</acronym> to allow memory allocations over one gigabyte
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <function>psprintf()</function> to simplify memory allocation during
- string composition (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <function>printf()</function> size modifier <literal>z</literal> to
- print <type>size_t</type> values (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <acronym>API</acronym> of <function>appendStringInfoVA()</function>
- to better use <function>vsnprintf()</function> (David Rowley, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow new types of external toast datums to be created (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add single-reader, single-writer, lightweight shared message queue
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve spinlock speed on x86_64 <acronym>CPU</acronym>s (Heikki
- Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove spinlock support for unsupported platforms
- <productname>SINIX</productname>, <productname>Sun3</productname>, and
- <productname>NS32K</productname> (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <acronym>IRIX</acronym> port (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the number of semaphores required by
- <option>--disable-spinlocks</option> builds (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite <application>duplicate_oids</application> Unix shell script in
- <application>Perl</application> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add Test Anything Protocol (<acronym>TAP</acronym>) tests for client
- programs (Peter Eisentraut)
- </para>
-
- <para>
- Currently, these tests are run by <literal>make check-world</literal>
- only if the <option>--enable-tap-tests</option> option was given
- to <application>configure</application>.
- This might become the default behavior in some future release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add make targets <option>check-tests</option> and
- <option>installcheck-tests</option>, which allow selection of individual
- tests to be run (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <option>maintainer-check</option> makefile rule (Peter Eisentraut)
- </para>
-
- <para>
- The default build rules now include all the formerly-optional tests.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve support for <envar>VPATH</envar> builds of <acronym>PGXS</acronym>
- modules (C&eacute;dric Villemain, Andrew Dunstan, Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Upgrade to Autoconf 2.69 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <application>configure</application> flag that appends custom text to the
- <envar>PG_VERSION</envar> string (Oskari Saarenmaa)
- </para>
-
- <para>
- This is useful for packagers building custom binaries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve DocBook <acronym>XML</acronym> validity (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various minor security and sanity issues reported by the
- <productname>Coverity</productname> scanner (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of invalid memory usage when testing
- <productname>PostgreSQL</productname> with <application>Valgrind</application>
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve sample <application>Emacs</application> configuration file
- <filename>emacs.samples</filename> (Peter Eisentraut)
- </para>
-
- <para>
- Also add <filename>.dir-locals.el</filename> to the top of the source tree.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pgindent</application> to accept a command-line list
- of typedefs (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pgindent</application> smarter about blank lines
- around preprocessor conditionals (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid most uses of <command>dlltool</command>
- in <productname>Cygwin</productname> and
- <productname>Mingw</productname> builds (Marco Atzeri, Hiroshi Inoue)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support client-only installs in <acronym>MSVC</acronym> (Windows) builds
- (MauMau)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <xref linkend="pgprewarm"/> extension to preload relation data
- into the shared buffer cache at server start (Robert Haas)
- </para>
-
- <para>
- This allows reaching full operating performance more quickly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>UUID</acronym> random number generator
- <function>gen_random_uuid()</function> to <xref linkend="pgcrypto"/>
- (Oskari Saarenmaa)
- </para>
-
- <para>
- This allows creation of version 4 <acronym>UUID</acronym>s without
- requiring installation of <xref linkend="uuid-ossp"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <xref linkend="uuid-ossp"/> to work with
- the <systemitem>BSD</systemitem> or <systemitem>e2fsprogs</systemitem> UUID libraries,
- not only the <systemitem>OSSP</systemitem> UUID library (Matteo Beccati)
- </para>
-
- <para>
- This improves the <application>uuid-ossp</application> module's portability
- since it no longer has to have the increasingly-obsolete OSSP
- library. The module's name is now rather a misnomer, but we won't
- change it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add option to <xref linkend="auto-explain"/> to include trigger
- execution time (Horiguchi Kyotaro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <xref linkend="pgstattuple"/> to not report rows from
- uncommitted transactions as dead (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <xref linkend="pgstattuple"/> functions
- use <type>regclass</type>-type arguments (Satoshi Nagayasu)
- </para>
-
- <para>
- While <type>text</type>-type arguments are still supported, they
- may be removed in a future major release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve consistency of <xref linkend="pgrowlocks"/> output to honor
- snapshot rules more consistently (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <xref linkend="pgtrgm"/>'s choice of trigrams for indexed
- regular expression searches (Alexander Korotkov)
- </para>
-
- <para>
- This change discourages use of trigrams containing whitespace, which
- are usually less selective.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="pgwaldump"><application>pg_xlogdump</application></link>
- to report a live log stream with <option>--follow</option>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Store <xref linkend="cube"/> data more compactly (Stas Kelvich)
- </para>
-
- <para>
- Existing data must be dumped/restored to use the new format.
- The old format can still be read.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <xref linkend="vacuumlo"/> client-side memory usage by using
- a cursor (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Dramatically reduce memory consumption
- in <xref linkend="pgupgrade"/> (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pass <xref linkend="pgupgrade"/>'s user name (<option>-U</option>) option to
- generated analyze scripts (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="pgbench"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove line length limit for <application>pgbench</application> scripts (Sawada
- Masahiko)
- </para>
-
- <para>
- The previous line limit was <envar>BUFSIZ</envar>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add long option names to <application>pgbench</application> (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> option <option>--rate</option> to control
- the transaction rate (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> option <option>--progress</option> to
- print periodic progress reports
- (Fabien Coelho)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="pgstatstatements"/></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make <application>pg_stat_statements</application> use a file, rather than
- shared memory, for query text storage (Peter Geoghegan)
- </para>
-
- <para>
- This removes the previous limitation on query text length, and
- allows a higher number of unique statements to be tracked by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow reporting of <application>pg_stat_statements</application>'s internal
- query hash identifier (Daniel Farina, Sameer Thakur, Peter
- Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the ability to retrieve all <application>pg_stat_statements</application>
- information except the query text (Peter Geoghegan)
- </para>
-
- <para>
- This allows monitoring tools to fetch query text only for
- just-created entries, improving performance during repeated querying
- of the statistics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_stat_statements</application> ignore <command>DEALLOCATE</command>
- commands (Fabien Coelho)
- </para>
-
- <para>
- It already ignored <command>PREPARE</command>, as well as planning time in
- general, so this seems more consistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save the statistics file into <filename>$PGDATA/pg_stat</filename> at server
- shutdown, rather than <filename>$PGDATA/global</filename> (Fujii Masao)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- </sect2>
- </sect1>
diff --git a/doc/src/sgml/release-9.5.sgml b/doc/src/sgml/release-9.5.sgml
deleted file mode 100644
index 00d5619a0a5..00000000000
--- a/doc/src/sgml/release-9.5.sgml
+++ /dev/null
@@ -1,11191 +0,0 @@
-<!-- doc/src/sgml/release-9.5.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-5-15">
- <title>Release 9.5.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.14.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.15</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.13,
- see <xref linkend="release-9-5-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of standard multi-character operators that are immediately
- followed by a comment or <literal>+</literal> or <literal>-</literal>
- (Andrew Gierth)
- </para>
-
- <para>
- This oversight could lead to parse errors, or to incorrect assignment
- of precedence.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the server will process
- already-received <literal>NOTIFY</literal>
- and <literal>SIGTERM</literal> interrupts before waiting for client
- input (Jeff Janes, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <function>ApplyLogicalMappingFile()</function> closes the
- mapping file when done with it (Tomas Vondra)
- </para>
-
- <para>
- Previously, the file descriptor was leaked, eventually resulting in
- failures during logical decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to handle cases where a mapped catalog table is
- repeatedly rewritten, e.g. by <literal>VACUUM FULL</literal>
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent starting the server with <varname>wal_level</varname> set
- to too low a value to support an existing replication slot (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix event triggers to handle nested <command>ALTER TABLE</command>
- commands (Michael Paquier, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Propagate parent process's transaction and statement start timestamps
- to parallel workers (Konstantin Knizhnik)
- </para>
-
- <para>
- This prevents misbehavior of functions such
- as <function>transaction_timestamp()</function> when executed in a
- worker.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL file recycling logic to work correctly on standby servers
- (Michael Paquier)
- </para>
-
- <para>
- Depending on the setting of <varname>archive_mode</varname>, a standby
- might fail to remove some WAL files that could be removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of commit-timestamp tracking during recovery
- (Masahiko Sawada, Michael Paquier)
- </para>
-
- <para>
- If commit timestamp tracking has been turned on or off, recovery might
- fail due to trying to fetch the commit timestamp for a transaction
- that did not record it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DSM allocation to be interrupted (Chris Travers)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle turning <varname>full_page_writes</varname> on
- dynamically (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible buffer overrun when replaying GIN page recompression
- from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed fsync of a replication slot's directory (Konstantin
- Knizhnik, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unexpected timeouts when
- using <varname>wal_sender_timeout</varname> on a slow server
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure background workers are stopped properly when the postmaster
- receives a fast-shutdown request before completing database startup
- (Alexander Kukushkin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>, as well as documentation
- examples, to call <function>PQconsumeInput()</function> before
- each <function>PQnotifies()</function> call (Tom Lane)
- </para>
-
- <para>
- This fixes cases in which <application>psql</application> would not
- report receipt of a <literal>NOTIFY</literal> message until after the
- next command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow the regression tests to be run by an Administrator
- account (Andrew Dunstan)
- </para>
-
- <para>
- To do this safely, <application>pg_regress</application> now gives up
- any such privileges at startup.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: REL9_5_STABLE [f6c268c48] 2018-09-11 16:09:46 -0400
-Branch: REL9_4_STABLE [19acfd652] 2018-09-11 16:03:42 -0400
-Branch: REL9_3_STABLE [48c978f3e] 2018-09-11 16:05:20 -0400
-Branch: REL9_4_STABLE [9ca32a6eb] 2018-09-11 15:44:42 -0400
-Branch: REL9_3_STABLE [048257832] 2018-09-11 15:46:35 -0400
-Branch: REL9_4_STABLE [86e247583] 2018-09-12 12:24:11 -0400
-Branch: REL9_3_STABLE [520711d6e] 2018-09-12 12:25:57 -0400
--->
- <para>
- Support building on Windows with Visual Studio 2015 or Visual Studio 2017
- (Michael Paquier, Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [1245561df] 2018-10-12 14:49:33 -0400
-Branch: REL9_4_STABLE [ec185747a] 2018-10-12 14:49:33 -0400
-Branch: REL9_3_STABLE [01187f32c] 2018-10-12 14:49:33 -0400
--->
- <para>
- Provide <literal>ALLOCSET_DEFAULT_SIZES</literal> and sibling macros
- in back branches (Tom Lane)
- </para>
-
- <para>
- These macros have existed since 9.6, but there were requests to add
- them to older branches to allow extensions to rely on them without
- branch-specific coding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-14">
- <title>Release 9.5.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.13.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.14</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.13,
- see <xref linkend="release-9-5-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>INSERT ... ON CONFLICT UPDATE</literal> through a view
- that isn't just <literal>SELECT * FROM ...</literal>
- (Dean Rasheed, Amit Langote)
- </para>
-
- <para>
- Erroneous expansion of an updatable view could lead to crashes
- or <quote>attribute ... has the wrong type</quote> errors, if the
- view's <literal>SELECT</literal> list doesn't match one-to-one with
- the underlying table's columns.
- Furthermore, this bug could be leveraged to allow updates of columns
- that an attacking user lacks <literal>UPDATE</literal> privilege for,
- if that user has <literal>INSERT</literal> and <literal>UPDATE</literal>
- privileges for some other column(s) of the table.
- Any user could also use it for disclosure of server memory.
- (CVE-2018-10925)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During WAL replay, guard against corrupted record lengths exceeding
- 1GB (Michael Paquier)
- </para>
-
- <para>
- Treat such a case as corrupt data. Previously, the code would try to
- allocate space and get a hard error, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When ending recovery, delay writing the timeline history file as long
- as possible (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids some situations where a failure during recovery cleanup
- (such as a problem with a two-phase state file) led to inconsistent
- timeline state on-disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make logical WAL senders report streaming state correctly (Simon
- Riggs, Sawada Masahiko)
- </para>
-
- <para>
- The code previously mis-detected whether or not it had caught up with
- the upstream server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in snapshot handling during logical decoding, allowing wrong
- decoding results in rare cases (Arseny Sher, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of empty uncompressed posting list pages in GIN
- indexes (Sivasubramanian Ramasubramanian, Alexander Korotkov)
- </para>
-
- <para>
- This could result in an assertion failure after pg_upgrade of a
- pre-9.4 GIN index (9.4 and later will not create such pages).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM</command> will respond to signals
- within btree page deletion loops (Andres Freund)
- </para>
-
- <para>
- Corrupted btree indexes could result in an infinite loop here, and
- that previously wasn't interruptible without forcing a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, and text search objects
- were not schema-qualified when they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s failure to
- dump <literal>REPLICA IDENTITY</literal> properties for constraint
- indexes (Tom Lane)
- </para>
-
- <para>
- Manually created unique indexes were properly marked, but not those
- created by declaring <literal>UNIQUE</literal> or <literal>PRIMARY
- KEY</literal> constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/hstore_plperl</filename> to look through Perl
- scalar references, and to not crash if it doesn't find a hash
- reference where it expects one (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-13">
- <title>Release 9.5.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.12.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.13</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if the function marking mistakes mentioned in the first
- changelog entry below affect you, you will want to take steps to
- correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.12,
- see <xref linkend="release-9-5-12"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlocks in concurrent <command>CREATE INDEX
- CONCURRENTLY</command> commands that are run
- under <literal>SERIALIZABLE</literal> or <literal>REPEATABLE
- READ</literal> transaction isolation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible slow execution of <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly incorrect generation of an index-only-scan plan when the
- same table column appears in multiple index columns, and only some of
- those index columns use operator classes that can return the column
- value (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix executor crash due to double free in some <literal>GROUPING
- SET</literal> usages (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a table rewrite event trigger is added concurrently
- with a command that could call such a trigger (&Aacute;lvaro Herrera,
- Andrew Gierth, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case where a streaming standby gets stuck at a WAL
- continuation record (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In logical decoding, avoid possible double processing of WAL data
- when a walsender restarts (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_recvlogical</application> to not fail against
- pre-v10 <productname>PostgreSQL</productname> servers
- (Michael Paquier)
- </para>
-
- <para>
- A previous fix caused <application>pg_recvlogical</application> to
- issue a command regardless of server version, but it should only be
- issued to v10 and later servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_rewind</application> deletes files on the
- target server if they are deleted from the source server during the
- run (Takayuki Tsunakawa)
- </para>
-
- <para>
- Failure to do this could result in data inconsistency on the target,
- particularly if the file in question is a WAL segment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_rewind</application> to handle tables in
- non-default tablespaces correctly (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [3c0e07a46] 2018-05-01 12:02:41 -0400
--->
- <para>
- Support building with Microsoft Visual Studio 2015 (Michael Paquier)
- </para>
-
- <para>
- Various fixes needed for VS2015 compatibility were previously
- back-patched into the 9.5 branch, but this one was missed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-12">
- <title>Release 9.5.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.11.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.12</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.10,
- see <xref linkend="release-9-5-10"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-11">
- <title>Release 9.5.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.10.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.11</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.10,
- see <xref linkend="release-9-5-10"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect query results from cases involving flattening of
- subqueries whose outputs are used in <literal>GROUPING SETS</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spurious deadlock failures when multiple sessions are
- running <command>CREATE INDEX CONCURRENTLY</command> (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failures when an inheritance tree contains foreign child tables
- (Etsuro Fujita)
- </para>
-
- <para>
- A mix of regular and foreign tables in an inheritance tree resulted in
- creation of incorrect plans for <command>UPDATE</command>
- and <command>DELETE</command> queries. This led to visible failures in
- some cases, notably when there are row-level triggers on a foreign
- child table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to correctly clean up disk files for crashed
- transactions (Atsushi Torikoshi)
- </para>
-
- <para>
- Logical decoding may spill WAL records to disk for transactions
- generating many WAL records. Normally these files are cleaned up
- after the transaction's commit or abort record arrives; but if
- no such record is ever seen, the removal code misbehaved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix walsender timeout failure and failure to respond to interrupts
- when processing a large transaction (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with failure to start a parallel worker process
- (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- Parallel query previously tended to hang indefinitely if a worker
- could not be started, as the result of <literal>fork()</literal>
- failure or other low-probability problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe alignment assumptions when working
- with <type>__int128</type> (Tom Lane)
- </para>
-
- <para>
- Typically, compilers assume that <type>__int128</type> variables are
- aligned on 16-byte boundaries, but our memory allocation
- infrastructure isn't prepared to guarantee that, and increasing the
- setting of MAXALIGN seems infeasible for multiple reasons. Adjust the
- code to allow use of <type>__int128</type> only when we can tell the
- compiler to assume lesser alignment. The only known symptom of this
- problem so far is crashes in some parallel aggregation queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename <application>pg_rewind</application>'s
- <function>copy_file_range</function> function to avoid conflict
- with new Linux system call of that name (Andres Freund)
- </para>
-
- <para>
- This change prevents build failures with newer glibc versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-10">
- <title>Release 9.5.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.9.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.10</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you use BRIN indexes, see the fourth changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.8,
- see <xref linkend="release-9-5-8"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that <literal>INSERT ... ON CONFLICT DO UPDATE</literal> checks
- table permissions and RLS policies in all cases (Dean Rasheed)
- </para>
-
- <para>
- The update path of <literal>INSERT ... ON CONFLICT DO UPDATE</literal>
- requires <literal>SELECT</literal> permission on the columns of the
- arbiter index, but it failed to check for that in the case of an
- arbiter specified by constraint name.
- In addition, for a table with row level security enabled, it failed to
- check updated rows against the table's <literal>SELECT</literal>
- policies (regardless of how the arbiter index was specified).
- (CVE-2017-15099)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix BRIN index summarization to handle concurrent table extension
- correctly (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously, a race condition allowed some table rows to be omitted from
- the index. It may be necessary to reindex existing BRIN indexes to
- recover from past occurrences of this problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failures during concurrent updates of a BRIN index
- (Tom Lane)
- </para>
-
- <para>
- These race conditions could result in errors like <quote>invalid index
- offnum</quote> or <quote>inconsistent range map</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when logical decoding is invoked from a SPI-using function,
- in particular any function written in a PL language
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>json_build_array()</function>,
- <function>json_build_object()</function>, and their <type>jsonb</type>
- equivalents to handle explicit <literal>VARIADIC</literal> arguments
- correctly (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly ignore <structname>RelabelType</structname> expression nodes
- when determining relation distinctness (David Rowley)
- </para>
-
- <para>
- This allows the intended optimization to occur when a subquery has
- a result column of type <type>varchar</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid <systemitem>SIGBUS</systemitem> crash on Linux when a DSM memory
- request exceeds the space available in <systemitem>tmpfs</systemitem>
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>COPY</command>'s <literal>FREEZE</literal> option to
- work when the transaction isolation level is <literal>REPEATABLE
- READ</literal> or higher (Noah Misch)
- </para>
-
- <para>
- This case was unintentionally broken by a previous bug fix.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-parsing of the last line in a
- non-newline-terminated <filename>pg_hba.conf</filename> file
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s matching of tablespace
- paths to canonicalize both paths before comparing (Michael Paquier)
- </para>
-
- <para>
- This is particularly helpful on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s handling of out-of-scope cursor
- declarations with pointer or array variables (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In ecpglib, correctly handle backslashes in string literals depending
- on whether <varname>standard_conforming_strings</varname> is set
- (Tsunakawa Takayuki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missing temp-install prerequisites
- for <literal>check</literal>-like Make targets (Noah Misch)
- </para>
-
- <para>
- Some non-default test procedures that are meant to work
- like <literal>make check</literal> failed to ensure that the temporary
- installation was up to date.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-9">
- <title>Release 9.5.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.5.8.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.9</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.8,
- see <xref linkend="release-9-5-8"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <application>pg_restore</application> when using parallel mode and
- using a list file to select a subset of items to restore
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>make check</literal> to behave correctly when invoked via a
- non-GNU make program (Thomas Munro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-8">
- <title>Release 9.5.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.7.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.8</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.7,
- see <xref linkend="release-9-5-7"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <function>lo_put()</function> check for <literal>UPDATE</literal> privilege on
- the target large object (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- <function>lo_put()</function> should surely require the same permissions
- as <function>lowrite()</function>, but the check was missing, allowing any
- user to change the data in a large object.
- (CVE-2017-7548)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correct the documentation about the process for upgrading standby
- servers with <application>pg_upgrade</application> (Bruce Momjian)
- </para>
-
- <para>
- The previous documentation instructed users to start/stop the primary
- server after running <application>pg_upgrade</application> but before syncing
- the standby servers. This sequence is unsafe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix concurrent locking of tuple update chains (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If several sessions concurrently lock a tuple update chain with
- nonconflicting lock modes using an old snapshot, and they all
- succeed, it was possible for some of them to nonetheless fail (and
- conclude there is no live tuple version) due to a race condition.
- This had consequences such as foreign-key checks failing to see a
- tuple that definitely exists but is being updated concurrently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential data corruption when freezing a tuple whose XMAX is a
- multixact with exactly one still-interesting member (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid integer overflow and ensuing crash when sorting more than one
- billion tuples in-memory (Sergey Koposov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>walsender</application> to exit promptly when client requests
- shutdown (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent walsender-triggered panics during shutdown checkpoints
- (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix leakage of small subtransactions spilled to disk during logical
- decoding (Andres Freund)
- </para>
-
- <para>
- This resulted in temporary files consuming excessive disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the work needed to build snapshots during creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
-
- <para>
- The previous algorithm was infeasibly expensive on a server with a
- lot of open transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition that could indefinitely delay creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce overhead in processing syscache invalidation events (Tom Lane)
- </para>
-
- <para>
- This is particularly helpful for logical decoding, which triggers
- frequent cache invalidation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow window functions to be used in sub-<literal>SELECT</literal>s that
- are within the arguments of an aggregate function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling pointer in <command>ALTER TABLE</command> when there is a
- comment on a constraint belonging to the table (David Rowley)
- </para>
-
- <para>
- Re-applying the comment to the reconstructed constraint could fail
- with a weird error message, or even crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, reset GSS/SASL and SSPI authentication
- state properly after a failed connection attempt (Michael Paquier)
- </para>
-
- <para>
- Failure to do this meant that when falling back from SSL to non-SSL
- connections, a GSS/SASL failure in the SSL attempt would always cause
- the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_restore</application> to
- emit <command>REFRESH MATERIALIZED VIEW</command> commands last (Tom Lane)
- </para>
-
- <para>
- This prevents errors during dump/restore when a materialized view
- refers to tables owned by a different user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_dump</application>/<application>pg_restore</application>'s
- reporting of error conditions originating in <application>zlib</application>
- (Vladimir Kunschikov, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to
- drop event triggers as expected (Tom Lane)
- </para>
-
- <para>
- It also now correctly assigns ownership of event triggers; before,
- they were restored as being owned by the superuser running the
- restore script.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of outer joins with empty constraints, such as the result
- of a <literal>NATURAL LEFT JOIN</literal> with no common columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_rewind</application> to correctly handle files exceeding 2GB
- (Kuntal Ghosh, Michael Paquier)
- </para>
-
- <para>
- Ordinarily such files won't appear in <productname>PostgreSQL</productname> data
- directories, but they could be present in some cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_xlogdump</application>'s computation of WAL record length
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, re-establish connections to remote
- servers after <command>ALTER SERVER</command> or <command>ALTER USER
- MAPPING</command> commands (Kyotaro Horiguchi)
- </para>
-
- <para>
- This ensures that option changes affecting connection parameters will
- be applied promptly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, allow cancellation of remote
- transaction control commands (Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows us to quickly escape a wait for an unresponsive
- remote server in many more cases than previously.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase <literal>MAX_SYSCACHE_CALLBACKS</literal> to provide more room for
- extensions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [af1f18259] 2017-08-02 15:07:20 -0400
-Branch: REL9_4_STABLE [8892170e7] 2017-08-02 15:07:20 -0400
-Branch: REL9_3_STABLE [3d9ae20e7] 2017-08-02 15:07:20 -0400
-Branch: REL9_2_STABLE [1188b9b2c] 2017-08-02 15:07:21 -0400
--->
- <para>
- Fix unescaped-braces issue in our build scripts for Microsoft MSVC,
- to avoid a warning or error from recent Perl versions (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, honor <literal>PROVE_FLAGS</literal> settings
- on <filename>vcregress.pl</filename>'s command line (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-7">
- <title>Release 9.5.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.6.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.7</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are using third-party replication tools that depend
- on <quote>logical decoding</quote>, see the fourth changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.6,
- see <xref linkend="release-9-5-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-5-8"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore <application>libpq</application>'s recognition of
- the <envar>PGREQUIRESSL</envar> environment variable (Daniel Gustafsson)
- </para>
-
- <para>
- Processing of this environment variable was unintentionally dropped
- in <productname>PostgreSQL</productname> 9.3, but its documentation remained.
- This creates a security hazard, since users might be relying on the
- environment variable to force SSL-encrypted connections, but that
- would no longer be guaranteed. Restore handling of the variable,
- but give it lower priority than <envar>PGSSLMODE</envar>, to avoid
- breaking configurations that work correctly with post-9.3 code.
- (CVE-2017-7485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly-invalid initial snapshot during logical decoding
- (Petr Jelinek, Andres Freund)
- </para>
-
- <para>
- The initial snapshot created for a logical decoding replication slot
- was potentially incorrect. This could cause third-party tools that
- use logical decoding to copy incomplete/inconsistent initial data.
- This was more likely to happen if the source server was busy at the
- time of slot creation, or if another logical slot already existed.
- </para>
-
- <para>
- If you are using a replication tool that depends on logical decoding,
- and it should have copied a nonempty data set at the start of
- replication, it is advisable to recreate the replica after
- installing this update, or to verify its contents against the source
- server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>walsender</application> due to failure
- to initialize a string buffer (Stas Kelvich, Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash when rescanning a nearest-neighbor index-only scan
- on a GiST index (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of <function>fork()</function> failure for a
- background worker process (Tom Lane)
- </para>
-
- <para>
- Previously, the postmaster updated portions of its state as though
- the process had been launched successfully, resulting in subsequent
- confusion.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: REL9_5_STABLE [7be3678a8] 2017-04-24 07:53:05 +0100
--->
- <para>
- Fix crash or wrong answers when a <literal>GROUPING SETS</literal> column's
- data type is hashable but not sortable (Pavan Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid applying <quote>physical targetlist</quote> optimization to custom
- scans (Dmitry Ivanov, Tom Lane)
- </para>
-
- <para>
- This optimization supposed that retrieving all columns of a tuple
- is inexpensive, which is true for ordinary Postgres tuples; but it
- might not be the case for a custom scan provider.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use the correct sub-expression when applying a <literal>FOR ALL</literal>
- row-level-security policy (Stephen Frost)
- </para>
-
- <para>
- In some cases the <literal>WITH CHECK</literal> restriction would be applied
- when the <literal>USING</literal> restriction is more appropriate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid dangling pointer in <command>COPY ... TO</command> when row-level
- security is active for the source table (Tom Lane)
- </para>
-
- <para>
- Usually this had no ill effects, but sometimes it would cause
- unexpected errors or crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid accessing an already-closed relcache entry in <command>CLUSTER</command>
- and <command>VACUUM FULL</command> (Tom Lane)
- </para>
-
- <para>
- With some bad luck, this could lead to indexes on the target
- relation getting rebuilt with the wrong persistence setting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix integer-overflow problems in <type>interval</type> comparison (Kyotaro
- Horiguchi, Tom Lane)
- </para>
-
- <para>
- The comparison operators for type <type>interval</type> could yield wrong
- answers for intervals larger than about 296000 years. Indexes on
- columns containing such large values should be reindexed, since they
- may be corrupt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix roundoff problems in <function>float8_timestamptz()</function>
- and <function>make_interval()</function> (Tom Lane)
- </para>
-
- <para>
- These functions truncated, rather than rounded, when converting a
- floating-point value to integer microseconds; that could cause
- unexpectedly off-by-one results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_object_address()</function> to handle members of operator
- families correctly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory management overhead for contexts containing many large
- blocks (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s extraction of trigrams from regular
- expressions (Tom Lane)
- </para>
-
- <para>
- In some cases it would produce a broken data structure that could never
- match anything, leading to GIN or GiST indexscans that use a trigram
- index not finding any matches to the regular expression.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_5_STABLE [cdf5a004b] 2017-05-06 22:21:38 -0400
-Branch: REL9_4_STABLE [f14bf0a8f] 2017-05-06 22:19:56 -0400
-Branch: REL9_3_STABLE [3aa16b117] 2017-05-06 22:17:35 -0400
--->
- <para>
- In <filename>contrib/postgres_fdw</filename>,
- transmit query cancellation requests to the remote server
- (Michael Paquier, Etsuro Fujita)
- </para>
-
- <para>
- Previously, a local query cancellation request did not cause an
- already-sent remote query to terminate early. This is a back-patch
- of work originally done for 9.6.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-6">
- <title>Release 9.5.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.5.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.6</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.5,
- see <xref linkend="release-9-5-5"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the special snapshot used for catalog scans is not
- invalidated by premature data pruning (Tom Lane)
- </para>
-
- <para>
- Backends failed to account for this snapshot when advertising their
- oldest xmin, potentially allowing concurrent vacuuming operations to
- remove data that was still needed. This led to transient failures
- along the lines of <quote>cache lookup failed for relation 1255</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect WAL logging for BRIN indexes (Kuntal Ghosh)
- </para>
-
- <para>
- The WAL record emitted for a BRIN <quote>revmap</quote> page when moving an
- index tuple to a different page was incorrect. Replay would make the
- related portion of the index useless, forcing it to be recomputed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_5_STABLE [c0db1ec26] 2016-11-17 13:31:30 -0300
-Branch: REL9_4_STABLE [30e3cb307] 2016-11-17 13:31:30 -0300
--->
- <para>
- Reduce interlocking on standby servers during the replay of btree
- index vacuuming operations (Simon Riggs)
- </para>
-
- <para>
- This change avoids substantial replication delays that sometimes
- occurred while replaying such operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby feedback works correctly when it's enabled at
- standby server start (Ants Aasma, Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect updating of trigger function properties when changing a
- foreign-key constraint's deferrability properties with <command>ALTER
- TABLE ... ALTER CONSTRAINT</command> (Tom Lane)
- </para>
-
- <para>
- This led to odd failures during subsequent exercise of the foreign
- key, as the triggers were fired at the wrong times.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... SET DATA TYPE ... USING</command> when child
- table has different column ordering than the parent
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Failure to adjust the column numbering in the <literal>USING</literal>
- expression led to errors,
- typically <quote>attribute <replaceable>N</replaceable> has wrong type</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE OR REPLACE VIEW</command> to update the view query
- before attempting to apply the new view options (Dean Rasheed)
- </para>
-
- <para>
- Previously the command would fail if the new options were
- inconsistent with the old view definition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report correct object identity during <command>ALTER TEXT SEARCH
- CONFIGURATION</command> (Artur Zakirov)
- </para>
-
- <para>
- The wrong catalog OID was reported to extensions such as logical
- decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix commit timestamp mechanism to not fail when queried about
- the special XIDs <literal>FrozenTransactionId</literal>
- and <literal>BootstrapTransactionId</literal> (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: REL9_5_STABLE [bed2a0b06] 2016-12-13 19:14:42 -0600
-Branch: REL9_4_STABLE [4b9d466c1] 2016-12-13 19:05:12 -0600
-Branch: REL9_3_STABLE [5d80171ad] 2016-12-13 19:05:35 -0600
-Branch: REL9_2_STABLE [60314e28e] 2016-12-13 19:08:09 -0600
--->
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect use of view reloptions as regular table reloptions (Tom
- Lane)
- </para>
-
- <para>
- The symptom was spurious <quote>ON CONFLICT is not supported on table
- ... used as a catalog table</quote> errors when the target
- of <command>INSERT ... ON CONFLICT</command> is a view with cascade option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect <quote>target lists can have at most <replaceable>N</replaceable>
- entries</quote> complaint when using <literal>ON CONFLICT</literal> with
- wide tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multicolumn expansion of <replaceable>foo</replaceable><literal>.*</literal> in
- an <command>UPDATE</command> source expression (Tom Lane)
- </para>
-
- <para>
- This led to <quote>UPDATE target count mismatch --- internal
- error</quote>. Now the syntax is understood as a whole-row variable,
- as it would be in other contexts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve speed of user-defined aggregates that
- use <function>array_append()</function> as transition function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash in <function>array_position()</function>
- or <function>array_positions()</function> when processing arrays of records
- (Junseok Yang)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable transform that attempted to remove no-op <literal>AT TIME
- ZONE</literal> conversions (Tom Lane)
- </para>
-
- <para>
- This resulted in wrong answers when the simplified expression was
- used in an index condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in transmitting GUC parameter values to parallel workers
- (Michael Paquier, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cached plans are invalidated by changes in foreign-table
- options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_restore</application> with <option>--create --if-exists</option>
- to behave more sanely if an archive contains
- unrecognized <command>DROP</command> commands (Tom Lane)
- </para>
-
- <para>
- This doesn't fix any live bug, but it may improve the behavior in
- future if <application>pg_restore</application> is used with an archive
- generated by a later <application>pg_dump</application> version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s rate limiting in the presence of
- slow I/O (Antonin Houska)
- </para>
-
- <para>
- If disk I/O was transiently much slower than the specified rate
- limit, the calculation overflowed, effectively disabling the rate
- limit for the rest of the run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s handling of
- symlinked <filename>pg_stat_tmp</filename> and <filename>pg_replslot</filename>
- subdirectories (Magnus Hagander, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible mishandling of expanded arrays in domain check
- constraints and <literal>CASE</literal> execution (Tom Lane)
- </para>
-
- <para>
- It was possible for a PL/pgSQL function invoked in these contexts to
- modify or even delete an array value that needs to be preserved for
- additional operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix nested uses of PL/pgSQL functions in contexts such as domain
- check constraints evaluated during assignment to a PL/pgSQL variable
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach <filename>contrib/dblink</filename> to ignore irrelevant server options
- when it uses a <filename>contrib/postgres_fdw</filename> foreign server as
- the source of connection options (Corey Huinker)
- </para>
-
- <para>
- Previously, if the foreign server object had options that were not
- also <application>libpq</application> connection options, an error occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix portability problems in <filename>contrib/pageinspect</filename>'s
- functions for GIN indexes (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-5">
- <title>Release 9.5.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.4.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.5</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted free space maps.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.5.2,
- see <xref linkend="release-9-5-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix WAL-logging of truncation of relation free space maps and
- visibility maps (Pavan Deolasee, Heikki Linnakangas)
- </para>
-
- <para>
- It was possible for these files to not be correctly restored during
- crash recovery, or to be written incorrectly on a standby server.
- Bogus entries in a free space map could lead to attempts to access
- pages that have been truncated away from the relation itself, typically
- producing errors like <quote>could not read block <replaceable>XXX</replaceable>:
- read only 0 of 8192 bytes</quote>. Checksum failures in the
- visibility map are also possible, if checksumming is enabled.
- </para>
-
- <para>
- Procedures for determining whether there is a problem and repairing it
- if so are discussed at
- <ulink url="https://wiki.postgresql.org/wiki/Free_Space_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [60893786d] 2016-09-03 13:28:53 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [36646d3af] 2016-09-03 13:28:53 -0400
-Branch: REL9_5_STABLE [08a72872f] 2016-09-03 13:28:53 -0400
-Branch: REL9_4_STABLE [a69443564] 2016-09-03 13:28:53 -0400
--->
- <para>
- Fix incorrect creation of GIN index WAL records on big-endian machines
- (Tom Lane)
- </para>
-
- <para>
- The typical symptom was <quote>unexpected GIN leaf action</quote> errors
- during WAL replay.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [5c609a742] 2016-09-09 15:54:29 -0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [c3656c9ff] 2016-09-09 15:54:29 -0300
-Branch: REL9_5_STABLE [f33765885] 2016-09-09 15:54:29 -0300
-Branch: REL9_4_STABLE [8778da2af] 2016-09-09 15:54:29 -0300
-Branch: REL9_3_STABLE [dfe7121df] 2016-09-09 15:54:29 -0300
--->
- <para>
- Fix <command>SELECT FOR UPDATE/SHARE</command> to correctly lock tuples that
- have been updated by a subsequently-aborted transaction
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- In 9.5 and later, the <command>SELECT</command> would sometimes fail to
- return such tuples at all. A failure has not been proven to occur in
- earlier releases, but might be possible with concurrent updates.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [96dd77d34] 2016-09-22 11:35:03 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [a88fe25f5] 2016-09-22 11:34:44 -0400
-Branch: REL9_5_STABLE [c35917835] 2016-09-22 11:34:44 -0400
-Branch: REL9_4_STABLE [d3dd00e67] 2016-09-22 11:34:44 -0400
-Branch: REL9_3_STABLE [73df86a37] 2016-09-22 11:34:44 -0400
-Branch: REL9_2_STABLE [8552f9b90] 2016-09-22 11:34:44 -0400
-Branch: REL9_1_STABLE [0183df5dc] 2016-09-22 11:34:45 -0400
--->
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [07ef03512] 2016-08-17 17:03:36 -0700
-Branch: REL9_6_STABLE Release: REL9_6_0 [e79aaebcc] 2016-08-17 17:03:36 -0700
-Branch: REL9_5_STABLE [94bc30725] 2016-08-17 17:03:36 -0700
--->
- <para>
- Fix deletion of speculatively inserted TOAST tuples when backing out
- of <command>INSERT ... ON CONFLICT</command> (Oskari Saarenmaa)
- </para>
-
- <para>
- In the race condition where two transactions try to insert conflicting
- tuples at about the same time, the loser would fail with
- an <quote>attempted to delete invisible tuple</quote> error if its
- insertion included any TOAST'ed fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't throw serialization errors for self-conflicting insertions
- in <command>INSERT ... ON CONFLICT</command> (Thomas Munro, Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2c00fad28] 2016-08-24 14:38:12 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [616be05df] 2016-08-24 14:38:13 -0400
-Branch: REL9_5_STABLE [25fe5f758] 2016-08-24 14:37:50 -0400
-Branch: REL9_4_STABLE [08a823e53] 2016-08-24 14:37:51 -0400
-Branch: REL9_3_STABLE [aaad96e40] 2016-08-24 14:37:51 -0400
-Branch: REL9_2_STABLE [237663897] 2016-08-24 14:37:51 -0400
-Branch: REL9_1_STABLE [3570ea424] 2016-08-24 14:37:51 -0400
--->
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ae4760d66] 2016-08-24 22:20:25 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [006fb80a5] 2016-08-24 22:20:26 -0400
-Branch: REL9_5_STABLE [46bd14a10] 2016-08-24 22:20:01 -0400
-Branch: REL9_4_STABLE [566afa15c] 2016-08-24 22:20:01 -0400
--->
- <para>
- Fix query-lifespan memory leak in a bulk <command>UPDATE</command> on a table
- with a <literal>PRIMARY KEY</literal> or <literal>REPLICA IDENTITY</literal> index
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>COPY</command> with a column name list from a table that has
- row-level security enabled (Adam Brightwell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_6_BR [4b234fd8b] 2016-08-12 12:13:04 -0400
-Branch: REL9_5_STABLE [ed2d7b8c8] 2016-08-12 12:13:04 -0400
-Branch: REL9_4_STABLE [85974b468] 2016-08-12 12:13:04 -0400
-Branch: REL9_3_STABLE [16cc6d23b] 2016-08-12 12:13:04 -0400
-Branch: REL9_2_STABLE [ceb005319] 2016-08-12 12:13:04 -0400
--->
- <para>
- Suppress printing of zeroes for unmeasured times
- in <command>EXPLAIN</command> (Maksim Milyutin)
- </para>
-
- <para>
- Certain option combinations resulted in printing zero values for times
- that actually aren't ever measured in that combination. Our general
- policy in <command>EXPLAIN</command> is not to print such fields at all, so
- do that consistently in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics update for <command>TRUNCATE</command> in a prepared
- transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [dcb12ce8d] 2016-09-06 15:35:47 +0100
-Branch: REL9_6_STABLE Release: REL9_6_0 [1fa42debe] 2016-09-09 11:43:08 +0100
-Branch: REL9_5_STABLE [f3b3e871e] 2016-09-09 11:43:46 +0100
-Branch: REL9_4_STABLE [81b0f8204] 2016-09-09 11:44:54 +0100
-Branch: REL9_3_STABLE [e1dddf3e8] 2016-09-09 11:45:16 +0100
-Branch: REL9_2_STABLE [eaf6fe7fa] 2016-09-09 11:45:40 +0100
-Branch: REL9_1_STABLE [3ed7f54bc] 2016-09-09 11:46:03 +0100
--->
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Show a sensible value
- in <structname>pg_settings</structname>.<structfield>unit</structfield>
- for <varname>min_wal_size</varname> and <varname>max_wal_size</varname> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_6_BR [9389fbd03] 2016-08-14 15:06:01 -0400
-Branch: REL9_5_STABLE [635651214] 2016-08-14 15:06:01 -0400
-Branch: REL9_4_STABLE [4ac3d7794] 2016-08-14 15:06:01 -0400
-Branch: REL9_3_STABLE [e8e20aadd] 2016-08-14 15:06:02 -0400
-Branch: REL9_2_STABLE [9d5bf77b5] 2016-08-14 15:06:02 -0400
-Branch: REL9_1_STABLE [7e01c8ef3] 2016-08-14 15:06:02 -0400
--->
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve commit timestamps across server restart
- (Julien Rouhaud, Craig Ringer)
- </para>
-
- <para>
- With <xref linkend="guc-track-commit-timestamp"/> turned on, old
- commit timestamps became inaccessible after a clean server restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical WAL decoding to work properly when a subtransaction's WAL
- output is large enough to spill to disk (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [008c4135c] 2016-08-22 15:22:11 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [48b9ca0b6] 2016-08-22 15:30:31 -0400
-Branch: REL9_5_STABLE [da9659f87] 2016-08-22 15:30:37 -0400
--->
- <para>
- Fix possible sorting error when aborting use of abbreviated keys
- (Peter Geoghegan)
- </para>
-
- <para>
- In the worst case, this could result in a corrupt btree index, which
- would need to be rebuilt using <command>REINDEX</command>. However, the
- situation is believed to be rare.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [769fd9d8e] 2016-09-08 16:51:09 -0700
-Branch: REL9_6_STABLE Release: REL9_6_0 [f6802936a] 2016-09-08 16:52:13 -0700
-Branch: REL9_5_STABLE [26ce63ce7] 2016-09-08 16:52:13 -0700
-Branch: REL9_4_STABLE [075cfbe4a] 2016-09-08 16:52:13 -0700
-Branch: REL9_3_STABLE [d2a5b2b28] 2016-09-08 16:52:13 -0700
-Branch: REL9_2_STABLE [f5462dedb] 2016-09-08 16:52:13 -0700
-Branch: REL9_1_STABLE [08fdfe7a8] 2016-09-08 16:52:13 -0700
--->
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0e0f43d6f] 2016-08-31 08:52:13 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [3fc489cb3] 2016-08-31 08:52:13 -0400
-Branch: REL9_5_STABLE [c40bb1155] 2016-08-31 08:52:13 -0400
-Branch: REL9_4_STABLE [f4e40537e] 2016-08-31 08:52:13 -0400
-Branch: REL9_3_STABLE [baf111d31] 2016-08-31 08:52:13 -0400
-Branch: REL9_2_STABLE [823df401d] 2016-08-31 08:52:13 -0400
-Branch: REL9_1_STABLE [e3439a455] 2016-08-31 08:52:13 -0400
--->
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [2d7e59100] 2016-08-17 13:15:03 -0700
-Branch: REL9_6_STABLE Release: REL9_6_0 [8cb23dba8] 2016-08-17 13:15:03 -0700
-Branch: REL9_5_STABLE [de396a1cb] 2016-08-17 13:15:03 -0700
-Branch: REL9_4_STABLE [690a2fb90] 2016-08-17 13:15:04 -0700
--->
- <para>
- Properly initialize replication slot state when recycling a
- previously-used slot (Michael Paquier)
- </para>
-
- <para>
- This failure to reset all of the fields of the slot could
- prevent <command>VACUUM</command> from removing dead tuples.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Round shared-memory allocation request to a multiple of the actual
- huge page size when attempting to use huge pages on Linux (Tom Lane)
- </para>
-
- <para>
- This avoids possible failures during <function>munmap()</function> on systems
- with atypical default huge page sizes. Except in crash-recovery
- cases, there were no ill effects other than a log message.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [470d886c3] 2016-09-20 12:26:29 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [92668cd4d] 2016-09-20 12:28:02 -0400
-Branch: REL9_5_STABLE [b1aed95f5] 2016-09-20 12:30:38 -0400
-Branch: REL9_4_STABLE [626312d1b] 2016-09-20 12:30:42 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [49a91b88e] 2016-09-23 09:54:11 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [b251379fb] 2016-09-23 09:54:11 -0400
-Branch: REL9_5_STABLE [93528f7b4] 2016-09-23 09:54:11 -0400
-Branch: REL9_4_STABLE [32cdf680f] 2016-09-23 09:54:11 -0400
--->
- <para>
- Use a more random value for the dynamic shared memory control
- segment's ID (Robert Haas, Tom Lane)
- </para>
-
- <para>
- Previously, the same value would be chosen every time, because it was
- derived from <function>random()</function> but <function>srandom()</function> had not
- yet been called. While relatively harmless, this was not the intended
- behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [419113dfd] 2016-09-20 12:04:41 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [6bcd26c43] 2016-09-20 12:12:27 -0400
-Branch: REL9_5_STABLE [c124e3649] 2016-09-20 12:12:31 -0400
-Branch: REL9_4_STABLE [c23b2523d] 2016-09-20 12:12:36 -0400
--->
- <para>
- On Windows, retry creation of the dynamic shared memory control
- segment after an access-denied error (Kyotaro Horiguchi, Amit Kapila)
- </para>
-
- <para>
- Windows sometimes returns <literal>ERROR_ACCESS_DENIED</literal> rather
- than <literal>ERROR_ALREADY_EXISTS</literal> when there is an existing
- segment. This led to postmaster startup failure due to believing that
- the former was an unrecoverable error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5697522d8] 2016-08-18 14:49:08 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [c81c71d88] 2016-08-18 14:48:51 -0400
-Branch: REL9_5_STABLE [a8fc19505] 2016-08-18 14:48:51 -0400
--->
- <para>
- Fix <application>PL/pgSQL</application> to not misbehave with parameters and
- local variables of type <type>int2vector</type> or <type>oidvector</type>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [3fcc98c99] 2016-09-18 13:46:32 +0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [e06728d63] 2016-09-18 13:56:11 +0300
-Branch: REL9_5_STABLE [7c177ddc2] 2016-09-18 13:56:52 +0300
-Branch: REL9_4_STABLE [d48e10a68] 2016-09-18 13:59:57 +0300
-Branch: REL9_3_STABLE [b31f335bf] 2016-09-18 14:00:10 +0300
-Branch: REL9_2_STABLE [a4a3fac16] 2016-09-18 14:00:13 +0300
-Branch: REL9_1_STABLE [ed29d2de2] 2016-09-18 14:07:30 +0300
--->
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [40c3fe498] 2016-09-19 22:55:43 +0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [f65764a04] 2016-09-19 22:55:50 +0300
-Branch: REL9_5_STABLE [edb5c4097] 2016-09-19 22:58:03 +0300
-Branch: REL9_4_STABLE [476945c45] 2016-09-19 22:59:44 +0300
-Branch: master [65c655638] 2016-09-21 13:14:48 +0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [93834a20f] 2016-09-21 13:16:02 +0300
-Branch: REL9_5_STABLE [b93d37474] 2016-09-21 13:16:20 +0300
-Branch: REL9_4_STABLE [f16d4a241] 2016-09-21 13:16:24 +0300
--->
- <para>
- Fix <application>pgbench</application>'s calculation of average latency
- (Fabien Coelho)
- </para>
-
- <para>
- The calculation was incorrect when there were <literal>\sleep</literal>
- commands in the script, or when the test duration was specified in
- number of transactions rather than total time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check library loadability in name order
- (Tom Lane)
- </para>
-
- <para>
- This is a workaround to deal with cross-extension dependencies from
- language transform modules to their base language and data type
- modules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [12f6eadff] 2016-09-23 13:49:26 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [7e02476f3] 2016-09-23 13:49:26 -0400
-Branch: REL9_5_STABLE [96e16d739] 2016-09-23 13:49:26 -0400
-Branch: REL9_4_STABLE [912ea1945] 2016-09-23 13:49:27 -0400
-Branch: REL9_3_STABLE [f39bb487d] 2016-09-23 13:49:27 -0400
-Branch: REL9_2_STABLE [53b29d986] 2016-09-23 13:49:27 -0400
--->
- <para>
- In <application>pg_dump</application>, never dump range constructor functions
- (Tom Lane)
- </para>
-
- <para>
- This oversight led to <application>pg_upgrade</application> failures with
- extensions containing range types, due to duplicate creation of the
- constructor functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e97e9c57b] 2016-09-08 10:48:03 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [a88cee90f] 2016-09-08 10:48:03 -0400
-Branch: REL9_5_STABLE [142a110b3] 2016-09-08 10:48:03 -0400
--->
- <para>
- In <application>pg_dump</application> with <option>-C</option>,
- suppress <literal>TABLESPACE</literal> clause of <command>CREATE DATABASE</command>
- if <option>--no-tablespaces</option> is specified (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [49340627f] 2016-08-29 12:16:18 +0100
-Branch: REL9_6_STABLE Release: REL9_6_0 [216fd7fe7] 2016-08-29 12:18:12 +0100
-Branch: REL9_5_STABLE [9050e5c89] 2016-08-29 12:18:57 +0100
-Branch: REL9_5_STABLE [3aa233f82] 2016-08-29 18:12:04 -0300
--->
- <para>
- Make <application>pg_receivexlog</application> work correctly
- with <option>--synchronous</option> without slots (Gabriele Bartolini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow specifying both <option>--source-server</option>
- and <option>--source-target</option> options to <application>pg_rewind</application>
- (Michael Banck)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_rewind</application> turn off <varname>synchronous_commit</varname>
- in its session on the source server (Michael Banck, Michael Paquier)
- </para>
-
- <para>
- This allows <application>pg_rewind</application> to work even when the source
- server is using synchronous replication that is not working for some
- reason.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_xlogdump</application>, retry opening new WAL segments when
- using <option>--follow</option> option (Magnus Hagander)
- </para>
-
- <para>
- This allows for a possible delay in the server's creation of the next
- segment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [bab7823a4] 2016-08-29 14:34:58 +0900
-Branch: REL9_6_STABLE Release: REL9_6_0 [2802b02a5] 2016-08-29 14:35:40 +0900
-Branch: REL9_5_STABLE [7dfb9b479] 2016-08-29 14:35:51 +0900
-Branch: REL9_4_STABLE [314a25fb3] 2016-08-29 14:38:17 +0900
-Branch: REL9_3_STABLE [5833306dd] 2016-08-29 15:51:30 +0900
--->
- <para>
- Fix <application>pg_xlogdump</application> to cope with a WAL file that begins
- with a continuation record spanning more than one page (Pavan
- Deolasee)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [8a503526e] 2016-09-15 09:30:38 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [bea38f34a] 2016-09-15 09:30:37 -0400
-Branch: REL9_5_STABLE [60b6d99da] 2016-09-15 09:30:36 -0400
-Branch: REL9_4_STABLE [1336bd986] 2016-09-15 09:22:52 -0400
--->
- <para>
- Fix <filename>contrib/pg_buffercache</filename> to work
- when <varname>shared_buffers</varname> exceeds 256GB (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6657acc01] 2016-08-17 15:51:10 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [d715b76d1] 2016-08-17 15:51:10 -0400
-Branch: REL9_5_STABLE [509815ed7] 2016-08-17 15:51:10 -0400
-Branch: REL9_4_STABLE [3fa8ec44d] 2016-08-17 15:51:10 -0400
-Branch: REL9_3_STABLE [7baa8bfca] 2016-08-17 15:51:10 -0400
-Branch: REL9_2_STABLE [60bb1bb12] 2016-08-17 15:51:11 -0400
-Branch: REL9_1_STABLE [9942376a5] 2016-08-17 15:51:11 -0400
--->
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [593d4e47d] 2016-09-15 14:42:29 +0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [fcd93e4af] 2016-09-15 12:55:38 +0300
-Branch: REL9_5_STABLE [e2838c580] 2016-09-15 14:51:42 +0300
-Branch: master [5c6df67e0] 2016-09-15 22:52:51 +0300
-Branch: REL9_6_STABLE Release: REL9_6_0 [9895818d5] 2016-09-15 22:45:08 +0300
-Branch: REL9_5_STABLE [48e5ba61e] 2016-09-15 22:38:01 +0300
--->
- <para>
- Support OpenSSL 1.1.0 (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c3a081846] 2016-09-23 15:50:00 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [5a83e2d4e] 2016-09-23 15:50:00 -0400
-Branch: REL9_5_STABLE [025c9a722] 2016-09-23 15:50:00 -0400
-Branch: REL9_4_STABLE [5d41f27a9] 2016-09-23 15:50:00 -0400
--->
- <para>
- Install TAP test infrastructure so that it's available for extension
- testing (Craig Ringer)
- </para>
-
- <para>
- When <productname>PostgreSQL</productname> has been configured
- with <option>--enable-tap-tests</option>, <quote>make install</quote> will now
- install the Perl support files for TAP testing where PGXS can find
- them. This allows non-core extensions to
- use <literal>$(prove_check)</literal> without extra tests.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [8614b39bc] 2016-09-19 14:25:57 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [156f974f5] 2016-09-19 14:27:04 -0400
-Branch: REL9_5_STABLE [52acf020a] 2016-09-19 14:27:08 -0400
-Branch: REL9_4_STABLE [ca93b816f] 2016-09-19 14:27:13 -0400
--->
- <para>
- In MSVC builds, include <application>pg_recvlogical</application> in a
- client-only installation (MauMau)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [a79a68562] 2016-08-18 12:32:42 +0200
-Branch: REL9_6_STABLE Release: REL9_6_0 [191d45793] 2016-08-18 12:37:55 +0200
-Branch: REL9_5_STABLE [a0833b972] 2016-08-18 15:35:12 +0200
-Branch: REL9_4_STABLE [1d990cd8c] 2016-08-18 15:35:26 +0200
-Branch: REL9_3_STABLE [e8aed974b] 2016-08-18 15:35:36 +0200
-Branch: REL9_2_STABLE [35982db49] 2016-08-18 15:35:43 +0200
--->
- <para>
- Update Windows time zone mapping to recognize some time zone names
- added in recent Windows versions (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [39b691f25] 2016-09-02 17:30:02 -0400
-Branch: REL9_6_STABLE Release: REL9_6_0 [32c9950b3] 2016-09-02 17:29:31 -0400
-Branch: REL9_5_STABLE [73a802a41] 2016-09-02 17:29:31 -0400
-Branch: REL9_4_STABLE [7430ac852] 2016-09-02 17:29:32 -0400
-Branch: REL9_3_STABLE [ee78d4885] 2016-09-02 17:29:32 -0400
-Branch: REL9_2_STABLE [1195b8efe] 2016-09-02 17:29:32 -0400
-Branch: REL9_1_STABLE [380dad29d] 2016-09-02 17:29:32 -0400
--->
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-4">
- <title>Release 9.5.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.3.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.4</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.2,
- see <xref linkend="release-9-5-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f0c7b789a] 2016-08-08 10:33:46 -0400
-Branch: REL9_5_STABLE [98b0c6280] 2016-08-08 10:33:46 -0400
-Branch: REL9_4_STABLE [f40618092] 2016-08-08 10:33:47 -0400
-Branch: REL9_3_STABLE [6c954a6a5] 2016-08-08 10:33:47 -0400
-Branch: REL9_2_STABLE [8b32516db] 2016-08-08 10:33:47 -0400
-Branch: REL9_1_STABLE [5327b764a] 2016-08-08 10:33:47 -0400
--->
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [fcd15f135] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [286c8bc64] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [254eb04f1] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [95a6855c5] 2016-08-08 10:07:52 -0400
-Branch: REL9_2_STABLE [e8f4922c8] 2016-08-08 10:07:53 -0400
-Branch: REL9_1_STABLE [a2385cac1] 2016-08-08 10:07:54 -0400
-Branch: master [41f18f021] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [8adff3783] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [6df8ff49d] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [c1b048f49] 2016-08-08 10:07:52 -0400
-Branch: REL9_2_STABLE [f1d0b09cf] 2016-08-08 10:07:53 -0400
-Branch: REL9_1_STABLE [d2dd5df51] 2016-08-08 10:07:54 -0400
-Branch: REL9_2_STABLE [a19edcd24] 2016-08-08 10:07:53 -0400
-Branch: REL9_1_STABLE [c761c9fee] 2016-08-08 10:07:54 -0400
-Branch: master [bd6537185] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [2e5e90d8d] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [18392ed4a] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [395d565ac] 2016-08-08 10:07:52 -0400
-Branch: REL9_2_STABLE [483715529] 2016-08-08 10:07:53 -0400
-Branch: REL9_1_STABLE [2d69f5b12] 2016-08-08 10:07:54 -0400
-Branch: master [142c24c23] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [ec3aebdbd] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [6bec1a6c8] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [0f679d2c1] 2016-08-08 10:07:52 -0400
-Branch: REL9_2_STABLE [ffbdab65d] 2016-08-08 10:07:53 -0400
-Branch: REL9_1_STABLE [61c2cd88d] 2016-08-08 10:07:53 -0400
-Branch: master [c40071717] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [640768ceb] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [aed038795] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [05abd3bcf] 2016-08-08 10:07:52 -0400
-Branch: REL9_2_STABLE [a466ea33c] 2016-08-08 10:07:52 -0400
-Branch: REL9_1_STABLE [ba8c4089d] 2016-08-08 10:07:53 -0400
-Branch: master [9d924e9a6] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [6655c0757] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [afabfcc0e] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [dfb2d8039] 2016-08-08 10:07:51 -0400
-Branch: REL9_2_STABLE [f744e8906] 2016-08-08 10:07:52 -0400
-Branch: REL9_1_STABLE [cf7e5f55b] 2016-08-08 10:07:53 -0400
-Branch: master [984e5beb3] 2016-08-08 10:07:46 -0400
-Branch: REL9_5_STABLE [db951dd19] 2016-08-08 10:07:50 -0400
-Branch: REL9_4_STABLE [fed83cdac] 2016-08-08 10:07:51 -0400
-Branch: REL9_3_STABLE [a44d71351] 2016-08-08 10:07:51 -0400
-Branch: REL9_2_STABLE [0cc3b12d2] 2016-08-08 10:07:52 -0400
-Branch: REL9_1_STABLE [aed766ab5] 2016-08-08 10:07:53 -0400
--->
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4452000f3] 2016-07-26 15:25:02 -0400
-Branch: REL9_5_STABLE [d2ef7758d] 2016-07-26 15:25:02 -0400
-Branch: REL9_4_STABLE [0733188cc] 2016-07-26 15:25:02 -0400
-Branch: REL9_3_STABLE [c235d510e] 2016-07-26 15:25:02 -0400
-Branch: REL9_2_STABLE [bcdd8a194] 2016-07-26 15:25:02 -0400
-Branch: REL9_1_STABLE [d243bf77c] 2016-07-26 15:25:02 -0400
-Branch: master [9492cf86e] 2016-07-28 16:09:15 -0400
-Branch: REL9_5_STABLE [1e2f96f0a] 2016-07-28 16:09:15 -0400
-Branch: REL9_4_STABLE [66f7e4081] 2016-07-28 16:09:15 -0400
-Branch: REL9_3_STABLE [069714387] 2016-07-28 16:09:15 -0400
-Branch: REL9_2_STABLE [7b8526e5d] 2016-07-28 16:09:15 -0400
-Branch: REL9_1_STABLE [c0e5096fc] 2016-07-28 16:09:15 -0400
--->
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [eae1ad9b6] 2016-05-23 19:23:36 -0400
-Branch: REL9_5_STABLE [e504d915b] 2016-05-23 19:23:36 -0400
--->
- <para>
- Fix <quote>unrecognized node type</quote> error for <command>INSERT ... ON
- CONFLICT</command> within a recursive CTE (a <literal>WITH</literal> item) (Peter
- Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [26e66184d] 2016-05-11 16:20:23 -0400
-Branch: REL9_5_STABLE [58d802410] 2016-05-11 16:20:03 -0400
--->
- <para>
- Fix <command>INSERT ... ON CONFLICT</command> to successfully match index
- expressions or index predicates that are simplified during the
- planner's expression preprocessing phase (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9c810a2ed] 2016-07-04 16:09:11 -0400
-Branch: REL9_5_STABLE [31ce32ade] 2016-07-04 16:09:11 -0400
--->
- <para>
- Correctly handle violations of exclusion constraints that apply to
- the target table of an <literal>INSERT ... ON CONFLICT</literal> command,
- but are not one of the selected arbiter indexes (Tom Lane)
- </para>
-
- <para>
- Such a case should raise a normal constraint-violation error, but it
- got into an infinite loop instead.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8a13d5e6d] 2016-05-11 17:06:53 -0400
-Branch: REL9_5_STABLE [428484ce1] 2016-05-11 17:06:53 -0400
--->
- <para>
- Fix <command>INSERT ... ON CONFLICT</command> to not fail if the target
- table has a unique index on OID (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4c56f3269] 2016-06-16 17:16:32 -0400
-Branch: REL9_5_STABLE [a41b14f94] 2016-06-16 17:16:40 -0400
-Branch: REL9_4_STABLE [2a8b5d210] 2016-06-16 17:16:44 -0400
-Branch: REL9_3_STABLE [519445ba2] 2016-06-16 17:16:48 -0400
-Branch: REL9_2_STABLE [f66e0fec3] 2016-06-16 17:16:53 -0400
-Branch: REL9_1_STABLE [7b97dafa2] 2016-06-16 17:16:58 -0400
--->
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [278148907] 2016-07-16 14:42:37 -0400
-Branch: REL9_5_STABLE [884bae143] 2016-07-16 14:42:37 -0400
-Branch: REL9_4_STABLE [59fa0195c] 2016-07-16 14:42:37 -0400
-Branch: REL9_3_STABLE [16e28fcec] 2016-07-16 14:42:37 -0400
-Branch: REL9_2_STABLE [89b301104] 2016-07-16 14:42:37 -0400
-Branch: REL9_1_STABLE [608cc0c41] 2016-07-16 14:42:37 -0400
--->
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0daeba0e9] 2016-07-01 11:40:33 -0400
-Branch: REL9_5_STABLE [40d0bd8d5] 2016-07-01 11:40:22 -0400
-Branch: REL9_4_STABLE [b25d87f91] 2016-07-01 11:40:22 -0400
-Branch: REL9_3_STABLE [b0f20c2ea] 2016-07-01 11:40:22 -0400
--->
- <para>
- Avoid possible crash in <function>pg_get_expr()</function> when inconsistent
- values are passed to it (Michael Paquier, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [9a46324fd] 2016-08-08 11:12:59 -0400
-Branch: REL9_5_STABLE [04cee8f83] 2016-08-08 11:13:25 -0400
-Branch: REL9_4_STABLE [20f870fd7] 2016-08-08 11:13:34 -0400
-Branch: REL9_3_STABLE [43d7a0af5] 2016-08-08 11:13:40 -0400
-Branch: REL9_2_STABLE [b0134fe84] 2016-08-08 11:13:45 -0400
-Branch: REL9_1_STABLE [d555d2642] 2016-08-08 11:13:51 -0400
--->
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [874fe3aea] 2016-06-27 15:57:50 -0400
-Branch: REL9_5_STABLE [1651b9aa2] 2016-06-27 15:57:21 -0400
-Branch: REL9_4_STABLE [dc9e03bf4] 2016-06-27 15:57:21 -0400
-Branch: REL9_3_STABLE [17bfef80e] 2016-06-27 15:57:21 -0400
--->
- <para>
- Do not run the planner on the query contained in <literal>CREATE
- MATERIALIZED VIEW</literal> or <literal>CREATE TABLE AS</literal>
- when <literal>WITH NO DATA</literal> is specified (Michael Paquier,
- Tom Lane)
- </para>
-
- <para>
- This avoids some unnecessary failure conditions, for example if a
- stable function invoked by the materialized view depends on a table
- that doesn't exist yet.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [bfa2ab56b] 2016-07-15 17:49:48 -0700
-Branch: REL9_5_STABLE [1f9534b49] 2016-07-15 17:49:48 -0700
-Branch: REL9_4_STABLE [3d5b227ba] 2016-07-15 17:49:48 -0700
-Branch: REL9_3_STABLE [2e51ae1f6] 2016-07-15 17:49:48 -0700
-Branch: REL9_2_STABLE [941557f18] 2016-07-15 17:49:48 -0700
-Branch: REL9_1_STABLE [37276017f] 2016-07-15 17:49:49 -0700
--->
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [a4d357bfb] 2016-07-15 14:45:37 -0700
-Branch: REL9_5_STABLE [b33e81cba] 2016-07-15 14:45:38 -0700
-Branch: REL9_4_STABLE [f66828ba6] 2016-07-15 14:50:46 -0700
-Branch: REL9_3_STABLE [46acbeb2f] 2016-07-15 14:51:03 -0700
--->
- <para>
- Fix hint bit update during WAL replay of row locking operations
- (Andres Freund)
- </para>
-
- <para>
- The only known consequence of this problem is that row locks held by
- a prepared, but uncommitted, transaction might fail to be enforced
- after a crash and restart.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [533e9c6b0] 2016-07-15 14:17:20 -0400
-Branch: REL9_5_STABLE [649dd1b58] 2016-07-15 14:17:20 -0400
-Branch: REL9_4_STABLE [166873dd0] 2016-07-15 14:17:20 -0400
-Branch: REL9_3_STABLE [6c243f90a] 2016-07-15 14:17:20 -0400
--->
- <para>
- Avoid unnecessary <quote>could not serialize access</quote> errors when
- acquiring <literal>FOR KEY SHARE</literal> row locks in serializable mode
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [69f526aa4] 2016-06-03 15:14:50 -0400
-Branch: REL9_5_STABLE [a102f98e2] 2016-06-03 15:14:35 -0400
-Branch: master [9eaf5be50] 2016-06-03 18:07:14 -0400
-Branch: REL9_5_STABLE [8355897ff] 2016-06-03 18:07:14 -0400
--->
- <para>
- Make sure <quote>expanded</quote> datums returned by a plan node are
- read-only (Tom Lane)
- </para>
-
- <para>
- This avoids failures in some cases where the result of a lower plan
- node is referenced in multiple places in upper nodes. So far as
- core <productname>PostgreSQL</productname> is concerned, only array values
- returned by PL/pgSQL functions are at risk; but extensions might
- use expanded datums for other things.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0b0baf262] 2016-06-16 12:17:38 -0400
-Branch: REL9_5_STABLE [4f5995dd9] 2016-06-16 12:17:11 -0400
-Branch: REL9_4_STABLE [e542bfe61] 2016-06-16 12:17:16 -0400
-Branch: REL9_3_STABLE [29987b2e1] 2016-06-16 12:17:20 -0400
-Branch: REL9_2_STABLE [23ed284a5] 2016-06-16 12:17:25 -0400
-Branch: master [e45e990e4] 2016-06-22 11:55:18 -0400
-Branch: REL9_5_STABLE [f2c28bb1f] 2016-06-22 11:55:24 -0400
-Branch: REL9_4_STABLE [f22a3e5ce] 2016-06-22 11:55:28 -0400
-Branch: REL9_3_STABLE [dafdcbb6c] 2016-06-22 11:55:32 -0400
-Branch: REL9_2_STABLE [dd41661d2] 2016-06-22 11:55:35 -0400
--->
- <para>
- Avoid crash in <literal>postgres -C</literal> when the specified variable
- has a null string value (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [80b346c20] 2016-07-29 12:52:57 -0400
-Branch: REL9_5_STABLE [c8966a925] 2016-07-29 12:53:02 -0400
--->
- <para>
- Prevent unintended waits for the receiver in WAL sender processes
- (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f8c58554d] 2016-06-30 12:37:02 -0400
-Branch: REL9_5_STABLE [8caf9fe62] 2016-06-30 12:37:02 -0400
-Branch: REL9_4_STABLE [1843d88e0] 2016-06-30 12:37:02 -0400
--->
- <para>
- Fix possible loss of large subtransactions in logical decoding
- (Petru-Florin Mihancea)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bcbecbce2] 2016-08-07 13:15:55 -0400
-Branch: REL9_5_STABLE [71dca408c] 2016-08-07 13:15:55 -0400
-Branch: REL9_4_STABLE [c63588feb] 2016-08-07 13:15:55 -0400
--->
- <para>
- Fix failure of logical decoding when a subtransaction contains no
- actual changes (Marko Tiikkaja, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [52e8fc3e2] 2016-05-25 17:48:15 -0400
-Branch: REL9_5_STABLE [b2355a29c] 2016-05-25 17:48:15 -0400
-Branch: REL9_4_STABLE [4b612a78f] 2016-05-25 17:48:15 -0400
-Branch: REL9_3_STABLE [463207630] 2016-05-25 17:48:15 -0400
--->
- <para>
- Ensure that backends see up-to-date statistics for shared catalogs
- (Tom Lane)
- </para>
-
- <para>
- The statistics collector failed to update the statistics file for
- shared catalogs after a request from a regular backend. This problem
- was partially masked because the autovacuum launcher regularly makes
- requests that did cause such updates; however, it became obvious with
- autovacuum disabled.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [22b27b4c9] 2016-05-31 15:55:15 -0400
-Branch: REL9_5_STABLE [47215c16f] 2016-05-31 15:54:46 -0400
-Branch: REL9_4_STABLE [3ffff7257] 2016-05-31 15:54:46 -0400
-Branch: REL9_3_STABLE [a84cad224] 2016-05-31 15:54:47 -0400
--->
- <para>
- Avoid redundant writes of the statistics files when multiple
- backends request updates close together (Tom Lane, Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [996d27397] 2016-05-24 15:20:36 -0400
-Branch: REL9_5_STABLE [a34c3dd50] 2016-05-24 15:20:12 -0400
-Branch: REL9_4_STABLE [defe936ef] 2016-05-24 15:20:12 -0400
-Branch: REL9_3_STABLE [9f3e4c813] 2016-05-24 15:20:12 -0400
-Branch: REL9_2_STABLE [2e7f0c34a] 2016-05-24 15:20:12 -0400
-Branch: REL9_1_STABLE [fe1731fca] 2016-05-24 15:20:12 -0400
-Branch: master [2d2e40e3b] 2016-05-24 15:47:51 -0400
-Branch: REL9_5_STABLE [bbbe2c97e] 2016-05-24 15:47:51 -0400
-Branch: REL9_4_STABLE [edd8873ff] 2016-05-24 15:47:51 -0400
-Branch: REL9_3_STABLE [ff98ae908] 2016-05-24 15:47:51 -0400
-Branch: REL9_2_STABLE [4cf0978ea] 2016-05-24 15:47:51 -0400
-Branch: REL9_1_STABLE [5551dac59] 2016-05-24 15:47:51 -0400
--->
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [e3ad3ffa6] 2016-06-24 18:29:28 -0400
-Branch: REL9_5_STABLE [d372cb173] 2016-06-24 18:29:28 -0400
-Branch: REL9_4_STABLE [61b24fef8] 2016-06-24 18:29:28 -0400
-Branch: REL9_3_STABLE [28f294afd] 2016-06-24 18:29:28 -0400
--->
- <para>
- Prevent possible failure when vacuuming multixact IDs in an
- installation that has been pg_upgrade'd from pre-9.3 (Andrew Gierth,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- The usual symptom of this bug is errors
- like <quote>MultiXactId <replaceable>NNN</replaceable> has not been created
- yet -- apparent wraparound</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f64340e74] 2016-06-06 17:44:17 -0400
-Branch: REL9_5_STABLE [5acc58c5e] 2016-06-06 17:44:17 -0400
-Branch: REL9_4_STABLE [a4400c251] 2016-06-06 17:44:17 -0400
-Branch: REL9_3_STABLE [5f3e0e84b] 2016-06-06 17:44:17 -0400
-Branch: REL9_2_STABLE [3201709de] 2016-06-06 17:44:18 -0400
-Branch: REL9_1_STABLE [32ceb8dfb] 2016-06-06 17:44:18 -0400
--->
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [95bee941b] 2016-08-07 18:52:02 -0400
-Branch: REL9_5_STABLE [cb5c14984] 2016-08-07 18:52:02 -0400
-Branch: REL9_4_STABLE [8f180a6cc] 2016-08-07 18:52:02 -0400
-Branch: REL9_3_STABLE [20a859504] 2016-08-07 18:52:02 -0400
-Branch: REL9_2_STABLE [127d73009] 2016-08-07 18:52:02 -0400
-Branch: REL9_1_STABLE [a449ad095] 2016-08-07 18:52:02 -0400
--->
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [15739393e] 2016-05-10 16:23:54 -0300
-Branch: REL9_5_STABLE [7516cdb76] 2016-05-10 16:23:54 -0300
-Branch: REL9_4_STABLE [e9a273199] 2016-05-10 16:23:54 -0300
-Branch: REL9_3_STABLE [92ebe509e] 2016-05-10 16:23:54 -0300
-Branch: REL9_2_STABLE [ca4c6d043] 2016-05-10 16:23:54 -0300
-Branch: REL9_1_STABLE [2152762c5] 2016-05-10 16:23:54 -0300
--->
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [7392eed7c] 2016-06-02 12:23:01 -0500
-Branch: REL9_5_STABLE [236d569f9] 2016-06-02 12:23:19 -0500
--->
- <para>
- Fix bug in b-tree mark/restore processing (Kevin Grittner)
- </para>
-
- <para>
- This error could lead to incorrect join results or assertion failures
- in a merge join whose inner source node is a b-tree indexscan.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e89526d4f] 2016-08-06 14:28:37 -0400
-Branch: REL9_5_STABLE [ee5d1de04] 2016-08-06 14:28:37 -0400
-Branch: REL9_4_STABLE [98d5f366b] 2016-08-06 14:28:38 -0400
--->
- <para>
- Avoid duplicate buffer lock release when abandoning a b-tree index
- page deletion attempt (Tom Lane)
- </para>
-
- <para>
- This mistake prevented <command>VACUUM</command> from completing in some
- cases involving corrupt b-tree indexes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8cf739de8] 2016-06-24 16:57:36 -0400
-Branch: REL9_5_STABLE [07f69137b] 2016-06-24 16:57:36 -0400
--->
- <para>
- Fix building of large (bigger than <varname>shared_buffers</varname>)
- hash indexes (Tom Lane)
- </para>
-
- <para>
- The code path used for large indexes contained a bug causing
- incorrect hash values to be inserted into the index, so that
- subsequent index searches always failed, except for tuples inserted
- into the index after the initial build.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1acf75725] 2016-07-14 18:45:59 -0400
-Branch: REL9_5_STABLE [503546376] 2016-07-14 18:46:00 -0400
-Branch: REL9_4_STABLE [054052b3a] 2016-07-14 18:46:00 -0400
-Branch: REL9_3_STABLE [57dba87a7] 2016-07-14 18:46:00 -0400
-Branch: REL9_2_STABLE [042009f24] 2016-07-14 18:46:00 -0400
--->
- <para>
- Prevent infinite loop in GiST index build for geometric columns
- containing NaN component values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8a859691d] 2016-06-05 11:53:06 -0400
-Branch: REL9_5_STABLE [a7aa61ffe] 2016-06-05 11:53:06 -0400
--->
- <para>
- Fix possible crash during a nearest-neighbor (<literal>ORDER BY</literal>
- distance) indexscan on a <filename>contrib/btree_gist</filename> index on
- an <type>interval</type> column (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [975ad4e60] 2016-05-30 14:47:22 -0400
-Branch: REL9_5_STABLE [2973d7d02] 2016-05-30 14:47:22 -0400
--->
- <para>
- Fix <quote>PANIC: failed to add BRIN tuple</quote> error when attempting
- to update a BRIN index entry (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8d498a5c8] 2016-08-04 16:06:14 -0400
-Branch: REL9_5_STABLE [c1d6ee879] 2016-08-04 16:06:14 -0400
--->
- <para>
- Fix possible crash during background worker shutdown (Dmitry Ivanov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [baebab3ac] 2016-07-12 18:07:03 -0400
-Branch: REL9_5_STABLE [a0943dbbe] 2016-07-12 18:06:50 -0400
--->
- <para>
- Fix PL/pgSQL's handling of the <literal>INTO</literal> clause
- within <command>IMPORT FOREIGN SCHEMA</command> commands (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [f36ca9af0] 2016-07-17 09:15:37 -0400
-Branch: REL9_5_STABLE [fb279fc7a] 2016-07-17 09:24:06 -0400
-Branch: REL9_4_STABLE [97d741650] 2016-07-17 09:37:33 -0400
-Branch: REL9_3_STABLE [805f2bb53] 2016-07-17 09:38:23 -0400
-Branch: REL9_2_STABLE [6c0be49b2] 2016-07-17 09:39:51 -0400
-Branch: REL9_1_STABLE [84d679204] 2016-07-17 09:41:08 -0400
--->
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [69dc5ae40] 2016-08-05 18:58:12 -0400
-Branch: REL9_5_STABLE [cae0d4f9b] 2016-08-05 18:58:19 -0400
-Branch: REL9_4_STABLE [a3cd60ebf] 2016-08-05 18:58:23 -0400
-Branch: REL9_3_STABLE [c3107f18a] 2016-08-05 18:58:28 -0400
-Branch: REL9_2_STABLE [3e40d9227] 2016-08-05 18:58:32 -0400
-Branch: REL9_1_STABLE [1f63b0e09] 2016-08-05 18:58:36 -0400
--->
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [3ebc88e56] 2016-08-01 15:08:12 +0200
-Branch: REL9_5_STABLE [dc6b20c6b] 2016-08-01 15:09:23 +0200
-Branch: REL9_4_STABLE [057404854] 2016-08-01 15:09:12 +0200
-Branch: REL9_3_STABLE [3ca359426] 2016-08-01 15:08:59 +0200
-Branch: REL9_2_STABLE [295edbecf] 2016-08-01 15:08:48 +0200
-Branch: REL9_1_STABLE [c15f502b6] 2016-08-01 15:08:36 +0200
--->
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e2e95f5ef] 2016-08-02 12:49:40 -0400
-Branch: REL9_5_STABLE [89c30d113] 2016-08-02 12:49:41 -0400
-Branch: REL9_4_STABLE [2ff8a2fc0] 2016-08-02 12:49:04 -0400
-Branch: REL9_3_STABLE [6693c9d7b] 2016-08-02 12:49:09 -0400
-Branch: REL9_2_STABLE [a5a7caaa1] 2016-08-02 12:49:15 -0400
--->
- <para>
- In <application>pg_dump</application> with both <option>-c</option> and <option>-C</option>
- options, avoid emitting an unwanted <literal>CREATE SCHEMA public</literal>
- command (David Johnston, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e652273e0] 2016-06-02 13:28:17 -0400
-Branch: REL9_5_STABLE [404429038] 2016-06-02 13:28:18 -0400
-Branch: REL9_4_STABLE [96aac0e6d] 2016-06-02 13:27:53 -0400
-Branch: REL9_3_STABLE [5c9724305] 2016-06-02 13:27:53 -0400
-Branch: master [6c72a28e5] 2016-06-03 11:29:38 -0400
-Branch: REL9_5_STABLE [ec5622351] 2016-06-03 11:29:20 -0400
-Branch: REL9_4_STABLE [53c2601a5] 2016-06-03 11:29:20 -0400
-Branch: REL9_3_STABLE [4a21c6fd7] 2016-06-03 11:29:20 -0400
--->
- <para>
- Improve handling of <systemitem>SIGTERM</systemitem>/control-C in
- parallel <application>pg_dump</application> and <application>pg_restore</application> (Tom
- Lane)
- </para>
-
- <para>
- Make sure that the worker processes will exit promptly, and also arrange
- to send query-cancel requests to the connected backends, in case they
- are doing something long-running such as a <command>CREATE INDEX</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9abd64ec9] 2016-05-25 12:40:12 -0400
-Branch: REL9_5_STABLE [af6555b80] 2016-05-25 12:39:57 -0400
-Branch: REL9_4_STABLE [ea274b2f4] 2016-05-25 12:39:57 -0400
-Branch: REL9_3_STABLE [1c8205159] 2016-05-25 12:39:57 -0400
--->
- <para>
- Fix error reporting in parallel <application>pg_dump</application>
- and <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- Previously, errors reported by <application>pg_dump</application>
- or <application>pg_restore</application> worker processes might never make it to
- the user's console, because the messages went through the master
- process, and there were various deadlock scenarios that would prevent
- the master process from passing on the messages. Instead, just print
- everything to <literal>stderr</literal>. In some cases this will result in
- duplicate messages (for instance, if all the workers report a server
- shutdown), but that seems better than no message.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [df8d2d8c4] 2016-05-26 10:50:30 -0400
-Branch: REL9_5_STABLE [6479df137] 2016-05-26 10:50:38 -0400
-Branch: REL9_4_STABLE [d32bc204c] 2016-05-26 10:50:42 -0400
-Branch: REL9_3_STABLE [b9784e1f7] 2016-05-26 10:50:46 -0400
--->
- <para>
- Ensure that parallel <application>pg_dump</application>
- or <application>pg_restore</application> on Windows will shut down properly
- after an error (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, it would report the error, but then just sit until
- manually stopped by the user.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [d74048def] 2016-05-26 22:14:23 +0200
-Branch: REL9_5_STABLE [47e596976] 2016-05-26 22:18:04 +0200
--->
- <para>
- Make parallel <application>pg_dump</application> fail cleanly when run against a
- standby server (Magnus Hagander)
- </para>
-
- <para>
- This usage is not supported
- unless <option>--no-synchronized-snapshots</option> is specified, but the
- error was not handled very well.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cae2bb198] 2016-05-26 11:51:04 -0400
-Branch: REL9_5_STABLE [64b296976] 2016-05-26 11:51:11 -0400
-Branch: REL9_4_STABLE [f2f18a37c] 2016-05-26 11:51:16 -0400
-Branch: REL9_3_STABLE [99565a1ef] 2016-05-26 11:51:20 -0400
--->
- <para>
- Make <application>pg_dump</application> behave better when built without zlib
- support (Kyotaro Horiguchi)
- </para>
-
- <para>
- It didn't work right for parallel dumps, and emitted some rather
- pointless warnings in other cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [74d8c95b7] 2016-08-01 17:36:14 +0900
-Branch: REL9_5_STABLE [928e92fda] 2016-08-01 17:37:18 +0900
-Branch: REL9_4_STABLE [dbe56f2a1] 2016-08-01 17:37:41 +0900
-Branch: REL9_3_STABLE [013f42372] 2016-08-01 17:37:53 +0900
-Branch: REL9_2_STABLE [a21617759] 2016-08-01 17:38:00 +0900
-Branch: REL9_1_STABLE [366f4a962] 2016-08-01 17:38:05 +0900
--->
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [e8564ef03] 2016-07-23 20:30:03 -0400
-Branch: REL9_5_STABLE [cf35406f9] 2016-07-23 20:30:40 -0400
-Branch: REL9_4_STABLE [f0c9e4697] 2016-07-23 20:30:44 -0400
-Branch: REL9_3_STABLE [98b7a3cf2] 2016-07-23 20:30:48 -0400
-Branch: REL9_2_STABLE [a4daf59ee] 2016-07-23 20:30:55 -0400
-Branch: REL9_1_STABLE [b1fa6c0eb] 2016-07-23 20:30:59 -0400
--->
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [30b2731bd] 2016-07-09 16:47:38 -0400
-Branch: REL9_5_STABLE [f80395ca1] 2016-07-09 16:47:39 -0400
-Branch: REL9_4_STABLE [02a898b00] 2016-07-09 16:47:39 -0400
-Branch: REL9_3_STABLE [57e9ea2dd] 2016-07-11 11:24:04 -0400
-Branch: REL9_2_STABLE [fdf2ee62e] 2016-07-11 11:24:04 -0400
-Branch: REL9_1_STABLE [71af6c006] 2016-07-11 11:24:04 -0400
--->
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9dd4178ce] 2016-05-27 10:40:20 -0400
-Branch: REL9_5_STABLE [cea17ba07] 2016-05-27 10:40:20 -0400
-Branch: REL9_4_STABLE [c2651cd24] 2016-05-27 10:40:20 -0400
-Branch: REL9_3_STABLE [1f1e70a87] 2016-05-27 10:40:20 -0400
--->
- <para>
- Be more predictable about reporting <quote>statement timeout</quote>
- versus <quote>lock timeout</quote> (Tom Lane)
- </para>
-
- <para>
- On heavily loaded machines, the regression tests sometimes failed due
- to reporting <quote>lock timeout</quote> even though the statement timeout
- should have occurred first.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b3399cb0f] 2016-07-21 13:11:00 -0400
-Branch: REL9_5_STABLE [fd507d542] 2016-07-21 13:11:00 -0400
-Branch: master [9d7abca90] 2016-07-22 15:41:39 -0400
-Branch: REL9_5_STABLE [2aa2533f2] 2016-07-22 15:41:40 -0400
-Branch: master [95810ed8e] 2016-07-21 14:24:07 -0400
-Branch: REL9_5_STABLE [95e8b44f0] 2016-07-21 14:24:07 -0400
-Branch: REL9_4_STABLE [dfddc452d] 2016-07-21 14:24:07 -0400
-Branch: REL9_3_STABLE [0060638c8] 2016-07-21 14:24:07 -0400
-Branch: REL9_2_STABLE [52502e7a5] 2016-07-21 14:24:07 -0400
-Branch: REL9_1_STABLE [f61ecd01e] 2016-07-21 14:24:07 -0400
-Branch: master [d70d11915] 2016-07-21 16:52:35 -0400
-Branch: REL9_5_STABLE [d365dc3d1] 2016-07-21 16:52:36 -0400
-Branch: REL9_4_STABLE [1156a9db8] 2016-07-21 16:52:36 -0400
-Branch: REL9_3_STABLE [e15e7886e] 2016-07-21 16:52:36 -0400
-Branch: REL9_2_STABLE [a1e750553] 2016-07-21 16:52:36 -0400
-Branch: REL9_1_STABLE [ba64aed70] 2016-07-21 16:52:36 -0400
--->
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [19d477aa6] 2016-07-19 15:59:36 -0400
-Branch: REL9_4_STABLE [590a7f82b] 2016-07-19 15:59:36 -0400
-Branch: REL9_3_STABLE [3928132ea] 2016-07-19 15:59:36 -0400
-Branch: REL9_2_STABLE [cd951aa61] 2016-07-19 15:59:36 -0400
-Branch: REL9_1_STABLE [5db14fad0] 2016-07-19 15:59:36 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [0aabe80c6] 2016-07-19 17:53:31 -0400
-Branch: REL9_4_STABLE [bdbcfba35] 2016-07-19 17:53:31 -0400
-Branch: REL9_3_STABLE [f102bd868] 2016-07-19 17:53:31 -0400
-Branch: REL9_2_STABLE [4d37b7cff] 2016-07-19 17:53:31 -0400
-Branch: REL9_1_STABLE [d70df7867] 2016-07-19 17:53:31 -0400
--->
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a629330b2] 2016-08-05 12:59:29 -0400
-Branch: REL9_5_STABLE [3fddd6484] 2016-08-05 12:58:38 -0400
-Branch: REL9_4_STABLE [8080337b0] 2016-08-05 12:58:46 -0400
-Branch: REL9_3_STABLE [5630bd2ec] 2016-08-05 12:58:53 -0400
-Branch: REL9_2_STABLE [7822792f7] 2016-08-05 12:58:58 -0400
-Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-3">
- <title>Release 9.5.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.2.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.3</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.5.2,
- see <xref linkend="release-9-5-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [7c7d4fdda] 2016-04-08 14:11:56 -0400
-Branch: REL9_5_STABLE [a3c17b2af] 2016-05-06 23:47:42 -0400
-Branch: REL9_4_STABLE [e3b14de9f] 2016-05-07 00:10:31 -0400
-Branch: REL9_3_STABLE [a9d8644de] 2016-05-07 00:10:17 -0400
-Branch: REL9_2_STABLE [e3a493ac0] 2016-05-07 00:05:39 -0400
-Branch: REL9_1_STABLE [9b676fd49] 2016-05-07 00:09:37 -0400
--->
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [80f66a9ad] 2016-04-21 20:05:58 -0400
-Branch: REL9_5_STABLE [94c685a7c] 2016-04-21 20:05:58 -0400
-Branch: REL9_4_STABLE [3232c2427] 2016-04-21 20:05:58 -0400
-Branch: REL9_3_STABLE [d9742ac46] 2016-04-21 20:05:58 -0400
-Branch: REL9_2_STABLE [ad2d32b57] 2016-04-21 20:05:58 -0400
-Branch: REL9_1_STABLE [6882dbd34] 2016-04-21 20:05:58 -0400
--->
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [207d5a656] 2016-04-29 20:19:38 -0400
-Branch: REL9_5_STABLE [f25d0619c] 2016-04-29 20:19:38 -0400
-Branch: REL9_4_STABLE [72edc8ffe] 2016-04-29 20:19:38 -0400
-Branch: REL9_3_STABLE [67349e5a8] 2016-04-29 20:19:38 -0400
-Branch: REL9_2_STABLE [f02cb8c9a] 2016-04-29 20:19:38 -0400
--->
- <para>
- Fix incorrect handling of equivalence-class tests in multilevel
- nestloop plans (Tom Lane)
- </para>
-
- <para>
- Given a three-or-more-way equivalence class of variables, such
- as <literal>X.X = Y.Y = Z.Z</literal>, it was possible for the planner to omit
- some of the tests needed to enforce that all the variables are actually
- equal, leading to join rows being output that didn't satisfy
- the <literal>WHERE</literal> clauses. For various reasons, erroneous plans
- were seldom selected in practice, so that this bug has gone undetected
- for a long time.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [abb164655] 2016-04-21 23:17:36 -0400
-Branch: REL9_5_STABLE [81deadd31] 2016-04-21 23:17:36 -0400
--->
- <para>
- Fix corner-case parser failures occurring
- when <xref linkend="guc-operator-precedence-warning"/> is turned on
- (Tom Lane)
- </para>
-
- <para>
- An example is that <literal>SELECT (ARRAY[])::text[]</literal> gave an error,
- though it worked without the parentheses.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f0e766bd7] 2016-04-15 00:02:26 -0400
-Branch: REL9_5_STABLE [edd57377f] 2016-04-15 00:02:26 -0400
-Branch: REL9_4_STABLE [0479eccdc] 2016-04-15 00:02:26 -0400
--->
- <para>
- Fix query-lifespan memory leak in GIN index scans (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bde361fef] 2016-04-20 14:25:15 -0400
-Branch: REL9_5_STABLE [be2754456] 2016-04-20 14:25:15 -0400
-Branch: REL9_4_STABLE [ef35afa35] 2016-04-20 14:25:15 -0400
--->
- <para>
- Fix query-lifespan memory leak and potential index corruption hazard in
- GIN index insertion (Tom Lane)
- </para>
-
- <para>
- The memory leak would typically not amount to much in simple queries,
- but it could be very substantial during a large GIN index build with
- high <varname>maintenance_work_mem</varname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d136d600f] 2016-05-06 12:09:20 -0400
-Branch: REL9_5_STABLE [504af1fe0] 2016-05-06 12:09:20 -0400
-Branch: REL9_4_STABLE [1180868d1] 2016-05-06 12:09:20 -0400
-Branch: REL9_3_STABLE [462456d8d] 2016-05-06 12:09:20 -0400
-Branch: REL9_2_STABLE [11247dd99] 2016-05-06 12:09:20 -0400
-Branch: REL9_1_STABLE [7bad282c3] 2016-05-06 12:09:20 -0400
--->
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1f7c85b82] 2016-04-21 14:20:30 -0400
-Branch: REL9_5_STABLE [4b52cc289] 2016-04-21 14:20:18 -0400
-Branch: REL9_4_STABLE [679c92238] 2016-04-21 14:20:18 -0400
-Branch: REL9_3_STABLE [e5882f26b] 2016-04-21 14:20:18 -0400
-Branch: REL9_2_STABLE [c7c145e4f] 2016-04-21 14:20:18 -0400
-Branch: REL9_1_STABLE [663624e60] 2016-04-21 14:20:18 -0400
--->
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [99f3b5613] 2016-04-04 18:05:23 -0400
-Branch: REL9_5_STABLE [f3d17491c] 2016-04-04 18:05:23 -0400
-Branch: REL9_4_STABLE [28148e258] 2016-04-04 18:05:24 -0400
--->
- <para>
- Disallow newlines in <command>ALTER SYSTEM</command> parameter values
- (Tom Lane)
- </para>
-
- <para>
- The configuration-file parser doesn't support embedded newlines in
- string literals, so we mustn't allow them in values to be inserted
- by <command>ALTER SYSTEM</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8f1911d5e] 2016-04-15 12:11:40 -0400
-Branch: REL9_5_STABLE [8f8e65d34] 2016-04-15 12:11:27 -0400
-Branch: REL9_4_STABLE [8eed31ffb] 2016-04-15 12:11:27 -0400
--->
- <para>
- Fix <command>ALTER TABLE ... REPLICA IDENTITY USING INDEX</command> to
- work properly if an index on OID is selected (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [93c301fc4] 2016-04-08 12:31:53 -0400
-Branch: REL9_5_STABLE [0da7cf6e8] 2016-04-08 12:31:42 -0400
--->
- <para>
- Avoid possible misbehavior after failing to remove a tablespace symlink
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6a3d3965d] 2016-04-14 19:42:21 -0400
-Branch: REL9_5_STABLE [e7a456174] 2016-04-14 19:42:22 -0400
-Branch: REL9_4_STABLE [00456911f] 2016-04-14 19:42:22 -0400
--->
- <para>
- Fix crash in logical decoding on alignment-picky platforms (Tom Lane,
- Andres Freund)
- </para>
-
- <para>
- The failure occurred only with a transaction large enough to spill to
- disk and a primary-key change within that transaction.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [59455018a] 2016-04-28 22:11:18 -0700
-Branch: REL9_5_STABLE [2e1b4adf3] 2016-04-28 22:11:18 -0700
-Branch: REL9_4_STABLE [596f93605] 2016-04-28 22:11:18 -0700
--->
- <para>
- Avoid repeated requests for feedback from receiver while shutting down
- walsender (Nick Cleaton)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cbabb70f3] 2016-04-20 23:48:13 -0400
-Branch: REL9_5_STABLE [0b8e0bf0a] 2016-04-20 23:48:13 -0400
-Branch: REL9_4_STABLE [f05ac711b] 2016-04-20 23:48:13 -0400
-Branch: REL9_3_STABLE [691073bd8] 2016-04-20 23:48:13 -0400
-Branch: REL9_2_STABLE [1b22368ff] 2016-04-20 23:48:13 -0400
-Branch: REL9_1_STABLE [4c1c9f80b] 2016-04-20 23:48:13 -0400
--->
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6cead413b] 2016-04-13 18:58:14 -0400
-Branch: REL9_5_STABLE [fb0f63933] 2016-04-13 18:57:52 -0400
-Branch: REL9_4_STABLE [5daf1012a] 2016-04-13 18:57:52 -0400
-Branch: REL9_3_STABLE [34bf6bc56] 2016-04-13 18:57:52 -0400
-Branch: REL9_2_STABLE [6bb42d520] 2016-04-13 18:57:52 -0400
-Branch: REL9_1_STABLE [3ef1f3a3e] 2016-04-13 18:57:52 -0400
--->
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1a2c17f8e] 2016-05-06 22:05:56 -0400
-Branch: REL9_5_STABLE [196870f2f] 2016-05-06 22:05:51 -0400
-Branch: REL9_4_STABLE [e1aecebc0] 2016-05-06 22:05:51 -0400
-Branch: REL9_3_STABLE [e1d88f983] 2016-05-06 22:05:51 -0400
--->
- <para>
- Fix <application>pg_upgrade</application> to not fail when new-cluster TOAST rules
- differ from old (Tom Lane)
- </para>
-
- <para>
- <application>pg_upgrade</application> had special-case code to handle the
- situation where the new <productname>PostgreSQL</productname> version thinks that
- a table should have a TOAST table while the old version did not. That
- code was broken, so remove it, and instead do nothing in such cases;
- there seems no reason to believe that we can't get along fine without
- a TOAST table if that was okay according to the old version's rules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [213c7df03] 2016-04-26 21:53:58 -0400
-Branch: REL9_5_STABLE [f9989482d] 2016-04-26 21:54:07 -0400
--->
- <para>
- Fix atomic operations for PPC when using IBM's XLC compiler (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [75c24d0f7] 2016-04-18 13:33:06 -0400
-Branch: REL9_5_STABLE [c6a5b6677] 2016-04-18 13:33:07 -0400
-Branch: REL9_4_STABLE [21b7f49eb] 2016-04-18 13:33:07 -0400
-Branch: REL9_3_STABLE [6ec1ff852] 2016-04-18 13:33:07 -0400
-Branch: REL9_2_STABLE [b24f7e280] 2016-04-18 13:33:07 -0400
--->
- <para>
- Reduce the number of SysV semaphores used by a build configured with
- <option>--disable-spinlocks</option> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0ab3595e5] 2016-04-23 16:53:15 -0400
-Branch: REL9_5_STABLE [bdf7744f7] 2016-04-23 16:53:15 -0400
-Branch: REL9_4_STABLE [2a715371c] 2016-04-23 16:53:15 -0400
-Branch: REL9_3_STABLE [252c35895] 2016-04-23 16:53:15 -0400
-Branch: REL9_2_STABLE [0f5491283] 2016-04-23 16:53:15 -0400
-Branch: REL9_1_STABLE [cbff4b708] 2016-04-23 16:53:15 -0400
--->
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [20d4428f0] 2016-04-21 15:44:18 -0400
-Branch: REL9_4_STABLE [5e2fb8862] 2016-04-21 15:44:18 -0400
-Branch: REL9_3_STABLE [8f9518414] 2016-04-21 15:44:18 -0400
-Branch: REL9_2_STABLE [6848827b4] 2016-04-21 15:44:18 -0400
-Branch: REL9_1_STABLE [b2bb59bd5] 2016-04-21 15:44:18 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [125ad539a] 2016-04-21 16:58:47 -0400
-Branch: REL9_5_STABLE [d2e59cbc3] 2016-04-21 16:58:59 -0400
-Branch: REL9_4_STABLE [56dee70d9] 2016-04-21 16:59:04 -0400
-Branch: REL9_3_STABLE [82bf369ed] 2016-04-21 16:59:08 -0400
-Branch: REL9_2_STABLE [b5ebc513d] 2016-04-21 16:59:13 -0400
-Branch: REL9_1_STABLE [9028f404e] 2016-04-21 16:59:17 -0400
--->
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [01a07e6c1] 2016-04-08 12:37:20 -0400
-Branch: REL9_5_STABLE [849167943] 2016-04-08 12:36:59 -0400
-Branch: REL9_4_STABLE [f79a7fa90] 2016-04-08 12:29:31 -0400
-Branch: REL9_3_STABLE [ca5d6edbf] 2016-04-08 12:29:34 -0400
-Branch: REL9_2_STABLE [9e77d0e3c] 2016-04-08 12:29:36 -0400
-Branch: REL9_1_STABLE [d2189a802] 2016-04-08 12:33:29 -0400
--->
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [0fb54de9a] 2016-04-29 08:09:07 -0400
-Branch: REL9_5_STABLE [da52474f3] 2016-04-29 08:06:25 -0400
-Branch: master [7dc549238] 2016-04-29 09:49:31 -0400
-Branch: REL9_5_STABLE [b71b4d852] 2016-04-29 09:50:38 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [23b09e15b] 2016-04-28 11:50:58 -0400
-Branch: REL9_5_STABLE [94a16531b] 2016-04-28 11:51:08 -0400
-Branch: REL9_4_STABLE [65c2eeb00] 2016-04-28 11:51:13 -0400
-Branch: REL9_3_STABLE [707c44fe2] 2016-04-28 11:51:17 -0400
-Branch: REL9_2_STABLE [c563d97c6] 2016-04-28 11:51:22 -0400
-Branch: REL9_1_STABLE [a6c6789c4] 2016-04-28 11:51:26 -0400
--->
- <para>
- Support building with Visual Studio 2015
- (Michael Paquier, Petr Jel&iacute;nek)
- </para>
-
- <para>
- Note that builds made with VS2015 will not run on Windows versions
- before Windows Vista.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [9f633b404] 2016-04-22 05:18:59 -0400
-Branch: REL9_5_STABLE [409c49c64] 2016-04-22 05:19:57 -0400
-Branch: REL9_4_STABLE [c238a4101] 2016-04-22 05:20:07 -0400
-Branch: REL9_3_STABLE [ab5c6d01f] 2016-04-22 05:20:18 -0400
--->
- <para>
- Fix <function>putenv()</function> to work properly with Visual Studio 2013
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7abc15716] 2016-03-29 11:55:19 -0400
-Branch: REL9_5_STABLE [491e84738] 2016-03-29 11:54:57 -0400
-Branch: REL9_4_STABLE [2fed676c9] 2016-03-29 11:54:57 -0400
-Branch: REL9_3_STABLE [11cc7bb88] 2016-03-29 11:54:57 -0400
-Branch: REL9_2_STABLE [b4b06931e] 2016-03-29 11:54:58 -0400
-Branch: REL9_1_STABLE [6cd30292b] 2016-03-29 11:54:58 -0400
--->
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [98f158e41] 2016-05-05 20:08:58 -0400
-Branch: REL9_5_STABLE [4edbb265c] 2016-05-05 20:09:10 -0400
-Branch: REL9_4_STABLE [a5148e800] 2016-05-05 20:09:17 -0400
-Branch: REL9_3_STABLE [d30c67af8] 2016-05-05 20:09:22 -0400
-Branch: REL9_2_STABLE [29d154e36] 2016-05-05 20:09:27 -0400
-Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-2">
- <title>Release 9.5.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.1.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.2</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
-
- <para>
- However, you may need to <command>REINDEX</command> some indexes after applying
- the update, as per the first changelog entry below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [3df9c374e] 2016-03-23 16:03:13 -0400
-Branch: REL9_5_STABLE [8aa6e9780] 2016-03-23 16:04:35 -0400
--->
-
- <listitem>
- <para>
- Disable abbreviated keys for string sorting in non-<literal>C</literal>
- locales (Robert Haas)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> 9.5 introduced logic for speeding up
- comparisons of string data types by using the standard C library
- function <function>strxfrm()</function> as a substitute
- for <function>strcoll()</function>. It now emerges that most versions of
- glibc (Linux's implementation of the C library) have buggy
- implementations of <function>strxfrm()</function> that, in some locales,
- can produce string comparison results that do not
- match <function>strcoll()</function>. Until this problem can be better
- characterized, disable the optimization in all non-<literal>C</literal>
- locales. (<literal>C</literal> locale is safe since it uses
- neither <function>strcoll()</function> nor <function>strxfrm()</function>.)
- </para>
-
- <para>
- Unfortunately, this problem affects not only sorting but also entry
- ordering in B-tree indexes, which means that B-tree indexes
- on <type>text</type>, <type>varchar</type>, or <type>char</type> columns may now
- be corrupt if they sort according to an affected locale and were
- built or modified under <productname>PostgreSQL</productname> 9.5.0 or 9.5.1.
- Users should <command>REINDEX</command> indexes that might be affected.
- </para>
-
- <para>
- It is not possible at this time to give an exhaustive list of
- known-affected locales. <literal>C</literal> locale is known safe, and
- there is no evidence of trouble in English-based locales such
- as <literal>en_US</literal>, but some other popular locales such
- as <literal>de_DE</literal> are affected in most glibc versions.
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [86ebf30fd] 2016-03-28 09:03:20 -0400
-Branch: REL9_5_STABLE [db69e58a0] 2016-03-28 09:03:41 -0400
--->
-
- <listitem>
- <para>
- Maintain row-security status properly in cached plans (Stephen Frost)
- </para>
-
- <para>
- In a session that performs queries as more than one role, the plan
- cache might incorrectly re-use a plan that was generated for another
- role ID, thus possibly applying the wrong set of policies when
- row-level security (RLS) is in use.
- (CVE-2016-2193)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [3e1338475] 2016-03-28 10:57:42 -0300
-Branch: REL9_5_STABLE [bf78a6f10] 2016-03-28 10:57:46 -0300
--->
-
- <listitem>
- <para>
- Add must-be-superuser checks to some
- new <filename>contrib/pageinspect</filename> functions (Andreas Seltenreich)
- </para>
-
- <para>
- Most functions in the <filename>pageinspect</filename> extension that
- inspect <type>bytea</type> values disallow calls by non-superusers,
- but <function>brin_page_type()</function> and <function>brin_metapage_info()</function>
- failed to do so. Passing contrived <type>bytea</type> values to them might
- crash the server or disclose a few bytes of server memory. Add the
- missing permissions checks to prevent misuse.
- (CVE-2016-3065)
- </para>
- </listitem>
-
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [c7111d11b] 2016-03-03 09:53:43 +0000
-Branch: REL9_5_STABLE [bf7ced5e2] 2016-03-03 09:50:38 +0000
--->
-
- <listitem>
- <para>
- Fix incorrect handling of indexed <literal>ROW()</literal> comparisons
- (Simon Riggs)
- </para>
-
- <para>
- Flaws in a minor optimization introduced in 9.5 caused incorrect
- results if the <literal>ROW()</literal> comparison matches the index ordering
- partially but not exactly (for example, differing column order, or the
- index contains both <literal>ASC</literal> and <literal>DESC</literal> columns).
- Pending a better solution, the optimization has been removed.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a298a1e06] 2016-03-09 14:51:22 -0500
-Branch: REL9_5_STABLE [b2ce9485b] 2016-03-09 14:51:01 -0500
-Branch: REL9_4_STABLE [da936200d] 2016-03-09 14:51:01 -0500
-Branch: REL9_3_STABLE [1ab7a160f] 2016-03-09 14:51:01 -0500
-Branch: REL9_2_STABLE [c8e059724] 2016-03-09 14:51:01 -0500
-Branch: REL9_1_STABLE [d485d9581] 2016-03-09 14:51:02 -0500
--->
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [1d4a0ab19] 2016-03-09 18:53:53 -0800
-Branch: REL9_5_STABLE [301cc3549] 2016-03-09 18:53:53 -0800
-Branch: REL9_4_STABLE [4f37d0916] 2016-03-09 18:53:54 -0800
-Branch: REL9_3_STABLE [bfa282a02] 2016-03-09 18:53:54 -0800
-Branch: REL9_2_STABLE [ce8f42919] 2016-03-09 18:53:54 -0800
-Branch: REL9_1_STABLE [a62714fae] 2016-03-09 18:53:54 -0800
-Branch: master [606e0f984] 2016-03-09 18:53:53 -0800
-Branch: REL9_5_STABLE [63b06e8fa] 2016-03-09 18:53:53 -0800
-Branch: REL9_4_STABLE [43b491a81] 2016-03-09 18:53:54 -0800
-Branch: REL9_3_STABLE [e069848a3] 2016-03-09 18:53:54 -0800
-Branch: REL9_2_STABLE [c224d44f7] 2016-03-09 18:53:54 -0800
-Branch: REL9_1_STABLE [d0e47bcd4] 2016-03-09 18:53:54 -0800
--->
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [71404af2a] 2016-03-22 17:56:20 -0400
-Branch: REL9_5_STABLE [d8d5a00b1] 2016-03-22 17:56:06 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect behavior when rechecking a just-modified row in a query
- that does <command>SELECT FOR UPDATE/SHARE</command> and contains some
- relations that need not be locked (Tom Lane)
- </para>
-
- <para>
- Rows from non-locked relations were incorrectly treated as containing
- all NULLs during the recheck, which could result in incorrectly
- deciding that the updated row no longer passes the <literal>WHERE</literal>
- condition, or in incorrectly outputting NULLs.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a9d199f6d] 2016-03-02 23:31:39 -0500
-Branch: REL9_5_STABLE [429d68465] 2016-03-02 23:31:39 -0500
-Branch: REL9_4_STABLE [597e41e45] 2016-03-02 23:31:39 -0500
--->
-
- <listitem>
- <para>
- Fix bug in <function>json_to_record()</function> when a field of its input
- object contains a sub-object with a field name matching one of the
- requested output column names (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [94c745eb1] 2016-02-21 10:30:49 -0500
-Branch: REL9_5_STABLE [68d68ff83] 2016-02-21 10:40:39 -0500
--->
-
- <listitem>
- <para>
- Fix nonsense result from two-argument form
- of <function>jsonb_object()</function> when called with empty arrays
- (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [384dfbde1] 2016-03-23 10:43:13 -0400
-Branch: REL9_5_STABLE [5f95521b3] 2016-03-23 10:43:24 -0400
--->
-
- <listitem>
- <para>
- Fix misbehavior in <function>jsonb_set()</function> when converting a path
- array element into an integer for use as an array subscript
- (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [55c3a04d6] 2016-03-17 15:50:33 -0400
-Branch: REL9_5_STABLE [d0a585c69] 2016-03-17 15:50:33 -0400
-Branch: REL9_4_STABLE [17a250b18] 2016-03-17 15:50:33 -0400
--->
-
- <listitem>
- <para>
- Fix misformatting of negative time zone offsets
- by <function>to_char()</function>'s <literal>OF</literal> format code
- (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [fd658dbb3] 2016-03-15 18:04:39 -0400
-Branch: REL9_5_STABLE [3f14d8d59] 2016-03-15 18:04:48 -0400
--->
-
- <listitem>
- <para>
- Fix possible incorrect logging of waits done by
- <command>INSERT ... ON CONFLICT</command> (Peter Geoghegan)
- </para>
-
- <para>
- Log messages would sometimes claim that the wait was due to an
- exclusion constraint although no such constraint was responsible.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [d34794f7d] 2016-03-06 02:29:04 +0900
-Branch: REL9_5_STABLE [f95f1ce00] 2016-03-06 02:43:17 +0900
-Branch: REL9_4_STABLE [a9613ee69] 2016-03-06 02:43:26 +0900
--->
-
- <listitem>
- <para>
- Ignore <varname>recovery_min_apply_delay</varname> parameter until
- recovery has reached a consistent state (Michael Paquier)
- </para>
-
- <para>
- Previously, standby servers would delay application of WAL records in
- response to <varname>recovery_min_apply_delay</varname> even while replaying
- the initial portion of WAL needed to make their database state valid.
- Since the standby is useless until it's reached a consistent database
- state, this was deemed unhelpful.
- </para>
- </listitem>
-
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [481725c0b] 2016-02-19 08:31:12 +0000
-Branch: REL9_5_STABLE [c479024d3] 2016-02-19 08:31:39 +0000
-Branch: REL9_4_STABLE [6830cae5f] 2016-02-19 08:32:28 +0000
-Branch: REL9_3_STABLE [71e3cff2e] 2016-02-19 08:33:33 +0000
-Branch: REL9_2_STABLE [c063d3c43] 2016-02-19 08:33:52 +0000
-Branch: REL9_1_STABLE [ca32f125b] 2016-02-19 08:35:02 +0000
--->
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [c8f621c43] 2016-03-05 18:02:20 -0800
-Branch: REL9_5_STABLE [5990a034a] 2016-03-05 18:02:20 -0800
-Branch: REL9_4_STABLE [3b94b3a49] 2016-03-05 18:02:20 -0800
-Branch: master [fd45d16f6] 2016-03-06 16:27:20 -0800
-Branch: REL9_5_STABLE [5d1826fe7] 2016-03-06 16:27:20 -0800
-Branch: REL9_4_STABLE [fb3ea0465] 2016-03-06 16:27:20 -0800
-Branch: master [b63bea5fd] 2016-03-07 14:24:03 -0800
-Branch: REL9_5_STABLE [250e5bd71] 2016-03-07 14:24:52 -0800
-Branch: REL9_4_STABLE [e3e84fd35] 2016-03-07 14:24:58 -0800
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [0bda14d54] 2016-03-05 18:02:20 -0800
-Branch: REL9_5_STABLE [e76e365be] 2016-03-05 18:02:20 -0800
-Branch: REL9_4_STABLE [a50f50a65] 2016-03-05 18:02:20 -0800
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [d9e903f3c] 2016-03-05 18:02:20 -0800
-Branch: REL9_5_STABLE [6e759cefe] 2016-03-05 18:02:20 -0800
-Branch: REL9_4_STABLE [465dd92d9] 2016-03-05 18:02:20 -0800
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [7c17aac69] 2016-03-02 23:42:21 -0800
-Branch: REL9_5_STABLE [f8a75881f] 2016-03-02 23:43:42 -0800
--->
-
- <listitem>
- <para>
- Fix assorted bugs in logical decoding (Andres Freund)
- </para>
-
- <para>
- Trouble cases included tuples larger than one page when replica
- identity is <literal>FULL</literal>, <command>UPDATE</command>s that change a
- primary key within a transaction large enough to be spooled to disk,
- incorrect reports of <quote>subxact logged without previous toplevel
- record</quote>, and incorrect reporting of a transaction's commit time.
- </para>
- </listitem>
-
-<!--
-Author: Dean Rasheed <dean.a.rasheed@gmail.com>
-Branch: master [41fedc246] 2016-02-29 12:28:06 +0000
-Branch: REL9_5_STABLE [f1dfcf63d] 2016-02-29 12:31:25 +0000
-Branch: REL9_4_STABLE [9b69d5c1d] 2016-02-29 12:34:33 +0000
--->
-
- <listitem>
- <para>
- Fix planner error with nested security barrier views when the outer
- view has a <literal>WHERE</literal> clause containing a correlated subquery
- (Dean Rasheed)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ab4ff2889] 2016-03-13 16:44:31 -0400
-Branch: REL9_5_STABLE [aa9c4e71c] 2016-03-13 16:44:10 -0400
--->
-
- <listitem>
- <para>
- Fix memory leak in GIN index searches (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [907e4dd2b] 2016-02-28 23:39:20 -0500
-Branch: REL9_5_STABLE [2d43c45e9] 2016-02-28 23:40:04 -0500
-Branch: REL9_4_STABLE [80c925c7b] 2016-02-28 23:40:13 -0500
-Branch: REL9_3_STABLE [0c4457de8] 2016-02-28 23:40:21 -0500
-Branch: REL9_2_STABLE [47792639c] 2016-02-28 23:40:28 -0500
-Branch: REL9_1_STABLE [7d6c58aa1] 2016-02-28 23:40:35 -0500
--->
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b3e05097e] 2016-03-06 19:20:55 -0500
-Branch: REL9_5_STABLE [c2d61adc3] 2016-03-06 19:21:03 -0500
-Branch: REL9_4_STABLE [3fa4715c5] 2016-03-06 19:21:03 -0500
-Branch: REL9_3_STABLE [a35f85a52] 2016-03-06 19:21:03 -0500
-Branch: REL9_2_STABLE [8894c9f79] 2016-03-06 19:21:03 -0500
-Branch: REL9_1_STABLE [fe747b741] 2016-03-06 19:21:03 -0500
--->
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [51e78ab4f] 2016-02-10 19:30:11 -0500
-Branch: REL9_5_STABLE [b10635bb5] 2016-02-10 19:30:11 -0500
-Branch: REL9_4_STABLE [19e469410] 2016-02-10 19:30:12 -0500
-Branch: REL9_3_STABLE [24ce5754a] 2016-02-10 19:30:12 -0500
-Branch: REL9_2_STABLE [64f99a2ee] 2016-02-10 19:30:12 -0500
-Branch: REL9_1_STABLE [e56acbe2a] 2016-02-10 19:30:12 -0500
--->
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [5882ca668] 2016-02-19 22:47:50 -0500
-Branch: REL9_5_STABLE [377a1af56] 2016-02-19 22:48:04 -0500
--->
-
- <listitem>
- <para>
- Fix atomic-operations code used on PPC with IBM's xlc compiler
- (Noah Misch)
- </para>
-
- <para>
- This error led to rare failures of concurrent operations on that
- platform.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [9d9038824] 2016-03-10 14:10:18 +0100
-Branch: REL9_5_STABLE [ad9a15d3f] 2016-03-10 14:10:32 +0100
-Branch: REL9_4_STABLE [8857488b6] 2016-03-10 14:10:41 +0100
-Branch: REL9_3_STABLE [270d8a12e] 2016-03-10 14:10:48 +0100
-Branch: REL9_2_STABLE [78b597808] 2016-03-10 14:10:54 +0100
-Branch: REL9_1_STABLE [3e6385e27] 2016-03-10 14:11:01 +0100
--->
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [9445db925] 2016-03-04 11:53:20 -0500
-Branch: REL9_5_STABLE [0315dfa8f] 2016-03-04 11:57:22 -0500
-Branch: REL9_4_STABLE [8de488d00] 2016-03-04 11:57:23 -0500
-Branch: REL9_3_STABLE [54139ac22] 2016-03-04 11:57:31 -0500
-Branch: REL9_2_STABLE [c658d5a9b] 2016-03-04 11:57:36 -0500
-Branch: REL9_1_STABLE [b4895bf79] 2016-03-04 11:57:40 -0500
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [1bee54e51] 2016-03-14 11:31:22 -0400
-Branch: REL9_4_STABLE [13108dd0e] 2016-03-14 11:31:34 -0400
-Branch: REL9_3_STABLE [0576de5c7] 2016-03-14 11:31:39 -0400
-Branch: REL9_2_STABLE [39b3ea714] 2016-03-14 11:31:44 -0400
-Branch: REL9_1_STABLE [2d61d88d8] 2016-03-14 11:31:49 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [2ffa86962] 2016-02-10 20:34:02 -0500
-Branch: REL9_5_STABLE [725f0ce29] 2016-02-10 20:34:24 -0500
-Branch: REL9_4_STABLE [4492ab53b] 2016-02-10 20:34:30 -0500
-Branch: REL9_3_STABLE [198242ede] 2016-02-10 20:34:35 -0500
-Branch: REL9_2_STABLE [4421b5253] 2016-02-10 20:34:41 -0500
-Branch: REL9_1_STABLE [f97664cf5] 2016-02-10 20:34:48 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b642e50ae] 2016-03-07 10:40:44 -0500
-Branch: REL9_5_STABLE [45b87cc57] 2016-03-07 10:40:53 -0500
-Branch: REL9_4_STABLE [89f8372cb] 2016-03-07 10:40:57 -0500
-Branch: REL9_3_STABLE [b73e81605] 2016-03-07 10:41:01 -0500
-Branch: REL9_2_STABLE [15d43196c] 2016-03-07 10:41:07 -0500
-Branch: REL9_1_STABLE [5a39c7395] 2016-03-07 10:41:11 -0500
--->
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [47211af17] 2016-03-16 23:18:07 -0400
-Branch: REL9_5_STABLE [8ee2e5f78] 2016-03-16 23:18:07 -0400
-Branch: REL9_4_STABLE [23cb32660] 2016-03-16 23:18:07 -0400
-Branch: REL9_3_STABLE [c02aae418] 2016-03-16 23:18:07 -0400
-Branch: REL9_2_STABLE [be6f9ea2e] 2016-03-16 23:18:08 -0400
-Branch: REL9_1_STABLE [1965a8ce1] 2016-03-16 23:18:08 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [3386f34cd] 2016-02-18 18:32:27 -0500
-Branch: REL9_5_STABLE [6f43c4d34] 2016-02-18 18:32:26 -0500
-Branch: REL9_4_STABLE [bec4d0ffb] 2016-02-18 18:32:26 -0500
-Branch: REL9_3_STABLE [bf26c4f44] 2016-02-18 18:32:26 -0500
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, skip creating a deletion script when
- the new data directory is inside the old data directory (Bruce
- Momjian)
- </para>
-
- <para>
- Blind application of the script in such cases would result in loss of
- the new data directory.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [e66197fa2] 2016-03-08 13:42:57 -0800
-Branch: REL9_5_STABLE [68dababfe] 2016-03-08 13:42:58 -0800
-Branch: REL9_4_STABLE [6041d388c] 2016-03-08 13:42:58 -0800
-Branch: REL9_3_STABLE [44f9f1f2d] 2016-03-08 13:42:58 -0800
-Branch: REL9_2_STABLE [ee06c97e4] 2016-03-08 13:42:58 -0800
-Branch: REL9_1_STABLE [c5f1fbbfb] 2016-03-08 13:42:58 -0800
--->
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [66f503868] 2016-02-16 21:08:15 -0500
-Branch: REL9_5_STABLE [2ce19f8a5] 2016-02-16 21:08:15 -0500
-Branch: REL9_4_STABLE [f461fa7d0] 2016-02-16 21:08:15 -0500
-Branch: REL9_3_STABLE [b3ec98c8b] 2016-02-16 21:08:15 -0500
-Branch: REL9_2_STABLE [7d48349fd] 2016-02-16 21:08:15 -0500
-Branch: REL9_1_STABLE [875973f5d] 2016-02-16 21:08:15 -0500
--->
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [48e6c943e] 2016-02-18 15:40:35 -0500
-Branch: REL9_5_STABLE [0276bbd62] 2016-02-18 15:40:35 -0500
-Branch: REL9_4_STABLE [b7547166f] 2016-02-18 15:40:35 -0500
-Branch: REL9_3_STABLE [9dfb5b940] 2016-02-18 15:40:35 -0500
-Branch: REL9_2_STABLE [29f299728] 2016-02-18 15:40:35 -0500
-Branch: REL9_1_STABLE [0f359c7de] 2016-02-18 15:40:36 -0500
--->
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [5d0320105] 2016-03-19 18:36:35 -0400
-Branch: REL9_5_STABLE [2f38b3e7d] 2016-03-19 18:44:04 -0400
-Branch: REL9_4_STABLE [6336ca916] 2016-03-19 18:49:19 -0400
-Branch: REL9_3_STABLE [a0adf3852] 2016-03-19 18:51:01 -0400
-Branch: REL9_2_STABLE [89bf78a9b] 2016-03-19 18:51:01 -0400
-Branch: REL9_1_STABLE [2aa9fd963] 2016-03-19 18:59:41 -0400
--->
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [676265eb7] 2016-03-25 19:03:08 -0400
-Branch: REL9_5_STABLE [31d02ebf7] 2016-03-25 19:03:24 -0400
-Branch: REL9_4_STABLE [de371e68a] 2016-03-25 19:03:32 -0400
-Branch: REL9_3_STABLE [8e16592d4] 2016-03-25 19:03:39 -0400
-Branch: REL9_2_STABLE [96fa37459] 2016-03-25 19:03:47 -0400
-Branch: REL9_1_STABLE [e5fd35cc5] 2016-03-25 19:03:54 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5-1">
- <title>Release 9.5.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.5.0.
- For information about new features in the 9.5 major release, see
- <xref linkend="release-9-5"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.5.1</title>
-
- <para>
- A dump/restore is not required for those running 9.5.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3bb3f42f3] 2016-02-08 10:25:40 -0500
-Branch: REL9_5_STABLE [a61de2bc1] 2016-02-08 10:25:40 -0500
-Branch: REL9_4_STABLE [fdc3139e2] 2016-02-08 10:25:40 -0500
-Branch: REL9_3_STABLE [6403a6b74] 2016-02-08 10:25:40 -0500
-Branch: REL9_2_STABLE [e93516cf7] 2016-02-08 10:25:40 -0500
-Branch: REL9_1_STABLE [98d6b7305] 2016-02-08 10:25:40 -0500
--->
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f867ce551] 2016-02-07 12:29:32 -0500
-Branch: REL9_5_STABLE [129db3cbe] 2016-02-07 12:29:17 -0500
--->
-
- <listitem>
- <para>
- Fix an oversight that caused hash joins to miss joining to some tuples
- of the inner relation in rare cases (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [a6897efab] 2016-02-08 11:03:31 +0100
-Branch: REL9_5_STABLE [87dbc72a7] 2016-02-08 11:03:37 +0100
--->
-
- <listitem>
- <para>
- Avoid pushdown of <literal>HAVING</literal> clauses when grouping sets are
- used (Andrew Gierth)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cc2ca9319] 2016-02-07 14:57:24 -0500
-Branch: REL9_5_STABLE [82406d6ff] 2016-02-07 14:57:24 -0500
--->
-
- <listitem>
- <para>
- Fix deparsing of <literal>ON CONFLICT</literal> arbiter <literal>WHERE</literal>
- clauses (Peter Geoghegan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b8682a715] 2016-01-26 15:38:33 -0500
-Branch: REL9_5_STABLE [2acb682f6] 2016-01-26 15:38:33 -0500
-Branch: REL9_4_STABLE [2b3983158] 2016-01-26 15:38:33 -0500
-Branch: REL9_3_STABLE [9bbfca8fd] 2016-01-26 15:38:33 -0500
-Branch: REL9_2_STABLE [3a7af9d73] 2016-01-26 15:38:33 -0500
-Branch: REL9_1_STABLE [b043df093] 2016-01-26 15:38:33 -0500
--->
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [6a61d1ff9] 2016-01-14 13:06:03 +0100
-Branch: REL9_5_STABLE [3276ca303] 2016-01-14 13:07:20 +0100
-Branch: REL9_4_STABLE [ab49f87d5] 2016-01-14 13:07:35 +0100
-Branch: REL9_3_STABLE [77d8edcf5] 2016-01-14 13:07:45 +0100
-Branch: REL9_2_STABLE [df0bd5a0f] 2016-01-14 13:07:55 +0100
-Branch: REL9_1_STABLE [b1c0f92eb] 2016-01-14 13:08:10 +0100
--->
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7e2247047] 2016-01-29 10:28:02 +0100
-Branch: REL9_5_STABLE [56251f396] 2016-01-29 10:28:02 +0100
-Branch: REL9_4_STABLE [5849b6e32] 2016-01-29 10:28:02 +0100
-Branch: REL9_3_STABLE [db678ca16] 2016-01-29 10:28:03 +0100
-Branch: REL9_2_STABLE [a362cc2e3] 2016-01-29 10:28:03 +0100
-Branch: REL9_1_STABLE [ed5f57218] 2016-01-29 10:28:03 +0100
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a96761391] 2016-01-07 11:59:08 -0300
-Branch: REL9_5_STABLE [744d01c9a] 2016-01-07 11:59:08 -0300
-Branch: REL9_4_STABLE [c7aca3d45] 2016-01-07 11:59:08 -0300
-Branch: REL9_3_STABLE [74d4009b8] 2016-01-07 11:59:08 -0300
-Branch: REL9_2_STABLE [5c4cbd5d1] 2016-01-07 11:59:08 -0300
-Branch: REL9_1_STABLE [b96f6f444] 2016-01-07 11:59:08 -0300
--->
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e72d7d853] 2016-01-13 18:55:27 -0500
-Branch: REL9_5_STABLE [c42df2d46] 2016-01-13 18:55:27 -0500
-Branch: REL9_4_STABLE [7393208b5] 2016-01-13 18:55:27 -0500
-Branch: REL9_3_STABLE [b87403f70] 2016-01-13 18:55:27 -0500
-Branch: REL9_2_STABLE [be2b27651] 2016-01-13 18:55:27 -0500
-Branch: REL9_1_STABLE [5108013db] 2016-01-13 18:55:27 -0500
--->
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [df43fcf45] 2016-01-22 20:04:35 -0300
-Branch: REL9_5_STABLE [1e910cf5b] 2016-01-22 20:04:35 -0300
--->
-
- <listitem>
- <para>
- Fix improper quoting of domain constraint names
- in <application>pg_dump</application> (Elvis Pranskevichus)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0ed707e9b] 2016-02-04 00:26:10 -0500
-Branch: REL9_5_STABLE [b99dd7170] 2016-02-04 00:26:10 -0500
-Branch: REL9_4_STABLE [411e2b0d5] 2016-02-04 00:26:10 -0500
-Branch: REL9_3_STABLE [aefbc208b] 2016-02-04 00:26:10 -0500
-Branch: REL9_2_STABLE [4f58a7003] 2016-02-04 00:26:10 -0500
-Branch: REL9_1_STABLE [9c704632c] 2016-02-04 00:26:10 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [64f5edca2] 2016-02-01 08:23:41 -0500
-Branch: REL9_5_STABLE [829757c8a] 2016-02-01 08:26:07 -0500
-Branch: REL9_4_STABLE [c33d1a8d5] 2016-02-03 09:15:29 -0500
-Branch: REL9_3_STABLE [014796aa3] 2016-02-03 09:19:58 -0500
-Branch: REL9_2_STABLE [b63a4f418] 2016-02-03 09:21:44 -0500
-Branch: REL9_1_STABLE [4c8b07d3c] 2016-02-03 09:25:34 -0500
--->
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [4aecd22d3] 2016-01-05 17:25:12 -0300
-Branch: REL9_5_STABLE [7ef311eb4] 2016-01-05 17:25:12 -0300
--->
-
- <listitem>
- <para>
- Suppress useless warning message when <application>pg_receivexlog</application>
- connects to a pre-9.4 server (Marco Nenciarini)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [866566a69] 2016-01-11 19:55:39 -0500
-Branch: REL9_5_STABLE [db8fa56d6] 2016-01-11 19:55:39 -0500
-Branch: REL9_4_STABLE [22815752e] 2016-01-11 19:55:40 -0500
-Branch: REL9_3_STABLE [0ddeaba7e] 2016-01-11 19:55:40 -0500
-Branch: REL9_2_STABLE [3843ba510] 2016-01-11 19:55:40 -0500
-Branch: master [fb6fcbd33] 2016-01-11 20:06:36 -0500
-Branch: REL9_5_STABLE [5ef26b8de] 2016-01-11 20:06:47 -0500
--->
-
- <listitem>
- <para>
- Avoid dump/reload problems when using both <application>plpython2</application>
- and <application>plpython3</application> (Tom Lane)
- </para>
-
- <para>
- In principle, both versions of <application>PL/Python</application> can be used in
- the same database, though not in the same session (because the two
- versions of <application>libpython</application> cannot safely be used concurrently).
- However, <application>pg_restore</application> and <application>pg_upgrade</application> both
- do things that can fall foul of the same-session restriction. Work
- around that by changing the timing of the check.
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: REL9_4_STABLE [f1b898759] 2015-11-14 13:43:43 -0500
-Branch: REL9_3_STABLE [a37ab812c] 2015-11-14 13:44:09 -0500
-Branch: REL9_2_STABLE [82076c1e4] 2015-11-14 13:53:26 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_5_STABLE [a66c1fcdd] 2016-01-08 11:39:28 -0500
--->
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> regression tests to pass with Python 3.5
- (Peter Eisentraut)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [f4aa3a18a] 2016-02-05 20:22:51 -0500
-Branch: REL9_5_STABLE [0089dd34a] 2016-02-05 20:23:04 -0500
-Branch: REL9_4_STABLE [ed6deeb7a] 2016-02-05 20:23:07 -0500
-Branch: REL9_3_STABLE [34e91736b] 2016-02-05 20:23:11 -0500
-Branch: REL9_2_STABLE [de9766d39] 2016-02-05 20:23:14 -0500
-Branch: REL9_1_STABLE [b1f591c50] 2016-02-05 20:23:19 -0500
--->
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [7a58d19b0] 2016-02-01 13:21:00 +0100
-Branch: REL9_5_STABLE [40482e606] 2016-02-01 13:20:37 +0100
-Branch: REL9_3_STABLE [0b55fef39] 2016-02-01 13:19:10 +0100
-Branch: REL9_2_STABLE [d9ce5d201] 2016-02-01 13:19:34 +0100
-Branch: REL9_1_STABLE [79782b407] 2016-02-01 13:19:43 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_4_STABLE [33b26426e] 2016-02-08 11:10:14 +0100
--->
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e6ecc93a1] 2016-02-03 01:39:48 -0500
-Branch: REL9_5_STABLE [1c291624b] 2016-02-03 01:39:08 -0500
-Branch: REL9_4_STABLE [aa223a037] 2016-02-03 01:39:08 -0500
-Branch: REL9_3_STABLE [1f2b195eb] 2016-02-03 01:39:08 -0500
--->
-
- <listitem>
- <para>
- Fix <function>hstore_to_json_loose()</function>'s test for whether
- an <type>hstore</type> value can be converted to a JSON number (Tom Lane)
- </para>
-
- <para>
- Previously this function could be fooled by non-alphanumeric trailing
- characters, leading to emitting syntactically-invalid JSON.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [9418d79a7] 2016-02-04 21:17:53 -0500
-Branch: REL9_5_STABLE [453d40817] 2016-02-04 21:17:46 -0500
-Branch: REL9_4_STABLE [1f3294c22] 2016-02-04 21:15:57 -0500
-Branch: master [37c84570b] 2016-02-04 22:27:13 -0500
-Branch: REL9_5_STABLE [d160e2a34] 2016-02-04 22:27:38 -0500
-Branch: REL9_4_STABLE [2099b911d] 2016-02-04 22:27:47 -0500
--->
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>, fix bugs triggered by use
- of <literal>tableoid</literal> in data-modifying commands (Etsuro Fujita,
- Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a396144ac] 2016-01-22 11:53:06 -0500
-Branch: REL9_5_STABLE [47acf3add] 2016-01-22 11:53:06 -0500
--->
-
- <listitem>
- <para>
- Fix ill-advised restriction of <literal>NAMEDATALEN</literal> to be less
- than 256 (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3343ea9e8] 2016-01-05 15:47:05 -0500
-Branch: REL9_5_STABLE [8805af088] 2016-01-05 15:47:05 -0500
-Branch: REL9_4_STABLE [8c558b2e9] 2016-01-05 15:47:05 -0500
-Branch: REL9_3_STABLE [6d899f098] 2016-01-05 15:47:05 -0500
--->
-
- <listitem>
- <para>
- Improve reproducibility of build output by ensuring filenames are given
- to the linker in a fixed order (Christoph Berg)
- </para>
-
- <para>
- This avoids possible bitwise differences in the produced executable
- files from one build to the next.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [216d56843] 2016-01-19 23:30:29 -0500
-Branch: REL9_5_STABLE [34bda20ae] 2016-01-19 23:30:29 -0500
-Branch: REL9_4_STABLE [8b3d52801] 2016-01-19 23:30:29 -0500
-Branch: REL9_3_STABLE [7a47262ce] 2016-01-19 23:30:28 -0500
-Branch: REL9_2_STABLE [49d65e857] 2016-01-19 23:30:28 -0500
-Branch: REL9_1_STABLE [b1bc38144] 2016-01-19 23:30:28 -0500
--->
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a73311e52] 2016-02-05 10:59:09 -0500
-Branch: REL9_5_STABLE [37e694632] 2016-02-05 10:59:21 -0500
-Branch: REL9_4_STABLE [31b792f61] 2016-02-05 10:59:26 -0500
-Branch: REL9_3_STABLE [9a3475b84] 2016-02-05 10:59:31 -0500
-Branch: REL9_2_STABLE [32f17a2e7] 2016-02-05 10:59:35 -0500
-Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-5">
- <title>Release 9.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-01-07</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 9.5 include:
- </para>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <link linkend="sql-on-conflict"><command>INSERT</command></link>s
- that would generate constraint conflicts to be turned into
- <command>UPDATE</command>s or ignored
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <literal>GROUP BY</literal> analysis features <link
- linkend="queries-grouping-sets"><literal>GROUPING SETS</literal></link>,
- <link linkend="queries-grouping-sets"><literal>CUBE</literal></link> and
- <link linkend="queries-grouping-sets"><literal>ROLLUP</literal></link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="ddl-rowsecurity">row-level security control</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create mechanisms for tracking
- the <link linkend="replication-origins">progress of replication</link>,
- including methods for identifying the origin of individual changes
- during logical replication
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="brin">Block Range Indexes</link> (<acronym>BRIN</acronym>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Substantial performance improvements for sorting
- </para>
- </listitem>
-
- <listitem>
- <para>
- Substantial performance improvements for multi-CPU machines
- </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>
-<!--
-2015-03-11 [c6b3c93] Tom Lane: Make operator precedence follow the SQL standar..
--->
- <para>
- Adjust <link linkend="sql-precedence">operator precedence</link>
- to match the <acronym>SQL</acronym> standard (Tom Lane)
- </para>
-
- <para>
- The precedence of <literal>&lt;=</literal>, <literal>&gt;=</literal>
- and <literal>&lt;&gt;</literal> has been reduced to match that of
- <literal>&lt;</literal>, <literal>&gt;</literal>
- and <literal>=</literal>. The precedence of <literal>IS</literal> tests
- (e.g., <replaceable>x</replaceable> <literal>IS NULL</literal>) has been reduced to be
- just below these six comparison operators.
- Also, multi-keyword operators beginning with <literal>NOT</literal> now have
- the precedence of their base operator (for example, <literal>NOT
- BETWEEN</literal> now has the same precedence as <literal>BETWEEN</literal>) whereas
- before they had inconsistent precedence, behaving like <literal>NOT</literal>
- with respect to their left operand but like their base operator with
- respect to their right operand. The new configuration
- parameter <xref linkend="guc-operator-precedence-warning"/> can be
- enabled to warn about queries in which these precedence changes result
- in different parsing choices.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-31 [0badb06] Bruce ..: pg_ctl: change default shutdown mode from 'sma..
--->
- <para>
- Change <xref linkend="app-pg-ctl"/>'s default shutdown mode from
- <literal>smart</literal> to <literal>fast</literal> (Bruce Momjian)
- </para>
-
- <para>
- This means the default behavior will be to forcibly cancel existing
- database sessions, not simply wait for them to exit.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-04 [1345cc6] Tom Lane: Use standard casting mechanism to convert type..
--->
- <para>
- Use assignment cast behavior for data type conversions
- in <application>PL/pgSQL</application> assignments, rather than converting to and
- from text (Tom Lane)
- </para>
-
- <para>
- This change causes conversions of Booleans to strings to
- produce <literal>true</literal> or <literal>false</literal>, not <literal>t</literal>
- or <literal>f</literal>. Other type conversions may succeed in more cases
- than before; for example, assigning a numeric value <literal>3.9</literal> 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, <application>PL/pgSQL</application> will fall back to its old
- I/O conversion behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-28 [11a020e] Andres..: Allow escaping of option values for options pas..
--->
- <para>
- Allow characters in <link linkend="libpq-connect-options">server
- command-line options</link> to be escaped with a backslash (Andres Freund)
- </para>
-
- <para>
- 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 <literal>\\</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-08 [9a08841] Stephe..: Change default for include_realm to 1
--->
- <para>
- Change the default value of the GSSAPI <link
- linkend="gssapi-auth"><varname>include_realm</varname></link> parameter to 1, so
- that by default the realm is not removed from a <acronym>GSS</acronym>
- or <acronym>SSPI</acronym> principal name (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-23 [88e9823] Heikki..: Replace checkpoint_segments with min_wal_size a..
-2015-03-15 [a0f5954] Andres..: Increase max_wal_size's default from 128MB to 1..
-2015-06-29 [d661532] Heikki..: Also trigger restartpoints based on max_wal_siz..
--->
- <para>
- Replace configuration parameter <varname>checkpoint_segments</varname>
- with <xref linkend="guc-min-wal-size"/>
- and <xref linkend="guc-max-wal-size"/> (Heikki Linnakangas)
- </para>
-
- <para>
- If you previously adjusted <varname>checkpoint_segments</varname>, the
- following formula will give you an approximately equivalent setting:
-<programlisting>
-max_wal_size = (3 * checkpoint_segments) * 16MB
-</programlisting>
- Note that the default setting for <varname>max_wal_size</varname> is
- much higher than the default <varname>checkpoint_segments</varname> used
- to be, so adjusting it might no longer be necessary.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-18 [df8b7bc] Tom Lane: Improve our mechanism for controlling the Linux..
--->
- <para>
- Control the Linux <acronym>OOM</acronym> killer via new environment
- variables <link
- linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</envar></link>
- and <link
- linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</envar></link>,
- instead of compile-time options <literal>LINUX_OOM_SCORE_ADJ</literal> and
- <literal>LINUX_OOM_ADJ</literal>
- (Gurjeet Singh)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-20 [b06f1f2] Robert..: Put back ssl_renegotiation_limit parameter, bu..
-2015-07-28 [6087d95] Andres..: Remove ssl renegotiation support.
--->
- <para>
- Decommission server configuration
- parameter <varname>ssl_renegotiation_limit</varname>, which was deprecated
- in earlier releases (Andres Freund)
- </para>
-
- <para>
- 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 <productname>PostgreSQL</productname>.
- The <varname>ssl_renegotiation_limit</varname> parameter still exists, but
- cannot be set to anything but zero (disabled). It's not documented
- anymore, either.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-05 [525a489] Tom Lane: Remove the last vestige of server-side autocomm..
--->
- <para>
- Remove server configuration parameter <varname>autocommit</varname>, which
- was already deprecated and non-operational (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-06 [bb8582a] Peter ..: Remove rolcatupdate
--->
- <para>
- Remove the <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>
- catalog's <structfield>rolcatupdate</structfield> field, as it had no usefulness
- (Adam Brightwell)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-13 [28c3667] Magnus..: Consistently set all fields in pg_stat_replica..
--->
- <para>
- The <link
- linkend="pg-stat-replication-view"><structname>pg_stat_replication</structname></link>
- system view's <structfield>sent</structfield> field is now NULL, not zero, when
- it has no valid value (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-17 [89ddd29] Andrew..: Support JSON negative array subscripts everywh..
--->
- <para>
- Allow <type>json</type> and <type>jsonb</type> array extraction operators to
- accept negative subscripts, which count from the end of JSON arrays
- (Peter Geoghegan, Andrew Dunstan)
- </para>
-
- <para>
- Previously, these operators returned <literal>NULL</literal> for negative
- subscripts.
- </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>
-<!--
-2014-11-07 [7516f52] Alvaro..: BRIN: Block Range Indexes
-2015-05-05 [3b6db1f] Alvaro..: Add geometry/range functions to support BRIN in..
-2015-05-15 [b0b7be6] Alvaro..: Add BRIN infrastructure for "inclusion" opclasses
--->
- <para>
- Add <link linkend="brin">Block Range Indexes</link> (<acronym>BRIN</acronym>)
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- <acronym>BRIN</acronym> 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.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-15 [35fcb1b] Heikki..: Allow GiST distance function to return merely ..
--->
- <para>
- Allow queries to perform accurate distance filtering of
- bounding-box-indexed objects (polygons, circles) using <link
- linkend="gist">GiST</link> indexes (Alexander Korotkov, Heikki
- Linnakangas)
- </para>
-
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-26 [d04c8ed] Heikki..: Add support for index-only scans in GiST.
-2015-03-27 [e09b483] Heikki..: Add index-only scan support to btree_gist.
-2015-03-28 [3a20b0e] Heikki..: Add index-only scan support to inet GiST opclass.
-2015-03-30 [0633a60] Heikki..: Add index-only scan support to range type GiST ..
--->
- <para>
- Allow <link linkend="gist">GiST</link> indexes to perform index-only
- scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Add GUC and storage parameter to set the maximum size of GIN pending list.
--->
- <para>
- Add configuration parameter <xref linkend="guc-gin-pending-list-limit"/>
- to control the size of <acronym>GIN</acronym> pending lists (Fujii Masao)
- </para>
-
- <para>
- This value can also be set on a per-index basis as an index storage
- parameter. Previously the pending-list size was controlled
- by <xref linkend="guc-work-mem"/>, which was awkward because
- appropriate values for <varname>work_mem</varname> are often much too large
- for this purpose.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-10 [84aa8ba] Bruce ..: Issue a warning during the creation of hash in..
--->
- <para>
- Issue a warning during the creation of <link
- linkend="indexes-types">hash</link> indexes because they are not
- crash-safe (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-01-19 [4ea51cd] Robert..: Use abbreviated keys for faster sorting of text..
-2014-09-19 [e246b3d] Robert..: Add a fast pre-check for equality of equal-leng..
-2015-05-13 [78efd5c] Robert..: Extend abbreviated key infrastructure to datum ..
--->
- <para>
- Improve the speed of sorting of <type>varchar</type>, <type>text</type>,
- and <type>numeric</type> fields via <quote>abbreviated</quote> keys
- (Peter Geoghegan, Andrew Gierth, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-07 [5ea86e6] Robert..: Use the sortsupport infrastructure in more cas..
--->
- <para>
- Extend the infrastructure that allows sorting to be performed by
- inlined, non-<acronym>SQL</acronym>-callable comparison functions to
- cover <command>CREATE INDEX</command>, <command>REINDEX</command>, and
- <command>CLUSTER</command> (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-10 [45f6240] Heikki..: Pack tuples in a hash join batch densely, to sa..
-2014-09-12 [8cce08f] Robert..: Change NTUP_PER_BUCKET to 1 to improve hash joi..
-2014-10-13 [30d7ae3] Kevin ..: Increase number of hash join buckets for undere..
--->
- <para>
- Improve performance of hash joins (Tomas Vondra, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-25 [5d7962c] Robert..: Change locking regimen around buffer replacement.
-2014-12-25 [d72731a] Andres..: Lockless StrategyGetBuffer clock sweep hot path.
--->
- <para>
- Improve concurrency of shared buffer replacement
- (Robert Haas, Amit Kapila, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-25 [2ed5b87f] Kevin ..: Reduce pinning and buffer content locking for b..
--->
- <para>
- Reduce the number of page locks and pins during index scans (Kevin Grittner)
- </para>
-
- <para>
- The primary benefit of this is to allow index vacuums to be blocked
- less often.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-30 [4b4b680] Andres..: Make backend local tracking of buffer pins memo..
-2015-01-19 [2d115e4] Andres..: Fix various shortcomings of the new PrivateRefC..
--->
- <para>
- Make per-backend tracking of buffer pins more memory-efficient
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-25 [ab5194e] Andres..: Improve LWLock scalability.
--->
- <para>
- Improve lock scalability (Andres Freund)
- </para>
-
- <para>
- This particularly addresses scalability problems when running on
- systems with multiple <acronym>CPU</acronym> sockets.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-15 [f15821e] Tom Lane: Allow join removal in some cases involving a le..
--->
- <para>
- Allow the optimizer to remove unnecessary references to left-joined
- subqueries (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-27 [d222585] Tom Lane: Allow pushdown of WHERE quals into subqueries w..
--->
- <para>
- Allow pushdown of query restrictions into subqueries with <link
- linkend="tutorial-window">window functions</link>, where appropriate
- (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-27 [dcbf594] Stephe..: Improve qual pushdown for RLS and SB views
--->
- <para>
- Allow a non-leakproof function to be pushed down into a security
- barrier view if the function does not receive any view output
- columns (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-24 [45d256c] Tom Lane: Allow planner to use expression-index stats fo..
--->
- <para>
- Teach the planner to use statistics obtained from an expression
- index on a boolean-returning function, when a matching function call
- appears in <literal>WHERE</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-23 [cfb2024] Tom Lane: Make ANALYZE compute basic statistics even for..
--->
- <para>
- Make <command>ANALYZE</command> compute basic statistics (null fraction and
- average column width) even for columns whose data type lacks an
- equality function (Oleksandr Shulgin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-04 [5028f22] Heikki..: Switch to CRC-32C in WAL and other places.
-2015-02-10 [025c024] Heikki..: Speed up CRC calculation using slicing-by-8 alg..
-2015-04-14 [3dc2d62] Heikki..: Use Intel SSE 4.2 CRC instructions where availa..
-
--->
- <para>
- Speed up <acronym>CRC</acronym> (cyclic redundancy check) computations
- and switch to CRC-32C (Abhijit Menon-Sen, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-01-16 [f5ae3ba] Andres..: Make tbm_add_tuples more efficient by caching t..
-2015-01-16 [779fdcd] Tom Lane: Improve new caching logic in tbm_add_tuples().
--->
- <para>
- Improve bitmap index scan performance (Teodor Sigaev, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-01 [9f03ca9] Robert..: Avoid copying index tuples when building an ind..
--->
- <para>
- Speed up <command>CREATE INDEX</command> by avoiding unnecessary memory
- copies (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-02 [3acc10c9] Robert..: Increase the number of buffer mapping partitio..
--->
- <para>
- Increase the number of buffer mapping partitions (Amit Kapila,
- Andres Freund, Robert Haas)
- </para>
-
- <para>
- This improves performance for highly concurrent workloads.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-04-03 [4ff695b1] Alvaro..: Add log_min_autovacuum_duration per-table option
--->
- <para>
- Add per-table autovacuum logging control via new
- <varname>log_autovacuum_min_duration</varname> storage parameter
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-29 [51adcaa] Andres..: Add cluster_name GUC which is included in proce..
--->
- <para>
- Add new configuration parameter <xref linkend="guc-cluster-name"/>
- (Thomas Munro)
- </para>
-
- <para>
- This string, typically set in <link
- linkend="config-setting-configuration-file"><filename>postgresql.conf</filename></link>,
- 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.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-13 [fe550b2] Tom Lane: Invent PGC_SU_BACKEND and mark log_connections..
--->
- <para>
- Prevent non-superusers from changing <xref
- linkend="guc-log-disconnections"/> on connection startup (Fujii Masao)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><acronym>SSL</acronym></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-09-12 [acd08d7] Heikki..: Support Subject Alternative Names in SSL server..
--->
- <para>
- Check <link linkend="libpq-ssl"><quote>Subject Alternative
- Names</quote></link> in <acronym>SSL</acronym> server certificates, if present
- (Alexey Klyukin)
- </para>
-
- <para>
- When they are present, this replaces checks against the certificate's
- <quote>Common Name</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-12 [9029f4b] Magnus..: Add system view pg_stat_ssl
--->
- <para>
- Add system view <link
- linkend="pg-stat-ssl-view"><structname>pg_stat_ssl</structname></link> to report
- <acronym>SSL</acronym> connection information (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL ..
--->
- <para>
- Add <application>libpq</application> functions to return <acronym>SSL</acronym>
- information in an implementation-independent way (Heikki Linnakangas)
- </para>
-
- <para>
- While <link linkend="libpq-pqgetssl"><function>PQgetssl()</function></link> can
- still be used to call <productname>OpenSSL</productname> functions, it is now
- considered deprecated because future versions
- of <application>libpq</application> might support other <acronym>SSL</acronym>
- implementations. When possible, use the new
- functions <link
- linkend="libpq-pqsslattribute"><function>PQsslAttribute()</function></link>, <link
- linkend="libpq-pqsslattributenames"><function>PQsslAttributeNames()</function></link>,
- and <link linkend="libpq-pqsslinuse"><function>PQsslInUse()</function></link>
- to obtain <acronym>SSL</acronym> information in
- an <acronym>SSL</acronym>-implementation-independent way.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-09 [8a0d34e4] Peter ..: libpq: Don't overwrite existing OpenSSL thread..
--->
- <para>
- Make <application>libpq</application> honor any <productname>OpenSSL</productname>
- thread callbacks (Jan Urbanski)
- </para>
-
- <para>
- Previously they were overwritten.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-02-23 [88e9823] Heikki..: Replace checkpoint_segments with min_wal_size a..
-2015-03-15 [a0f5954] Andres..: Increase max_wal_size's default from 128MB to 1..
-2015-06-29 [d661532] Heikki..: Also trigger restartpoints based on max_wal_siz..
--->
- <para>
- Replace configuration parameter <varname>checkpoint_segments</varname>
- with <xref linkend="guc-min-wal-size"/>
- and <xref linkend="guc-max-wal-size"/> (Heikki Linnakangas)
- </para>
-
- <para>
- This change allows the allocation of a large number of <acronym>WAL</acronym>
- files without keeping them after they are no longer needed.
- Therefore the default for <varname>max_wal_size</varname> has been set
- to <literal>1GB</literal>, much larger than the old default
- for <varname>checkpoint_segments</varname>.
- Also note that standby servers perform restartpoints to try to limit
- their WAL space consumption to <varname>max_wal_size</varname>; previously
- they did not pay any attention to <varname>checkpoint_segments</varname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-18 [df8b7bc] Tom Lane: Improve our mechanism for controlling the Linux..
--->
- <para>
- Control the Linux <acronym>OOM</acronym> killer via new environment
- variables <link
- linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</envar></link>
- and <link
- linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</envar></link>
- (Gurjeet Singh)
- </para>
-
- <para>
- The previous <acronym>OOM</acronym> control infrastructure involved
- compile-time options <literal>LINUX_OOM_SCORE_ADJ</literal> and
- <literal>LINUX_OOM_ADJ</literal>, which are no longer supported.
- The new behavior is available in all builds.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-03 [73c986a] Alvaro..: Keep track of transaction commit timestamps
--->
- <para>
- Allow recording of transaction
- commit time stamps when configuration parameter <xref
- linkend="guc-track-commit-timestamp"/>
- is enabled (&Aacute;lvaro Herrera, Petr Jel&iacute;nek)
- </para>
-
- <para>
- Time stamp information can be accessed using functions <link
- linkend="functions-commit-timestamp"><function>pg_xact_commit_timestamp()</function></link>
- and <function>pg_last_committed_xact()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-22 [584e35d] Peter ..: Change local_preload_libraries to PGC_USERSET
--->
- <para>
- Allow <xref linkend="guc-local-preload-libraries"/> to be set
- by <command>ALTER ROLE SET</command> (Peter Eisentraut, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-03 [a75fb9b] Alvaro..: Have autovacuum workers listen to SIGHUP, too
--->
- <para>
- Allow <link linkend="autovacuum">autovacuum workers</link>
- to respond to configuration parameter changes during a run
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-20 [3bdcf6a] Andres..: Don't allow to disable backend assertions via t..
--->
- <para>
- Make configuration parameter <xref linkend="guc-debug-assertions"/>
- read-only (Andres Freund)
- </para>
-
- <para>
- This means that assertions can no longer be turned
- off if they were enabled at compile time, allowing for more
- efficient code optimization. This change also removes the <link
- linkend="app-postgres-options">postgres</link> <option>-A</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-18 [7feaccc] Peter ..: Allow setting effective_io_concurrency even on..
--->
- <para>
- Allow setting <xref linkend="guc-effective-io-concurrency"/> on
- systems where it has no effect (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-08 [a97e0c3] Stephe..: Add pg_file_settings view and function
-2015-06-28 [62d16c7] Tom Lane: Improve design and implementation of pg_file_se..
--->
- <para>
- Add system view <link
- linkend="view-pg-file-settings"><structname>pg_file_settings</structname></link>
- to show the contents of the server's configuration files
- (Sawada Masahiko)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-14 [a486e35] Peter ..: Add pg_settings.pending_restart column
--->
- <para>
- Add <structname>pending_restart</structname> to the system view <link
- linkend="view-pg-settings"><structname>pg_settings</structname></link> to
- indicate a change has been made but will not take effect until a
- database restart (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-02 [bd3b7a9] Fujii ..: Support ALTER SYSTEM RESET command.
--->
- <para>
- Allow <link linkend="sql-altersystem"><command>ALTER SYSTEM</command></link>
- values to be reset with <command>ALTER SYSTEM RESET</command> (Vik
- Fearing)
- </para>
-
- <para>
- This command removes the specified setting
- from <filename>postgresql.auto.conf</filename>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-04-29 [5aa2350] Andres..: Introduce replication progress tracking infrast..
--->
- <para>
- Create mechanisms for tracking
- the <link linkend="replication-origins">progress of replication</link>,
- including methods for identifying the origin of individual changes
- during logical replication (Andres Freund)
- </para>
-
- <para>
- This is helpful when implementing replication solutions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-26 [bd7c348] Andres..: Rework the way multixact truncations work.
-2015-09-26 [6e8af37] Andres..: Remove legacy multixact truncation support.
--->
- <para>
- Rework truncation of the multixact commit log to be properly
- WAL-logged (Andres Freund)
- </para>
-
- <para>
- This makes things substantially simpler and more robust.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-25 [aedccb1] Simon ..: action_at_recovery_target recovery config option
-2014-12-07 [b8e33a8] Simon ..: Tweaks for recovery_target_action
-2015-03-15 [51c11a7] Andres..: Remove pause_at_recovery_target recovery.conf s..
--->
- <para>
- Add <filename>recovery.conf</filename>
- parameter <varname>recovery_target_action</varname>
- to control post-recovery activity (Petr Jel&iacute;nek)
- </para>
-
- <para>
- This replaces the old parameter <varname>pause_at_recovery_target</varname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-15 [ffd3774] Heikki..: Add archive_mode='always' option.
--->
- <para>
- Add new <xref linkend="guc-archive-mode"/> value
- <literal>always</literal> to allow standbys to always archive received
- <acronym>WAL</acronym> files (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-23 [5d2b45e] Fujii ..: Add GUC to control the time to wait before retr..
--->
- <para>
- Add configuration
- parameter <xref linkend="guc-wal-retrieve-retry-interval"/> to
- control <acronym>WAL</acronym> read retry after failure
- (Alexey Vasiliev, Michael Paquier)
- </para>
-
- <para>
- This is particularly helpful for warm standbys.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-11 [57aa5b2] Fujii ..: Add GUC to enable compression of full page imag..
--->
- <para>
- Allow compression of full-page images stored in <acronym>WAL</acronym>
- (Rahila Syed, Michael Paquier)
- </para>
-
- <para>
- This feature reduces WAL volume, at the cost of more CPU time spent
- on WAL logging and WAL replay. It is controlled by a new
- configuration parameter <xref linkend="guc-wal-compression"/>, which
- currently is off by default.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-08 [de76884] Heikki..: At promotion, archive last segment from old tim..
--->
- <para>
- Archive <acronym>WAL</acronym> files with suffix <literal>.partial</literal>
- during standby promotion (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-13 [4ad2a54] Fujii ..: Add GUC to enable logging of replication comman..
--->
- <para>
- Add configuration parameter <xref
- linkend="guc-log-replication-commands"/>
- to log replication commands (Fujii Masao)
- </para>
-
- <para>
- By default, replication commands, e.g. <link
- linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</literal></link>,
- are not logged, even when <xref linkend="guc-log-statement"/> is set
- to <literal>all</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-21 [d811c03] Andres..: Add 'active_in' column to pg_replication_slots.
--->
- <para>
- Report the processes holding replication slots in <link
- linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname></link>
- (Craig Ringer)
- </para>
-
- <para>
- The new output column is <structname>active_pid</structname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-25 [b3fc672] Heikki..: Allow using connection URI in primary_conninfo.
--->
- <para>
- Allow <filename>recovery.conf</filename>'s
- <varname>primary_conninfo</varname> setting to
- use connection <acronym>URI</acronym>s, e.g. <literal>postgres://</literal>
- (Alexander Shulgin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
-2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
--->
- <para>
- Allow <link linkend="sql-on-conflict"><command>INSERT</command></link>s
- that would generate constraint conflicts to be turned into
- <command>UPDATE</command>s or ignored (Peter Geoghegan, Heikki
- Linnakangas, Andres Freund)
- </para>
-
- <para>
- The syntax is <command>INSERT ... ON CONFLICT DO NOTHING/UPDATE</command>.
- This is the Postgres implementation of the popular
- <command>UPSERT</command> command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-16 [f3d3118] Andres..: Support GROUPING SETS, CUBE and ROLLUP.
--->
- <para>
- Add <literal>GROUP BY</literal> analysis features <link
- linkend="queries-grouping-sets"><literal>GROUPING SETS</literal></link>,
- <link linkend="queries-grouping-sets"><literal>CUBE</literal></link> and
- <link linkend="queries-grouping-sets"><literal>ROLLUP</literal></link>
- (Andrew Gierth, Atri Sharma)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-18 [8f889b1] Tom Lane: Implement UPDATE tab SET (col1,col2,...) = (SEL..
--->
- <para>
- Allow setting multiple target columns in
- an <link linkend="sql-update"><command>UPDATE</command></link> from the result of
- a single sub-SELECT (Tom Lane)
- </para>
-
- <para>
- This is accomplished using the syntax <command>UPDATE tab SET
- (col1, col2, ...) = (SELECT ...)</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-07 [df630b0] Alvaro..: Implement SKIP LOCKED for row-level locks
--->
- <para>
- Add <link linkend="sql-select"><command>SELECT</command></link> option
- <literal>SKIP LOCKED</literal> to skip locked rows (Thomas Munro)
- </para>
-
- <para>
- This does not throw an error for locked rows like
- <literal>NOWAIT</literal> does.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-15 [f6d208d] Simon ..: TABLESAMPLE, SQL Standard and extensible
--->
- <para>
- Add <link linkend="sql-select"><command>SELECT</command></link> option
- <literal>TABLESAMPLE</literal> to return a subset of a table (Petr
- Jel&iacute;nek)
- </para>
-
- <para>
- This feature supports the SQL-standard table sampling methods.
- In addition, there are provisions
- for <link linkend="tablesample-method">user-defined
- table sampling methods</link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-11 [e529cd4] Robert..: Suggest to the user the column they may have m..
--->
- <para>
- Suggest possible matches for mistyped column names (Peter
- Geoghegan, Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-01-16 [20af53d] Tom Lane: Show sort ordering options in EXPLAIN output.
--->
- <para>
- Add more details about sort ordering in <link
- linkend="sql-explain"><command>EXPLAIN</command></link> output (Marius Timmer,
- Lukas Kreft, Arne Scheffer)
- </para>
-
- <para>
- Details include <literal>COLLATE</literal>, <literal>DESC</literal>,
- <literal>USING</literal>, and <literal>NULLS FIRST</literal><literal>/LAST</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-18 [35192f0] Alvaro..: Have VACUUM log number of skipped pages due to ..
--->
- <para>
- Make <link linkend="sql-vacuum"><command>VACUUM</command></link> log the
- number of pages skipped due to pins (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-20 [d42358e] Alvaro..: Have TRUNCATE update pgstat tuple counters
--->
- <para>
- Make <link linkend="sql-truncate"><command>TRUNCATE</command></link> properly
- update the <literal>pg_stat</literal>* tuple counters (Alexander Shulgin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="sql-reindex"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-12-09 [fe263d1] Simon ..: REINDEX SCHEMA
--->
- <para>
- Allow <command>REINDEX</command> to reindex an entire schema using the
- <literal>SCHEMA</literal> option (Sawada Masahiko)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-15 [ecd222e] Fujii ..: Support VERBOSE option in REINDEX command.
--->
- <para>
- Add <literal>VERBOSE</literal> option to <command>REINDEX</command> (Sawada
- Masahiko)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-09 [ae4e688] Simon ..: Silence REINDEX
--->
- <para>
- Prevent <command>REINDEX DATABASE</command> and <command>SCHEMA</command>
- from outputting object names, unless <literal>VERBOSE</literal> is used
- (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-09 [17d436d] Fujii ..: Remove obsolete FORCE option from REINDEX.
--->
- <para>
- Remove obsolete <literal>FORCE</literal> option from <command>REINDEX</command>
- (Fujii Masao)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-09-19 [491c029] Stephe..: Row-Level Security Policies (RLS)
--->
- <para>
- Add <link linkend="ddl-rowsecurity">row-level security control</link>
- (Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean Rasheed,
- Stephen Frost)
- </para>
-
- <para>
- This feature allows row-by-row control over which users can add,
- modify, or even see rows in a table. This is controlled by new
- commands <link linkend="sql-createpolicy"><command>CREATE</command></link>/<link
- linkend="sql-alterpolicy"><command>ALTER</command></link>/<link
- linkend="sql-droppolicy"><command>DROP POLICY</command></link> and <link
- linkend="sql-altertable"><command>ALTER TABLE ... ENABLE/DISABLE
- ROW SECURITY</command></link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-22 [f41872d] Alvaro..: Implement ALTER TABLE .. SET LOGGED / UNLOGGED
--->
- <para>
- Allow changing of the <acronym>WAL</acronym>
- logging status of a table after creation with <link
- linkend="sql-altertable"><command>ALTER TABLE ... SET LOGGED /
- UNLOGGED</command></link> (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-26 [0076f26] Heikki..: Implement IF NOT EXISTS for CREATE SEQUENCE.
-2014-11-06 [08309aa] Fujii ..: Implement IF NOT EXIST for CREATE INDEX.
-2014-12-13 [e39b6f9] Andrew..: Add CINE option for CREATE TABLE AS and CREATE ..
--->
- <para>
- Add <literal>IF NOT EXISTS</literal> clause to <link
- linkend="sql-createtableas"><command>CREATE TABLE AS</command></link>,
- <link linkend="sql-createindex"><command>CREATE INDEX</command></link>,
- <link linkend="sql-createsequence"><command>CREATE SEQUENCE</command></link>,
- and <link linkend="sql-creatematerializedview"><command>CREATE
- MATERIALIZED VIEW</command></link> (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-24 [1d8198b] Bruce ..: Add support for ALTER TABLE IF EXISTS ... RENAM..
--->
- <para>
- Add support for <literal>IF EXISTS</literal> to <link
- linkend="sql-altertable"><command>ALTER TABLE ... RENAME
- CONSTRAINT</command></link> (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-09 [31eae60] Alvaro..: Allow CURRENT/SESSION_USER to be used in certai..
--->
- <para>
- Allow some DDL commands to accept <literal>CURRENT_USER</literal>
- or <literal>SESSION_USER</literal>, meaning the current user or session
- user, in place of a specific user name (Kyotaro Horiguchi,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This feature is now supported in
- <xref linkend="sql-alteruser"/>, <xref linkend="sql-altergroup"/>,
- <xref linkend="sql-alterrole"/>, <xref linkend="sql-grant"/>,
- and <command>ALTER <replaceable>object</replaceable> OWNER TO</command> commands.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-23 [7eca575] Alvaro..: get_object_address: separate domain constraints..
--->
- <para>
- Support comments on <link linkend="sql-createdomain">domain
- constraints</link> (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-05 [0ef0396] Simon ..: Reduce lock levels of some trigger DDL and add ..
--->
- <para>
- Reduce lock levels of some create and alter trigger and foreign
- key commands (Simon Riggs, Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-11 [fa26424] Stephe..: Allow LOCK TABLE .. ROW EXCLUSIVE MODE with IN..
--->
- <para>
- Allow <link linkend="sql-lock"><command>LOCK TABLE ... ROW EXCLUSIVE
- MODE</command></link> for those with <command>INSERT</command> privileges on the
- target table (Stephen Frost)
- </para>
-
- <para>
- Previously this command required <command>UPDATE</command>, <command>DELETE</command>,
- or <command>TRUNCATE</command> privileges.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-23 [e5f455f] Tom Lane: Apply table and domain CHECK constraints in nam.
--->
- <para>
- Apply table and domain <literal>CHECK</literal> constraints in order by name
- (Tom Lane)
- </para>
-
- <para>
- The previous ordering was indeterminate.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-01 [15c82ef] Tom Lane: Refactor CREATE/ALTER DATABASE syntax so option..
-2014-07-01 [fbb1d7d] Tom Lane: Allow CREATE/ALTER DATABASE to manipulate datis..
--->
- <para>
- Allow <link
- linkend="sql-createdatabase"><command>CREATE</command></link>/<link
- linkend="sql-alterdatabase"><command>ALTER DATABASE</command></link>
- to manipulate <structname>datistemplate</structname> and
- <structname>datallowconn</structname> (Vik Fearing)
- </para>
-
- <para>
- This allows these per-database settings to be
- changed without manually modifying the <link
- linkend="catalog-pg-database"><structname>pg_database</structname></link>
- system catalog.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="ddl-foreign-data">Foreign Tables</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-07-10 [59efda3] Tom Lane: Implement IMPORT FOREIGN SCHEMA.
--->
- <para>
- Add support for <xref linkend="sql-importforeignschema"/>
- (Ronan Dunklau, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- This command allows automatic creation of local foreign tables
- that match the structure of existing tables on a remote server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-17 [fc2ac1f] Tom Lane: Allow CHECK constraints to be placed on foreign..
--->
- <para>
- Allow <literal>CHECK</literal> constraints to be placed on foreign tables
- (Shigeru Hanada, Etsuro Fujita)
- </para>
-
- <para>
- Such constraints are assumed to be enforced on the remote server,
- and are not enforced locally. However, they are assumed to hold for
- purposes of query optimization, such
- as <link linkend="ddl-partitioning-constraint-exclusion">constraint
- exclusion</link>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-22 [cb1ca4d] Tom Lane: Allow foreign tables to participate in inherita..
--->
- <para>
- Allow foreign tables to participate in inheritance (Shigeru Hanada,
- Etsuro Fujita)
- </para>
-
- <para>
- To let this work naturally, foreign tables are now allowed to have
- check constraints marked as not valid, and to set storage
- and <type>OID</type> characteristics, even though these operations are
- effectively no-ops for a foreign table.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-01 [e7cb7ee] Robert..: Allow FDWs and custom scan providers to replace..
-2015-05-10 [1a8a4e5] Tom Lane: Code review for foreign/custom join pushdown pa..
--->
- <para>
- Allow foreign data wrappers and custom scans to implement join
- pushdown (KaiGai Kohei)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="event-triggers">Event Triggers</link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-05-11 [b488c58] Alvaro..: Allow on-the-fly capture of DDL event details
--->
- <para>
- Whenever a <literal>ddl_command_end</literal> event trigger is installed,
- capture details of <acronym>DDL</acronym> activity for it to inspect
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This information is available through a set-returning function <link
- linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</function></link>,
- or by inspection of C data structures if that function doesn't
- provide enough detail.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-08 [618c943] Simon ..: Event Trigger for table_rewrite
--->
- <para>
- Allow event triggers on table rewrites caused by <link
- linkend="sql-altertable"><command>ALTER TABLE</command></link> (Dimitri
- Fontaine)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-23 [296f3a6] Alvaro..: Support more commands in event triggers
--->
- <para>
- Add event trigger support for database-level <link
- linkend="sql-comment"><command>COMMENT</command></link>, <link
- linkend="sql-security-label"><command>SECURITY LABEL</command></link>,
- and <link linkend="sql-grant"><command>GRANT</command></link>/<link
- linkend="sql-revoke"><command>REVOKE</command></link> (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-30 [72dd233] Alvaro..: pg_event_trigger_dropped_objects: Add name/args..
-2015-04-06 [e9a077c] Alvaro..: pg_event_trigger_dropped_objects: add is_temp c..
--->
- <para>
- Add columns to the output of <link
- linkend="pg-event-trigger-sql-drop-functions"><function>pg_event_trigger_dropped_objects</function></link>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This allows simpler processing of delete operations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-09-09 [57b1085] Peter ..: Allow empty content in xml type
--->
- <para>
- Allow the <link linkend="datatype-xml"><type>xml</type></link> data type
- to accept empty or all-whitespace content values (Peter Eisentraut)
- </para>
-
- <para>
- This is required by the <acronym>SQL</acronym>/<acronym>XML</acronym>
- specification.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-21 [6f04368] Peter ..: Allow input format xxxx-xxxx-xxxx for macaddr ..
--->
- <para>
- Allow <link linkend="datatype-macaddr"><type>macaddr</type></link> input
- using the format <literal>xxxx-xxxx-xxxx</literal> (Herwin Weststrate)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-18 [417f924] Bruce ..: interval: tighten precision specification
--->
- <para>
- Disallow non-SQL-standard syntax for <link
- linkend="datatype-interval-input"><type>interval</type></link> with
- both precision and field specifications (Bruce Momjian)
- </para>
-
- <para>
- Per the standard, such type specifications should be written as,
- for example, <literal>INTERVAL MINUTE TO SECOND(2)</literal>.
- <productname>PostgreSQL</productname> formerly allowed this to be written as
- <literal>INTERVAL(2) MINUTE TO SECOND</literal>, but it must now be
- written in the standard way.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-01 [89840d7] Tom Lane: Provide real selectivity estimators for inet/ci..
--->
- <para>
- Add selectivity estimators for <link
- linkend="datatype-inet"><type>inet</type></link>/<link
- linkend="datatype-cidr"><type>cidr</type></link> operators and improve
- estimators for text search functions (Emre Hasegeli, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-09 [0c90f67] Andrew..: Add new OID alias type regrole
-2015-05-09 [cb9fa80] Andrew..: Add new OID alias type regnamespace
--->
- <para>
- Add data
- types <link linkend="datatype-oid-table"><type>regrole</type></link>
- and <link linkend="datatype-oid-table"><type>regnamespace</type></link>
- to simplify entering and pretty-printing the <type>OID</type> of a role
- or namespace (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="datatype-json"><acronym>JSON</acronym></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
-2015-05-31 [37def42] Andrew..: Rename jsonb_replace to jsonb_set and allow it ..
--->
- <para>
- Add <type>jsonb</type> functions <link
- linkend="functions-json-processing-table"><function>jsonb_set()</function></link>
- and <link
- linkend="functions-json-processing-table"><function>jsonb_pretty()</function></link>
- (Dmitry Dolgov, Andrew Dunstan, Petr Jel&iacute;nek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-12 [7e354ab] Andrew..: Add several generator functions for jsonb that ..
--->
- <para>
- Add <type>jsonb</type> generator functions <link
- linkend="functions-json-creation-table"><function>to_jsonb()</function></link>,
- <link
- linkend="functions-json-creation-table"><function>jsonb_object()</function></link>,
- <link
- linkend="functions-json-creation-table"><function>jsonb_build_object()</function></link>,
- <link
- linkend="functions-json-creation-table"><function>jsonb_build_array()</function></link>,
- <link
- linkend="functions-aggregate-table"><function>jsonb_agg()</function></link>,
- and <link
- linkend="functions-aggregate-table"><function>jsonb_object_agg()</function></link>
- (Andrew Dunstan)
- </para>
-
- <para>
- Equivalent functions already existed for type <type>json</type>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-03 [b67f1ce] Tom Lane: Reduce json <=> jsonb casts from explicit-only..
--->
- <para>
- Reduce casting requirements to/from <link
- linkend="datatype-json"><type>json</type></link> and <link
- linkend="datatype-json"><type>jsonb</type></link> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-06-11 [908e234] Andrew..: Rename jsonb - text[] operator to #- to avoid a..
--->
- <para>
- Allow <type>text</type>, <type>text</type> array, and <type>integer</type>
- values to be <link linkend="functions-jsonb-op-table">subtracted</link>
- from <type>jsonb</type> documents (Dmitry Dolgov, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
--->
- <para>
- Add <type>jsonb</type> <link
- linkend="functions-jsonb-op-table"><literal>||</literal></link> operator
- (Dmitry Dolgov, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-12 [237a882] Andrew..: Add json_strip_nulls and jsonb_strip_nulls fun..
--->
- <para>
- Add <link
- linkend="functions-json-processing-table"><function>json_strip_nulls()</function></link>
- and <link
- linkend="functions-json-processing-table"><function>jsonb_strip_nulls()</function></link>
- functions to remove JSON null values from documents
- (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-11-11 [1871c89] Fujii ..: Add generate_series(numeric, numeric).
--->
- <para>
- Add <link linkend="functions-srf"><function>generate_series()</function></link>
- for <type>numeric</type> values (Plato Malugin)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-25 [bac2739] Tom Lane: Support arrays as input to array_agg() and ARRA..
--->
- <para>
- Allow <link
- linkend="functions-aggregate-table"><function>array_agg()</function></link> and
- <function>ARRAY()</function> to take arrays as inputs (Ali Akbar, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-18 [13dbc7a] Alvaro..: array_offset() and array_offsets()
-2015-03-30 [97690ea] Alvaro..: Change array_offset to return subscripts, not o..
--->
- <para>
- Add functions <link
- linkend="array-functions-table"><function>array_position()</function></link>
- and <link
- linkend="array-functions-table"><function>array_positions()</function></link>
- to return subscripts of array values (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-15 [4520ba6] Heikki..: Add point <-> polygon distance operator.
--->
- <para>
- Add a <type>point</type>-to-<type>polygon</type> distance operator
- <link linkend="functions-geometry-op-table">&lt;-&gt;</link>
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-27 [8167a38] Jeff D..: Allow multibyte characters as escape in SIMILA..
--->
- <para>
- Allow multibyte characters as escapes in <link
- linkend="functions-similarto-regexp"><literal>SIMILAR TO</literal></link>
- and <link linkend="functions-string-sql"><literal>SUBSTRING</literal></link>
- (Jeff Davis)
- </para>
-
- <para>
- Previously, only a single-byte character was allowed as an escape.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-09 [e80252d] Tom Lane: Add width_bucket(anyelement, anyarray).
--->
- <para>
- Add a <link
- linkend="functions-math-func-table"><function>width_bucket()</function></link>
- variant that supports any sortable data type and non-uniform bucket
- widths (Petr Jel&iacute;nek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-06-28 [cb2acb1] Heikki..: Add missing_ok option to the SQL functions for..
--->
- <para>
- Add an optional <replaceable>missing_ok</replaceable> argument to <link
- linkend="functions-admin-genfile-table"><function>pg_read_file()</function></link>
- and related functions (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-10 [865f14a] Robert..: Allow named parameters to be specified using =>..
--->
- <para>
- Allow <link linkend="sql-syntax-calling-funcs"><literal>=&gt;</literal></link>
- to specify named parameters in function calls (Pavel Stehule)
- </para>
-
- <para>
- Previously only <literal>:=</literal> could be used. This requires removing
- the possibility for <literal>=&gt;</literal> to be a user-defined operator.
- Creation of user-defined <literal>=&gt;</literal> operators has been issuing
- warnings since PostgreSQL 9.0.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-25 [06bf0dd] Tom Lane: Upgrade src/port/rint.c to be POSIX-compliant.
--->
- <para>
- Add <acronym>POSIX</acronym>-compliant rounding for platforms that use
- PostgreSQL-supplied rounding functions (Pedro Gimeno Fortea)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>System Information Functions and Views</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-12-23 [d7ee82e] Alvaro..: Add SQL-callable pg_get_object_address
-2014-12-30 [a676201] Alvaro..: Add pg_identify_object_as_address
--->
- <para>
- Add function <link
- linkend="functions-info-object-table"><function>pg_get_object_address()</function></link>
- to return <type>OID</type>s that uniquely
- identify an object, and function <link
- linkend="functions-info-object-table"><function>pg_identify_object_as_address()</function></link>
- to return object information based on <type>OID</type>s (&Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-19 [bf03889] Stephe..: GetUserId() changes to has_privs_of_role()
--->
- <para>
- Loosen security checks for viewing queries in <link
- linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname></link>,
- executing <link
- linkend="functions-admin-signal-table"><function>pg_cancel_backend()</function></link>,
- and executing <link
- linkend="functions-admin-signal-table"><function>pg_terminate_backend()</function></link>
- (Stephen Frost)
- </para>
-
- <para>
- Previously, only the specific role owning the target session could
- perform these operations; now membership in that role is sufficient.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-02-19 [2fb7a75] Tom Lane: Add pg_stat_get_snapshot_timestamp() to show s..
--->
- <para>
- Add <link
- linkend="monitoring-stats-funcs-table"><function>pg_stat_get_snapshot_timestamp()</function></link>
- to output the time stamp of the statistics snapshot (Matt Kelly)
- </para>
-
- <para>
- This represents the last time the snapshot file was written to
- the file system.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-10 [36ad1a8] Bruce ..: Implement mxid_age() to compute multi-xid age
--->
- <para>
- Add <link
- linkend="vacuum-for-multixact-wraparound"><function>mxid_age()</function></link>
- to compute multi-xid age (Bruce Momjian)
- </para>
- </listitem>
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Aggregates</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-08-28 [6c40f83] Tom Lane: Add min and max aggregates for inet/cidr data t..
--->
- <para>
- Add <function>min()</function>/<function>max()</function> aggregates
- for <link linkend="datatype-inet"><type>inet</type></link>/<link
- linkend="datatype-cidr"><type>cidr</type></link> data types (Haribabu
- Kommi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-20 [8122e14] Andres..: Add, optional, support for 128bit integers.
-2015-03-20 [959277a] Andres..: Use 128-bit math to accelerate some aggregation..
--->
- <para>
- Use 128-bit integers, where supported, as accumulators for some
- aggregate functions (Andreas Karlsson)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-07-03 [8b6010b] Tom Lane: Improve support for composite types in PL/Python.
--->
- <para>
- Improve support for composite types in <link
- linkend="plpython"><application>PL/Python</application></link> (Ed Behn, Ronan
- Dunklau)
- </para>
-
- <para>
- This allows <application>PL/Python</application> functions to return arrays
- of composite types.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-11 [1ce7a57] Peter ..: PL/Python: Avoid lossiness in float conversion
--->
- <para>
- Reduce lossiness of <link
- linkend="plpython"><application>PL/Python</application></link> floating-point value
- conversions (Marko Kreen)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-26 [cac7658] Peter ..: Add transforms feature
--->
- <para>
- Allow specification of conversion routines between <acronym>SQL</acronym>
- data types and data types of procedural languages (Peter Eisentraut)
- </para>
-
- <para>
- This change adds new commands <link
- linkend="sql-createtransform"><command>CREATE</command></link>/<link
- linkend="sql-droptransform"><command>DROP TRANSFORM</command></link>.
- This also adds optional transformations between the <link
- linkend="hstore"><application>hstore</application></link> and <link
- linkend="ltree"><application>ltree</application></link> types to/from <link
- linkend="plperl"><application>PL/Perl</application></link> and <link
- linkend="plpython"><application>PL/Python</application></link>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-05-14 [1dc5ebc] Tom Lane: Support "expanded" objects, particularly arrays..
-2015-02-16 [e983c4d] Tom Lane: Rationalize the APIs of array element/slice acc..
-2015-02-18 [56a79a8] Tom Lane: Split array_push into separate array_append and..
-2015-02-16 [9e3ad1a] Tom Lane: Use fast path in plpgsql's RETURN/RETURN NEXT i..
--->
- <para>
- Improve <link linkend="plpgsql"><application>PL/pgSQL</application></link> array
- performance (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-25 [a4847fc] Tom Lane: Add an ASSERT statement in plpgsql.
--->
- <para>
- Add an <link linkend="plpgsql-statements-assert"><command>ASSERT</command></link>
- statement in <application>PL/pgSQL</application> (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-25 [bb1b8f6] Tom Lane: De-reserve most statement-introducing keywords ..
--->
- <para>
- Allow more <link linkend="plpgsql"><application>PL/pgSQL</application></link>
- keywords to be used as identifiers (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-04-11 [83aca89] Peter ..: Move pg_archivecleanup from contrib/ to src/bin/
-2015-04-19 [00882d9] Peter ..: Move pg_test_fsync from contrib/ to src/bin/
-2015-04-20 [528c2e4] Peter ..: Move pg_test_timing from contrib/ to src/bin/
-2015-04-21 [b0a738f] Peter ..: Move pg_xlogdump from contrib/ to src/bin/
--->
- <para>
- Move <link
- linkend="pgarchivecleanup"><application>pg_archivecleanup</application></link>,
- <link linkend="pgtestfsync"><application>pg_test_fsync</application></link>,
- <link linkend="pgtesttiming"><application>pg_test_timing</application></link>,
- and <link linkend="pgwaldump"><application>pg_xlogdump</application></link>
- from <filename>contrib</filename> to <filename>src/bin</filename> (Peter Eisentraut)
- </para>
-
- <para>
- This should result in these programs being installed by default in
- most installations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-23 [61081e7] Heikki..: Add pg_rewind, for re-synchronizing a master se..
--->
- <para>
- Add <link linkend="app-pgrewind"><application>pg_rewind</application></link>,
- which allows re-synchronizing a master server after failback
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-06 [d9f38c7] Andres..: Add support for managing physical replication s..
--->
- <para>
- Allow <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to manage physical replication slots (Michael Paquier)
- </para>
-
- <para>
- This is controlled via new <option>--create-slot</option> and
- <option>--drop-slot</option> options.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-18 [c4f99d2] Fujii ..: Add &#8211;&#8211;synchronous option to pg_receivexlog, for..
--->
- <para>
- Allow <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to synchronously flush <acronym>WAL</acronym> to storage using new
- <option>--synchronous</option> option (Furuya Osamu, Fujii Masao)
- </para>
-
- <para>
- Without this, <acronym>WAL</acronym> files are fsync'ed only on close.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-01-23 [a179232] Alvaro..: vacuumdb: enable parallel mode
--->
- <para>
- Allow <link linkend="app-vacuumdb"><application>vacuumdb</application></link> to
- vacuum in parallel using new <option>--jobs</option> option (Dilip Kumar)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-12 [5094da9] Alvaro..: vacuumdb: don't prompt for passwords over and ..
--->
- <para>
- In <link linkend="app-vacuumdb"><application>vacuumdb</application></link>, do not
- prompt for the same password repeatedly when multiple connections
- are necessary (Haribabu Kommi, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-15 [458a077] Fujii ..: Support &#8211;&#8211;verbose option in reindexdb.
--->
- <para>
- Add <option>--verbose</option> option to <link
- linkend="app-reindexdb"><application>reindexdb</application></link> (Sawada
- Masahiko)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-12 [72d422a] Andrew..: Map basebackup tablespaces using a tablespace_..
--->
- <para>
- Make <link linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- use a tablespace mapping file when using <application>tar</application> format,
- to support symbolic links and file paths of 100+ characters in length
- on <systemitem class="osname">MS Windows</systemitem> (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-19 [728f152] Andres..: Add rmgr callback to name xlog record types for..
-2014-09-19 [bdd5726] Andres..: Add the capability to display summary statistic..
--->
- <para>
- Add <link linkend="pgwaldump"><application>pg_xlogdump</application></link> option
- <option>--stats</option> to display summary statistics (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-03-31 [9d9991c] Bruce ..: psql: add asciidoc output format
--->
- <para>
- Allow <application>psql</application> to produce AsciiDoc output (Szymon Guz)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-10 [5b214c5] Fujii ..: Add new ECHO mode 'errors' that displays only ..
--->
- <para>
- Add an <literal>errors</literal> mode that displays only failed commands
- to <application>psql</application>'s <varname>ECHO</varname> variable
- (Pavel Stehule)
- </para>
-
- <para>
- This behavior can also be selected with <application>psql</application>'s
- <option>-b</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-12 [a2dabf0] Stephe..: Add unicode_{column|header|border}_style to psql
--->
- <para>
- Provide separate column, header, and border linestyle control
- in <application>psql</application>'s unicode linestyle (Pavel Stehule)
- </para>
-
- <para>
- Single or double lines are supported; the default is
- <literal>single</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-02 [51bb795] Andres..: Add psql PROMPT variable showing which line of ..
--->
- <para>
- Add new option <literal>%l</literal> in <application>psql</application>'s <link
- linkend="app-psql-variables"><envar>PROMPT</envar></link> variables
- to display the current multiline statement line number
- (Sawada Masahiko)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-28 [7655f4c] Andrew..: Add a pager_min_lines setting to psql
--->
- <para>
- Add <literal>\pset</literal> option <link
- linkend="app-psql-meta-commands"><varname>pager_min_lines</varname></link>
- to control pager invocation (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-21 [4077fb4] Andrew..: Fix an error in psql that overcounted output l..
--->
- <para>
- Improve <application>psql</application> line counting used when deciding
- to invoke the pager (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-03 [07338cb] Tom Lane: Clean up some psql issues around handling of t..
-2015-12-08 [e90371d] Tom Lane: Make failure to open psql log-file fatal.
--->
- <para>
- <application>psql</application> now fails if the file specified by
- an <option>--output</option> or <option>--log-file</option> switch cannot be
- written (Tom Lane, Daniel V&eacute;rit&eacute;)
- </para>
-
- <para>
- Previously, it effectively ignored the switch in such cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-12 [bd40951] Andres..: Minimal psql tab completion support for SET se..
--->
- <para>
- Add <application>psql</application> tab completion when setting the
- <xref linkend="guc-search-path"/> variable (Jeff Janes)
- </para>
-
- <para>
- Currently only the first schema can be tab-completed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-23 [631e7f6] Heikki..: Improve tab-completion of DROP and ALTER ENABLE..
--->
- <para>
- Improve <application>psql</application>'s 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>
-<!--
-2014-09-10 [07c8651] Andres..: Add new psql help topics, accessible to both..
--->
- <para>
- Add <application>psql</application> <command>\?</command> help sections
- <literal>variables</literal> and <literal>options</literal> (Pavel Stehule)
- </para>
-
- <para>
- <literal>\? variables</literal> shows <application>psql</application>'s special
- variables and <literal>\? options</literal> shows the command-line options.
- <command>\? commands</command> 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 <literal>--help=<replaceable>section</replaceable></literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-14 [ee80f04] Alvaro..: psql: Show tablespace size in \db+
--->
- <para>
- Show tablespace size in <application>psql</application>'s <literal>\db+</literal>
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-09 [a6f3c1f] Magnus..: Show owner of types in psql \dT+
--->
- <para>
- Show data type owners in <application>psql</application>'s <literal>\dT+</literal>
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-04 [f6f654f] Fujii ..: Allow \watch to display query execution time if..
--->
- <para>
- Allow <application>psql</application>'s <command>\watch</command> to output
- <command>\timing</command> information (Fujii Masao)
- </para>
-
- <para>
- Also prevent <option>--echo-hidden</option> from echoing
- <command>\watch</command> queries, since that is generally unwanted.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-22 [eca2b9b] Andrew..: Rework echo_hidden for \sf and \ef from commit ..
--->
- <para>
- Make <application>psql</application>'s <literal>\sf</literal> and <literal>\ef</literal>
- commands honor <envar>ECHO_HIDDEN</envar> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-12 [e15c4ab] Fujii ..: Add tab-completion for \unset and valid setting..
--->
- <para>
- Improve <application>psql</application> tab completion for <command>\set</command>,
- <command>\unset</command>, and <literal>:variable</literal> names (Pavel
- Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-10 [095d401] Robert..: Tab complete second argument to \c with role n..
--->
- <para>
- Allow tab completion of role names
- in <application>psql</application> <literal>\c</literal> commands (Ian Barwick)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="app-pgdump"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-11-17 [be1cc8f] Simon ..: Add pg_dump &#8211;&#8211;snapshot option
--->
- <para>
- Allow <application>pg_dump</application> to share a snapshot taken by another
- session using <option>--snapshot</option> (Simon Riggs, Michael Paquier)
- </para>
-
- <para>
- The remote snapshot must have been exported by
- <function>pg_export_snapshot()</function> or logical replication slot
- creation. This can be used to share a consistent snapshot
- across multiple <application>pg_dump</application> processes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-21 [5f5e68b] Tom Lane: Adopt the GNU convention for handling tar-arch..
--->
- <para>
- Support table sizes exceeding 8GB in tar archive format (Tom Lane)
- </para>
-
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-07 [7700597] Tom Lane: In pg_dump, show server and pg_dump versions w..
--->
- <para>
- Make <application>pg_dump</application> always print the server and
- <application>pg_dump</application> versions (Jing Wang)
- </para>
-
- <para>
- Previously, version information was only printed in
- <option>--verbose</option> mode.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-06-04 [232cd63] Fujii ..: Remove -i/-ignore-version option from pg_dump..
--->
- <para>
- Remove the long-ignored <option>-i</option>/<option>--ignore-version</option>
- option from <application>pg_dump</application>, <application>pg_dumpall</application>,
- and <application>pg_restore</application> (Fujii Masao)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="app-pg-ctl"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade: allow multiple -o/-O opti..
--->
- <para>
- Support multiple <application>pg_ctl</application> <option>-o</option> options,
- concatenating their values (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-17 [c0e4520] Magnus..: Add option to pg_ctl to choose event source for..
--->
- <para>
- Allow control of <application>pg_ctl</application>'s event source logging
- on <systemitem class="osname">MS Windows</systemitem> (MauMau)
- </para>
-
- <para>
- This only controls <application>pg_ctl</application>, not the server, which
- has separate settings in <filename>postgresql.conf</filename>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-08 [bdb42ba] Noah M..: Don't connect() to a wildcard address in test_..
--->
- <para>
- If the server's listen address is set to a wildcard value
- (<literal>0.0.0.0</literal> in IPv4 or <literal>::</literal> in IPv6), connect via
- the loopback address rather than trying to use the wildcard address
- literally (Kondo Yuta)
- </para>
-
- <para>
- This fix primarily affects Windows, since on other platforms
- <application>pg_ctl</application> will prefer to use a Unix-domain socket.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="pgupgrade"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-04-14 [9fa8b0e] Peter ..: Move pg_upgrade from contrib/ to src/bin/
--->
- <para>
- Move <application>pg_upgrade</application> from <filename>contrib</filename> to
- <filename>src/bin</filename> (Peter Eisentraut)
- </para>
-
- <para>
- In connection with this change, the functionality previously
- provided by the <application>pg_upgrade_support</application> module has been
- moved into the core server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade: allow multiple -o/-O optio..
--->
- <para>
- Support multiple <application>pg_upgrade</application>
- <option>-o</option>/<option>-O</option> options,
- concatenating their values (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-10 [33755e8] Heikki..: Change the way encoding and locale checks are d..
--->
- <para>
- Improve database collation comparisons in
- <application>pg_upgrade</application> (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-25 [2209b39] Bruce ..: pg_upgrade: remove support for 8.3 old clusters
--->
- <para>
- Remove support for upgrading from 8.3 clusters (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="pgbench"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-04-13 [81134af] Peter ..: Move pgbench from contrib/ to src/bin/
--->
- <para>
- Move pgbench from <filename>contrib</filename> to <filename>src/bin</filename>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-30 [3c4c5ac] Tatsuo..: Fix incorrect tps number calculation in "exclu..
--->
- <para>
- Fix calculation of TPS number <quote>excluding connections
- establishing</quote> (Tatsuo Ishii, Fabien Coelho)
- </para>
-
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-13 [98aed6c] Heikki..: Add &#8211;&#8211;latency-limit option to pgbench.
--->
- <para>
- Allow counting of pgbench transactions that take over a specified
- amount of time (Fabien Coelho)
- </para>
-
- <para>
- This is controlled by a new <option>--latency-limit</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-30 [ed802e7] Robert..: pgbench: Allow \setrandom to generate Gaussian..
--->
- <para>
- Allow pgbench to generate Gaussian/exponential distributions
- using <command>\setrandom</command> (Kondo Mitsumasa, Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-02 [878fdcb] Robert..: pgbench: Add a real expression syntax to \set
--->
- <para>
- Allow <application>pgbench</application>'s <command>\set</command> command to handle
- arithmetic expressions containing more than one operator, and add
- <literal>%</literal> (modulo) to the set of operators it supports
- (Robert Haas, Fabien Coelho)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-11-20 [2c03216] Heikki..: Revamp the WAL record format.
--->
- <para>
- Simplify <link linkend="wal"><acronym>WAL</acronym></link> record format
- (Heikki Linnakangas)
- </para>
-
- <para>
- This allows external tools to more easily track what blocks
- are modified.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-15 [4f1b890] Andres..: Merge the various forms of transaction commit &..
--->
- <para>
- Improve the representation of transaction commit and abort WAL
- records (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-25 [b64d92f] Andres..: Add a basic atomic ops API abstracting away pla..
--->
- <para>
- Add atomic memory operations <acronym>API</acronym> (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-07 [0b03e59] Robert..: Introduce custom path and scan providers.
-2014-11-20 [a34fa8e] Tom Lane: Initial code review for CustomScan patch.
-2014-11-21 [c2ea228] Tom Lane: Simplify API for initially hooking custom-path ..
-2014-11-21 [4477704] Tom Lane: Rearrange CustomScan API.
--->
- <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>
-<!--
-2015-05-12 [afb9249] Tom Lane: Add support for doing late row locking in FDWs.
--->
- <para>
- Allow foreign data wrappers to do post-filter locking (Etsuro
- Fujita)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
-2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
--->
- <para>
- Foreign tables can now take part in <command>INSERT ... ON CONFLICT
- DO NOTHING</command> queries (Peter Geoghegan, Heikki Linnakangas,
- Andres Freund)
- </para>
-
- <para>
- Foreign data wrappers must be modified to handle this.
- <command>INSERT ... ON CONFLICT DO UPDATE</command> is not supported on
- foreign tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-12-18 [4a14f13] Tom Lane: Improve hash_create's API for selecting simple-..
--->
- <para>
- Improve <function>hash_create()</function>'s API for selecting
- simple-binary-key hash functions (Teodor Sigaev, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-30 [924bcf4] Robert..: Create an infrastructure for parallel computati..
-2014-10-31 [2bd9e41] Robert..: Support frontend-backend protocol communication..
--->
- <para>
- Improve parallel execution infrastructure (Robert Haas, Amit
- Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-28 [a6d488c] Andres..: Remove Alpha and Tru64 support.
--->
- <para>
- Remove <productname>Alpha</productname> (<acronym>CPU</acronym>) and <systemitem
- class="osname">Tru64</systemitem> (OS) ports (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-06 [4893ccd] Robert..: Remove swpb-based spinlock implementation for A..
--->
- <para>
- Remove swap-byte-based spinlock implementation for
- <acronym>ARM</acronym>v5 and earlier <acronym>CPU</acronym>s (Robert Haas)
- </para>
-
- <para>
- <acronym>ARM</acronym>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>
-<!--
-2015-02-24 [23a7835] Peter ..: Error when creating names too long for tar for..
--->
- <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>
-<!--
-2015-05-19 [0b28ea7] Tom Lane: Avoid collation dependence in indexes of syste..
--->
- <para>
- Change index operator class for columns <link
- linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link>.<structname>provider</structname>
- and <link
- linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</structname></link>.<structname>provider</structname>
- to be <literal>text_pattern_ops</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids possible problems with these indexes when different
- databases of a cluster have different default collations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-09 [0709b7e] Robert..: Change the spinlock primitives to function as c..
--->
- <para>
- Change the spinlock primitives to function as compiler barriers
- (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title>MS Windows</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2014-12-08 [519b075] Simon ..: Use GetSystemTimeAsFileTime directly in win32
-2014-12-08 [8001fe6] Simon ..: Windows: use GetSystemTimePreciseAsFileTime if ..
--->
- <para>
- Allow higher-precision time stamp resolution on <systemitem
- class="osname">Windows 8</systemitem>, <systemitem class="osname">Windows
- Server 2012</systemitem>, and later Windows systems (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-03-18 [f9dead5] Alvaro..: Install shared libraries to bin/ in Windows un..
--->
- <para>
- Install shared libraries to <filename>bin</filename> in <systemitem
- class="osname">MS Windows</systemitem> (Peter Eisentraut, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-04-16 [22d0053] Alvaro..: MSVC: install src/test/modules together with c..
--->
- <para>
- Install <filename>src/test/modules</filename> together with
- <filename>contrib</filename> on <productname>MSVC</productname> builds (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-12 [8d9a0e8] Magnus..: Support &#8211;&#8211;with-extra-version equivalent functi..
--->
- <para>
- Allow <link linkend="install-procedure">configure</link>'s
- <option>--with-extra-version</option> option to be honored by the
- <productname>MSVC</productname> build (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-14 [91f03ba] Noah M..: MSVC: Recognize PGFILEDESC in contrib and conv..
--->
- <para>
- Pass <envar>PGFILEDESC</envar> into <productname>MSVC</productname> contrib builds
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-07-14 [c4a448e] Noah M..: MSVC: Apply icons to all binaries having them ..
--->
- <para>
- Add icons to all <productname>MSVC</productname>-built binaries and version
- information to all <systemitem class="osname">MS Windows</systemitem>
- binaries (Noah Misch)
- </para>
-
- <para>
- MinGW already had such icons.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-09-10 [311da16] Andres..: Add support for optional_argument to our own ge..
--->
- <para>
- Add optional-argument support to the internal
- <function>getopt_long()</function> implementation (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- This is used by the <productname>MSVC</productname> build.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-03-27 [717f709] Andrew..: Add stats for min, max, mean, stddev times to p..
--->
- <para>
- Add statistics for minimum, maximum,
- mean, and standard deviation times to <link
- linkend="pgstatstatements-columns"><application>pg_stat_statements</application></link>
- (Mitsumasa Kondo, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-10-01 [32984d8] Heikki..: Add functions for dealing with PGP armor heade..
--->
- <para>
- Add <link linkend="pgcrypto"><application>pgcrypto</application></link> function
- <function>pgp_armor_headers()</function> to extract <productname>PGP</productname>
- armor headers (Marko Tiikkaja, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-30 [97c40ce] Tom Lane: Allow empty replacement strings in contrib/unac..
--->
- <para>
- Allow empty replacement strings in <link
- linkend="unaccent"><application>unaccent</application></link> (Mohammad Alhashash)
- </para>
-
- <para>
- This is useful in languages where diacritic signs are represented
- as separate characters.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-06-30 [1b24887] Tom Lane: Allow multi-character source strings in contrib..
--->
- <para>
- Allow multicharacter source strings in <link
- linkend="unaccent"><application>unaccent</application></link> (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>
-<!--
-2015-05-15 [9689290] Simon ..: TABLESAMPLE system_rows(limit)
-2015-05-15 [149f6f1] Simon ..: TABLESAMPLE system_time(limit)
--->
- <para>
- Add <filename>contrib</filename> modules <link
- linkend="tsm-system-rows"><application>tsm_system_rows</application></link> and
- <link linkend="tsm-system-time"><application>tsm_system_time</application></link>
- to allow additional table sampling methods (Petr Jel&iacute;nek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-21 [3a82bc6] Heikki..: Add pageinspect functions for inspecting GIN in..
--->
- <para>
- Add <link linkend="gin"><acronym>GIN</acronym></link>
- index inspection functions to <link
- linkend="pageinspect"><application>pageinspect</application></link> (Heikki
- Linnakangas, Peter Geoghegan, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-08-22 [f577919] Andres..: Add pinning_backends column to the pg_buffercac..
--->
- <para>
- Add information about buffer pins to <link
- linkend="pgbuffercache"><application>pg_buffercache</application></link> display
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-05-13 [5850b20] Andres..: Add pgstattuple_approx() to the pgstattuple ext..
--->
- <para>
- Allow <link linkend="pgstattuple"><application>pgstattuple</application></link>
- to report approximate answers with less overhead using
- <function>pgstattuple_approx()</function> (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2014-11-29 [22dfd11] Alvaro..: Move test modules from contrib to src/test/modu..
-2014-12-01 [df761e3] Alvaro..: Move security_label test
--->
- <para>
- Move <application>dummy_seclabel</application>, <application>test_shm_mq</application>,
- <application>test_parser</application>, and <application>worker_spi</application>
- from <filename>contrib</filename> to <filename>src/test/modules</filename>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- These modules are only meant for server testing, so they do not need
- to be built or installed when packaging <productname>PostgreSQL</productname>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- </sect1>
diff --git a/doc/src/sgml/release-9.6.sgml b/doc/src/sgml/release-9.6.sgml
deleted file mode 100644
index acebcc62493..00000000000
--- a/doc/src/sgml/release-9.6.sgml
+++ /dev/null
@@ -1,11341 +0,0 @@
-<!-- doc/src/sgml/release-9.6.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-6-11">
- <title>Release 9.6.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.10.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.11</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.6.9,
- see <xref linkend="release-9-6-9"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of standard multi-character operators that are immediately
- followed by a comment or <literal>+</literal> or <literal>-</literal>
- (Andrew Gierth)
- </para>
-
- <para>
- This oversight could lead to parse errors, or to incorrect assignment
- of precedence.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow pushing sub-<literal>SELECT</literal>s containing window
- functions, <literal>LIMIT</literal>, or <literal>OFFSET</literal> to
- parallel workers (Amit Kapila)
- </para>
-
- <para>
- Such cases could result in inconsistent behavior due to different
- workers getting different answers, as a result of indeterminacy
- due to row-ordering variations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the server will process
- already-received <literal>NOTIFY</literal>
- and <literal>SIGTERM</literal> interrupts before waiting for client
- input (Jeff Janes, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <function>ApplyLogicalMappingFile()</function> closes the
- mapping file when done with it (Tomas Vondra)
- </para>
-
- <para>
- Previously, the file descriptor was leaked, eventually resulting in
- failures during logical decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to handle cases where a mapped catalog table is
- repeatedly rewritten, e.g. by <literal>VACUUM FULL</literal>
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent starting the server with <varname>wal_level</varname> set
- to too low a value to support an existing replication slot (Andres
- Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix event triggers to handle nested <command>ALTER TABLE</command>
- commands (Michael Paquier, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Propagate parent process's transaction and statement start timestamps
- to parallel workers (Konstantin Knizhnik)
- </para>
-
- <para>
- This prevents misbehavior of functions such
- as <function>transaction_timestamp()</function> when executed in a
- worker.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix transfer of expanded datums to parallel workers so that alignment
- is preserved, preventing crashes on alignment-picky platforms
- (Tom Lane, Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix WAL file recycling logic to work correctly on standby servers
- (Michael Paquier)
- </para>
-
- <para>
- Depending on the setting of <varname>archive_mode</varname>, a standby
- might fail to remove some WAL files that could be removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of commit-timestamp tracking during recovery
- (Masahiko Sawada, Michael Paquier)
- </para>
-
- <para>
- If commit timestamp tracking has been turned on or off, recovery might
- fail due to trying to fetch the commit timestamp for a transaction
- that did not record it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DSM allocation to be interrupted (Chris Travers)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure in a parallel worker when loading an extension that
- tries to access system caches within its init function (Thomas Munro)
- </para>
-
- <para>
- We don't consider that to be good extension coding practice, but it
- mostly worked before parallel query, so continue to support it for
- now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly handle turning <varname>full_page_writes</varname> on
- dynamically (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash due to double <function>free()</function> during
- SP-GiST rescan (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible buffer overrun when replaying GIN page recompression
- from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missed fsync of a replication slot's directory (Konstantin
- Knizhnik, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unexpected timeouts when
- using <varname>wal_sender_timeout</varname> on a slow server
- (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure background workers are stopped properly when the postmaster
- receives a fast-shutdown request before completing database startup
- (Alexander Kukushkin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update the free space map during WAL replay of page all-visible/frozen
- flag changes (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously we were not careful about this, reasoning that the FSM is
- not critical data anyway. However, if it's sufficiently out of date,
- that can result in significant performance degradation after a standby
- has been promoted to primary. The FSM will eventually be healed by
- updates, but we'd like it to be good sooner, so work harder at
- maintaining it during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid premature release of parallel-query resources when query end or
- tuple count limit is reached (Amit Kapila)
- </para>
-
- <para>
- It's only okay to shut down the executor at this point if the caller
- cannot demand backwards scan afterwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>, as well as documentation
- examples, to call <function>PQconsumeInput()</function> before
- each <function>PQnotifies()</function> call (Tom Lane)
- </para>
-
- <para>
- This fixes cases in which <application>psql</application> would not
- report receipt of a <literal>NOTIFY</literal> message until after the
- next command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>, don't try to ship a
- variable-free <literal>ORDER BY</literal> clause to the remote server
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, allow the regression tests to be run by an Administrator
- account (Andrew Dunstan)
- </para>
-
- <para>
- To do this safely, <application>pg_regress</application> now gives up
- any such privileges at startup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-10">
- <title>Release 9.6.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.9.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.10</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.6.9,
- see <xref linkend="release-9-6-9"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>INSERT ... ON CONFLICT UPDATE</literal> through a view
- that isn't just <literal>SELECT * FROM ...</literal>
- (Dean Rasheed, Amit Langote)
- </para>
-
- <para>
- Erroneous expansion of an updatable view could lead to crashes
- or <quote>attribute ... has the wrong type</quote> errors, if the
- view's <literal>SELECT</literal> list doesn't match one-to-one with
- the underlying table's columns.
- Furthermore, this bug could be leveraged to allow updates of columns
- that an attacking user lacks <literal>UPDATE</literal> privilege for,
- if that user has <literal>INSERT</literal> and <literal>UPDATE</literal>
- privileges for some other column(s) of the table.
- Any user could also use it for disclosure of server memory.
- (CVE-2018-10925)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During WAL replay, guard against corrupted record lengths exceeding
- 1GB (Michael Paquier)
- </para>
-
- <para>
- Treat such a case as corrupt data. Previously, the code would try to
- allocate space and get a hard error, making recovery impossible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When ending recovery, delay writing the timeline history file as long
- as possible (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids some situations where a failure during recovery cleanup
- (such as a problem with a two-phase state file) led to inconsistent
- timeline state on-disk.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make logical WAL senders report streaming state correctly (Simon
- Riggs, Sawada Masahiko)
- </para>
-
- <para>
- The code previously mis-detected whether or not it had caught up with
- the upstream server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in snapshot handling during logical decoding, allowing wrong
- decoding results in rare cases (Arseny Sher, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mishandling of empty uncompressed posting list pages in GIN
- indexes (Sivasubramanian Ramasubramanian, Alexander Korotkov)
- </para>
-
- <para>
- This could result in an assertion failure after pg_upgrade of a
- pre-9.4 GIN index (9.4 and later will not create such pages).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>VACUUM</command> will respond to signals
- within btree page deletion loops (Andres Freund)
- </para>
-
- <para>
- Corrupted btree indexes could result in an infinite loop here, and
- that previously wasn't interruptible without forcing a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner to avoid <quote>ORDER/GROUP BY expression not found in
- targetlist</quote> errors in some queries with set-returning functions
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command>'s accounting for resource usage,
- particularly buffer accesses, in parallel workers
- (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, and text search objects
- were not schema-qualified when they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>CREATE AGGREGATE</command> type checking so that
- parallelism support functions can be attached to variadic aggregates
- (Alexey Bashtanov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s failure to
- dump <literal>REPLICA IDENTITY</literal> properties for constraint
- indexes (Tom Lane)
- </para>
-
- <para>
- Manually created unique indexes were properly marked, but not those
- created by declaring <literal>UNIQUE</literal> or <literal>PRIMARY
- KEY</literal> constraints.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/hstore_plperl</filename> to look through Perl
- scalar references, and to not crash if it doesn't find a hash
- reference where it expects one (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-9">
- <title>Release 9.6.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.8.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.9</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you use the <filename>adminpack</filename> extension,
- you should update it as per the first changelog entry below.
- </para>
-
- <para>
- Also, if the function marking mistakes mentioned in the second and
- third changelog entries below affect you, you will want to take steps
- to correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.8,
- see <xref linkend="release-9-6-8"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove public execute privilege
- from <filename>contrib/adminpack</filename>'s
- <function>pg_logfile_rotate()</function> function (Stephen Frost)
- </para>
-
- <para>
- <function>pg_logfile_rotate()</function> is a deprecated wrapper
- for the core function <function>pg_rotate_logfile()</function>.
- When that function was changed to rely on SQL privileges for access
- control rather than a hard-coded superuser
- check, <function>pg_logfile_rotate()</function> should have been
- updated as well, but the need for this was missed. Hence,
- if <filename>adminpack</filename> is installed, any user could
- request a logfile rotation, creating a minor security issue.
- </para>
-
- <para>
- After installing this update, administrators should
- update <filename>adminpack</filename> by performing
- <literal>ALTER EXTENSION adminpack UPDATE</literal> in each
- database in which <filename>adminpack</filename> is installed.
- (CVE-2018-1115)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect parallel-safety markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>brin_summarize_new_values</function>,
- <function>gin_clean_pending_list</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>ts_rewrite</function>,
- <function>ts_stat</function>, and
- <function>binary_upgrade_create_empty_extension</function>
- should be marked parallel-unsafe; some because they perform database
- modifications directly, and others because they execute user-supplied
- queries that might do so. They were marked parallel-restricted
- instead, leading to a risk of unexpected query errors. This has been
- repaired for new installations by correcting the initial catalog
- data, but existing installations will continue to contain the
- incorrect markings. Practical use of these functions seems to pose
- little hazard unless <varname>force_parallel_mode</varname> is turned
- on. In case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.brin_summarize_new_values(regclass)
- PARALLEL UNSAFE</literal>. (Note that that will need to be done in
- each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlocks in concurrent <command>CREATE INDEX
- CONCURRENTLY</command> commands that are run
- under <literal>SERIALIZABLE</literal> or <literal>REPEATABLE
- READ</literal> transaction isolation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible slow execution of <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possibly incorrect generation of an index-only-scan plan when the
- same table column appears in multiple index columns, and only some of
- those index columns use operator classes that can return the column
- value (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix executor crash due to double free in some <literal>GROUPING
- SET</literal> usages (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a table rewrite event trigger is added concurrently
- with a command that could call such a trigger (&Aacute;lvaro Herrera,
- Andrew Gierth, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible leak or double free of visibility map buffer pins
- (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid spuriously marking pages as all-visible (Dan Wood,
- Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could happen if some tuples were locked (but not deleted). While
- queries would still function correctly, vacuum would normally ignore
- such pages, with the long-term effect that the tuples were never
- frozen. In recent releases this would eventually result in errors
- such as <quote>found multixact <replaceable>nnnnn</replaceable> from
- before relminmxid <replaceable>nnnnn</replaceable></quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent query-lifespan memory leakage with SP-GiST operator classes
- that use traversal values (Anton Dign&ouml;s)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a corner case where a streaming standby gets stuck at a WAL
- continuation record (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In logical decoding, avoid possible double processing of WAL data
- when a walsender restarts (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_recvlogical</application> to not fail against
- pre-v10 <productname>PostgreSQL</productname> servers
- (Michael Paquier)
- </para>
-
- <para>
- A previous fix caused <application>pg_recvlogical</application> to
- issue a command regardless of server version, but it should only be
- issued to v10 and later servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_rewind</application> deletes files on the
- target server if they are deleted from the source server during the
- run (Takayuki Tsunakawa)
- </para>
-
- <para>
- Failure to do this could result in data inconsistency on the target,
- particularly if the file in question is a WAL segment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_rewind</application> to handle tables in
- non-default tablespaces correctly (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix errors in initial build of <filename>contrib/bloom</filename>
- indexes (Tomas Vondra, Tom Lane)
- </para>
-
- <para>
- Fix possible omission of the table's last tuple from the index.
- Count the number of index tuples correctly, in case it is a partial
- index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-8">
- <title>Release 9.6.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.7.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.8</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.7,
- see <xref linkend="release-9-6-7"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Mark assorted GUC variables as <literal>PGDLLIMPORT</literal>, to
- ease porting extension modules to Windows (Metin Doslu)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-7">
- <title>Release 9.6.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.6.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.7</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However,
- if you use <filename>contrib/cube</filename>'s <literal>~&gt;</literal>
- operator, see the entry below about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.6,
- see <xref linkend="release-9-6-6"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that vacuum will always clean up the pending-insertions list of
- a GIN index (Masahiko Sawada)
- </para>
-
- <para>
- This is necessary to ensure that dead index entries get removed.
- The old code got it backwards, allowing vacuum to skip the cleanup if
- some other process were running cleanup concurrently, thus risking
- invalid entries being left behind in the index.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect query results from cases involving flattening of
- subqueries whose outputs are used in <literal>GROUPING SETS</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spurious deadlock failures when multiple sessions are
- running <command>CREATE INDEX CONCURRENTLY</command> (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failures when an inheritance tree contains foreign child tables
- (Etsuro Fujita)
- </para>
-
- <para>
- A mix of regular and foreign tables in an inheritance tree resulted in
- creation of incorrect plans for <command>UPDATE</command>
- and <command>DELETE</command> queries. This led to visible failures in
- some cases, notably when there are row-level triggers on a foreign
- child table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix logical decoding to correctly clean up disk files for crashed
- transactions (Atsushi Torikoshi)
- </para>
-
- <para>
- Logical decoding may spill WAL records to disk for transactions
- generating many WAL records. Normally these files are cleaned up
- after the transaction's commit or abort record arrives; but if
- no such record is ever seen, the removal code misbehaved.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix walsender timeout failure and failure to respond to interrupts
- when processing a large transaction (Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with failure to start a parallel worker process
- (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- Parallel query previously tended to hang indefinitely if a worker
- could not be started, as the result of <literal>fork()</literal>
- failure or other low-probability problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collection of <command>EXPLAIN</command> statistics from parallel
- workers (Amit Kapila, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe alignment assumptions when working
- with <type>__int128</type> (Tom Lane)
- </para>
-
- <para>
- Typically, compilers assume that <type>__int128</type> variables are
- aligned on 16-byte boundaries, but our memory allocation
- infrastructure isn't prepared to guarantee that, and increasing the
- setting of MAXALIGN seems infeasible for multiple reasons. Adjust the
- code to allow use of <type>__int128</type> only when we can tell the
- compiler to assume lesser alignment. The only known symptom of this
- problem so far is crashes in some parallel aggregation queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename <application>pg_rewind</application>'s
- <function>copy_file_range</function> function to avoid conflict
- with new Linux system call of that name (Andres Freund)
- </para>
-
- <para>
- This change prevents build failures with newer glibc versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the behavior of <filename>contrib/cube</filename>'s
- <type>cube</type> <literal>~&gt;</literal> <type>int</type>
- operator to make it compatible with KNN search (Alexander Korotkov)
- </para>
-
- <para>
- The meaning of the second argument (the dimension selector) has been
- changed to make it predictable which value is selected even when
- dealing with cubes of varying dimensionalities.
- </para>
-
- <para>
- This is an incompatible change, but since the point of the operator
- was to be used in KNN searches, it seems rather useless as-is.
- After installing this update, any expression indexes or materialized
- views using this operator will need to be reindexed/refreshed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect display of tuples' null bitmaps
- in <filename>contrib/pageinspect</filename> (Maksim Milyutin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>, avoid
- <quote>outer pathkeys do not match mergeclauses</quote>
- planner error when constructing a plan involving a remote join
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-6">
- <title>Release 9.6.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.5.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.6</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you use BRIN indexes, see the fourth changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.4,
- see <xref linkend="release-9-6-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that <literal>INSERT ... ON CONFLICT DO UPDATE</literal> checks
- table permissions and RLS policies in all cases (Dean Rasheed)
- </para>
-
- <para>
- The update path of <literal>INSERT ... ON CONFLICT DO UPDATE</literal>
- requires <literal>SELECT</literal> permission on the columns of the
- arbiter index, but it failed to check for that in the case of an
- arbiter specified by constraint name.
- In addition, for a table with row level security enabled, it failed to
- check updated rows against the table's <literal>SELECT</literal>
- policies (regardless of how the arbiter index was specified).
- (CVE-2017-15099)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix BRIN index summarization to handle concurrent table extension
- correctly (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Previously, a race condition allowed some table rows to be omitted from
- the index. It may be necessary to reindex existing BRIN indexes to
- recover from past occurrences of this problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failures during concurrent updates of a BRIN index
- (Tom Lane)
- </para>
-
- <para>
- These race conditions could result in errors like <quote>invalid index
- offnum</quote> or <quote>inconsistent range map</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when logical decoding is invoked from a SPI-using function,
- in particular any function written in a PL language
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect query results when multiple <literal>GROUPING
- SETS</literal> columns contain the same simple variable (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect parallelization decisions for nested queries
- (Amit Kapila, Kuntal Ghosh)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parallel query handling to not fail when a recently-used role is
- dropped (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>json_build_array()</function>,
- <function>json_build_object()</function>, and their <type>jsonb</type>
- equivalents to handle explicit <literal>VARIADIC</literal> arguments
- correctly (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7769fc000] 2017-09-27 17:05:53 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [07ea925e2] 2017-09-27 17:05:53 -0400
-Branch: REL9_6_STABLE [def03e4bf] 2017-09-27 17:05:53 -0400
-Branch: REL9_5_STABLE [ad56dbd6c] 2017-09-27 17:05:53 -0400
-Branch: REL9_4_STABLE [c38575edc] 2017-09-27 17:05:53 -0400
-Branch: REL9_3_STABLE [2e82fba0e] 2017-09-27 17:05:54 -0400
-Branch: REL9_2_STABLE [72d4fd08e] 2017-09-27 17:05:54 -0400
--->
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6f44fe7f1] 2017-09-17 15:28:51 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [244b4a37e] 2017-09-17 15:28:51 -0400
-Branch: REL9_6_STABLE [86e4ebb9a] 2017-09-17 15:28:51 -0400
-Branch: REL9_5_STABLE [eeff68396] 2017-09-17 15:28:51 -0400
--->
- <para>
- Correctly ignore <structname>RelabelType</structname> expression nodes
- when determining relation distinctness (David Rowley)
- </para>
-
- <para>
- This allows the intended optimization to occur when a subquery has
- a result column of type <type>varchar</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sharing transition states between ordered-set aggregates
- (David Rowley)
- </para>
-
- <para>
- This causes a crash with the built-in ordered-set aggregates, and
- probably with user-written ones as well. v11 and later will include
- provisions for dealing with such cases safely, but in released
- branches, just disable the optimization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <varname>idle_in_transaction_session_timeout</varname> from
- being ignored when a <varname>statement_timeout</varname> occurred
- earlier (Lukas Fittl)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [899bd785c] 2017-09-25 16:09:19 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [4621c7f7a] 2017-09-25 16:09:19 -0400
-Branch: REL9_6_STABLE [175061222] 2017-09-25 16:09:20 -0400
-Branch: REL9_5_STABLE [05297416f] 2017-09-25 16:09:20 -0400
-Branch: REL9_4_STABLE [3a07a6f3e] 2017-09-25 16:09:20 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5ea96efaa] 2017-09-26 13:42:53 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [d29f30d8c] 2017-09-26 13:43:00 -0400
-Branch: REL9_6_STABLE [12ac252f9] 2017-09-26 13:43:07 -0400
-Branch: REL9_5_STABLE [06852f215] 2017-09-26 13:43:12 -0400
-Branch: REL9_4_STABLE [e5c058e2e] 2017-09-26 13:43:17 -0400
--->
- <para>
- Avoid <systemitem>SIGBUS</systemitem> crash on Linux when a DSM memory
- request exceeds the space available in <systemitem>tmpfs</systemitem>
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the frequency of data flush requests during bulk file copies to
- avoid performance problems on macOS, particularly with its new APFS
- file system (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [27c6619e9] 2017-09-17 14:50:01 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [66fe509be] 2017-09-17 14:50:01 -0400
-Branch: REL9_6_STABLE [c0d21bdb8] 2017-09-17 14:50:01 -0400
-Branch: REL9_5_STABLE [825fac5d3] 2017-09-17 14:50:01 -0400
-Branch: REL9_4_STABLE [bc0974703] 2017-09-17 14:50:01 -0400
-Branch: REL9_3_STABLE [b1be33593] 2017-09-17 14:50:01 -0400
-Branch: REL9_2_STABLE [4cd6cd21d] 2017-09-17 14:50:01 -0400
--->
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <command>COPY</command>'s <literal>FREEZE</literal> option to
- work when the transaction isolation level is <literal>REPEATABLE
- READ</literal> or higher (Noah Misch)
- </para>
-
- <para>
- This case was unintentionally broken by a previous bug fix.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [aa6b7b72d] 2017-09-22 17:10:36 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [3d7f11a0f] 2017-09-23 10:03:05 -0400
-Branch: REL9_6_STABLE [a1f30ecc5] 2017-09-23 10:03:36 -0400
-Branch: REL9_5_STABLE [acae13faa] 2017-09-23 10:04:55 -0400
-Branch: REL9_4_STABLE [9bf049946] 2017-09-23 10:05:28 -0400
-Branch: REL9_3_STABLE [e0f5710c5] 2017-09-23 10:05:40 -0400
-Branch: REL9_2_STABLE [2eb84e54a] 2017-09-23 10:14:30 -0400
--->
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [714805010] 2017-09-21 18:13:11 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [a2b1eb234] 2017-09-21 18:13:11 -0400
-Branch: REL9_6_STABLE [ea31541f5] 2017-09-21 18:13:11 -0400
-Branch: REL9_5_STABLE [122289a66] 2017-09-21 18:13:11 -0400
-Branch: REL9_4_STABLE [b572b435c] 2017-09-21 18:13:11 -0400
-Branch: REL9_3_STABLE [a09d8be7d] 2017-09-21 18:13:11 -0400
-Branch: REL9_2_STABLE [e56facd8b] 2017-09-21 18:13:11 -0400
--->
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [81276fdd3] 2017-09-14 17:19:04 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [a2a61f633] 2017-09-14 16:44:01 -0400
-Branch: REL9_6_STABLE [353328ad1] 2017-09-14 16:47:11 -0400
--->
- <para>
- Add missing cases in <function>GetCommandLogLevel()</function>,
- preventing errors when certain SQL commands are used while
- <varname>log_statement</varname> is set to <literal>ddl</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_6_STABLE [2ac598874] 2017-10-17 12:15:08 -0400
-Branch: REL9_5_STABLE [9e20276e1] 2017-10-17 12:15:08 -0400
-Branch: REL9_4_STABLE [38f17e8ee] 2017-10-17 12:15:08 -0400
-Branch: REL9_3_STABLE [06b2a73ed] 2017-10-17 12:15:08 -0400
--->
- <para>
- Fix mis-parsing of the last line in a
- non-newline-terminated <filename>pg_hba.conf</filename> file
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>AggGetAggref()</function> to return the
- correct <structname>Aggref</structname> nodes to aggregate final
- functions whose transition calculations have been merged (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [d2e40b310] 2017-09-13 20:02:09 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [68a7c24fd] 2017-09-13 20:04:43 -0400
-Branch: REL9_6_STABLE [caae416aa] 2017-09-13 20:02:27 -0400
--->
- <para>
- Fix <application>pg_dump</application> to ensure that it
- emits <command>GRANT</command> commands in a valid order
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application>'s matching of tablespace
- paths to canonicalize both paths before comparing (Michael Paquier)
- </para>
-
- <para>
- This is particularly helpful on Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2e70d6b5e] 2017-08-29 15:18:01 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [b481b39b8] 2017-08-29 15:18:01 -0400
-Branch: REL9_6_STABLE [bc95e5874] 2017-08-29 15:18:01 -0400
-Branch: REL9_5_STABLE [dfd1042c6] 2017-08-29 15:18:01 -0400
-Branch: REL9_4_STABLE [1c53722ff] 2017-08-29 15:18:01 -0400
-Branch: REL9_3_STABLE [d391fb6c3] 2017-08-29 15:18:01 -0400
-Branch: REL9_2_STABLE [a07058a6d] 2017-08-29 15:18:01 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9d6b160d7] 2017-09-01 15:14:46 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [f2fe1cbef] 2017-09-01 15:14:18 -0400
-Branch: REL9_6_STABLE [3a0f8e7d3] 2017-09-01 15:14:18 -0400
-Branch: REL9_5_STABLE [1305186de] 2017-09-01 15:14:18 -0400
-Branch: REL9_4_STABLE [53863ebeb] 2017-09-01 15:14:18 -0400
-Branch: REL9_3_STABLE [dd344de67] 2017-09-01 15:14:18 -0400
-Branch: REL9_2_STABLE [f60a236ba] 2017-09-01 15:14:18 -0400
--->
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [35e156882] 2017-09-12 04:53:36 +0200
-Branch: REL_10_STABLE Release: REL_10_0 [75fbf8ad1] 2017-09-18 23:07:18 +0200
-Branch: REL9_6_STABLE [59b5a3e5c] 2017-09-18 23:07:34 +0200
-Branch: REL9_5_STABLE [3a5aa7de3] 2017-09-18 23:07:44 +0200
-Branch: REL9_4_STABLE [e5b8b771e] 2017-09-18 23:08:17 +0200
-Branch: REL9_3_STABLE [149cfdb3a] 2017-09-18 23:08:24 +0200
--->
- <para>
- Fix <application>ecpg</application>'s handling of out-of-scope cursor
- declarations with pointer or array variables (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In ecpglib, correctly handle backslashes in string literals depending
- on whether <varname>standard_conforming_strings</varname> is set
- (Tsunakawa Takayuki)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [a772624b1] 2017-08-26 12:57:21 +0200
-Branch: REL_10_STABLE Release: REL_10_0 [38d7cb67f] 2017-09-14 00:47:03 +0200
-Branch: REL9_6_STABLE [839ee1811] 2017-09-14 01:17:03 +0200
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [04fbe0e45] 2017-08-26 19:11:58 +0200
-Branch: REL_10_STABLE Release: REL_10_0 [eaf7001eb] 2017-09-14 00:47:08 +0200
-Branch: REL9_6_STABLE [407e66078] 2017-09-14 01:17:15 +0200
--->
- <para>
- Fix <application>ecpg</application>'s regression tests to work reliably
- on Windows (Christian Ullrich, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix missing temp-install prerequisites
- for <literal>check</literal>-like Make targets (Noah Misch)
- </para>
-
- <para>
- Some non-default test procedures that are meant to work
- like <literal>make check</literal> failed to ensure that the temporary
- installation was up to date.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [47f849a3c] 2017-09-22 00:04:29 -0400
-Branch: REL_10_STABLE Release: REL_10_0 [3876b16ce] 2017-09-22 00:04:21 -0400
-Branch: REL9_6_STABLE [e25f4401d] 2017-09-22 00:04:21 -0400
-Branch: REL9_5_STABLE [89f02e17a] 2017-09-22 00:04:21 -0400
-Branch: REL9_4_STABLE [dbd6099fb] 2017-09-22 00:04:21 -0400
-Branch: REL9_3_STABLE [2020f90bf] 2017-09-22 00:04:21 -0400
-Branch: REL9_2_STABLE [a07105afa] 2017-09-22 00:04:21 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [24a1897ab] 2017-10-23 17:54:09 -0400
-Branch: REL_10_STABLE [dffe7fbc2] 2017-10-23 17:54:09 -0400
-Branch: REL9_6_STABLE [173b7a4a7] 2017-10-23 17:54:09 -0400
-Branch: REL9_5_STABLE [4b433a8b0] 2017-10-23 17:54:09 -0400
-Branch: REL9_4_STABLE [876e076eb] 2017-10-23 17:54:09 -0400
-Branch: REL9_3_STABLE [9c74dd2d5] 2017-10-23 17:54:09 -0400
-Branch: REL9_2_STABLE [1317d1301] 2017-10-23 17:54:09 -0400
--->
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-5">
- <title>Release 9.6.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.6.4.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.5</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.6.4,
- see <xref linkend="release-9-6-4"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [0659465ca] 2017-08-15 19:27:22 -0400
-Branch: REL_10_STABLE [3ea58216d] 2017-08-15 19:30:35 -0400
-Branch: REL9_6_STABLE [dce90c7c8] 2017-08-15 19:31:06 -0400
-Branch: REL9_5_STABLE [dbeefe64f] 2017-08-15 19:32:00 -0400
-Branch: REL9_4_STABLE [52427015a] 2017-08-15 19:32:41 -0400
-Branch: REL9_3_STABLE [9f0f4efc2] 2017-08-15 19:32:52 -0400
-Branch: REL9_2_STABLE [98e6784aa] 2017-08-15 19:33:04 -0400
--->
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [5b6289c1e] 2017-08-14 15:43:20 -0400
-Branch: REL9_6_STABLE [624b6f328] 2017-08-14 15:43:20 -0400
-Branch: REL9_5_STABLE [51684bad9] 2017-08-14 15:43:20 -0400
-Branch: REL9_4_STABLE [daafb11ff] 2017-08-14 15:43:20 -0400
-Branch: REL9_3_STABLE [cd184273b] 2017-08-14 15:43:20 -0400
-Branch: REL9_2_STABLE [8ae41ceae] 2017-08-14 15:43:20 -0400
--->
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [004a9702e] 2017-08-13 16:15:14 -0400
-Branch: REL9_6_STABLE [a64b5a992] 2017-08-13 16:15:14 -0400
-Branch: REL9_5_STABLE [425be3ac9] 2017-08-13 16:15:14 -0400
-Branch: REL9_4_STABLE [5a3688dc8] 2017-08-13 16:15:14 -0400
-Branch: REL9_3_STABLE [bb11ff2bc] 2017-08-13 16:15:14 -0400
-Branch: REL9_2_STABLE [5069017fe] 2017-08-13 16:15:14 -0400
--->
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [749c7c417] 2017-08-09 17:03:09 -0400
-Branch: REL9_6_STABLE [e2e398473] 2017-08-09 17:03:09 -0400
-Branch: REL9_5_STABLE [d1c1d90e1] 2017-08-09 17:03:09 -0400
-Branch: REL9_4_STABLE [95a0a8d2a] 2017-08-09 17:03:09 -0400
-Branch: REL9_3_STABLE [06931a9c0] 2017-08-09 17:03:10 -0400
-Branch: REL9_2_STABLE [4e704aac1] 2017-08-09 17:03:10 -0400
--->
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [9bf4068cc] 2017-08-08 19:18:22 -0400
-Branch: REL9_6_STABLE [fe578cbd4] 2017-08-08 19:18:23 -0400
--->
- <para>
- Prevent crash when passing fixed-length pass-by-reference data types
- to parallel worker processes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b1c2d76a2] 2017-08-19 13:39:51 -0400
-Branch: REL_10_STABLE [1c3869c0b] 2017-08-19 13:39:52 -0400
-Branch: REL9_6_STABLE [41803d55a] 2017-08-19 13:39:38 -0400
-Branch: REL9_5_STABLE [258aac0b2] 2017-08-19 13:39:38 -0400
-Branch: REL9_4_STABLE [59dde9fed] 2017-08-19 13:39:38 -0400
-Branch: REL9_3_STABLE [ece4bd901] 2017-08-19 13:39:38 -0400
--->
- <para>
- Fix crash in <application>pg_restore</application> when using parallel mode and
- using a list file to select a subset of items to restore
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL_10_STABLE [ea0ca75d5] 2017-08-14 11:29:34 +0200
-Branch: REL9_6_STABLE [3d7a1e2b9] 2017-08-16 13:28:14 +0200
-Branch: REL9_5_STABLE [f2ed2d0a1] 2017-08-16 13:28:37 +0200
-Branch: REL9_4_STABLE [bd502753a] 2017-08-16 13:29:00 +0200
-Branch: REL9_3_STABLE [f8bc6b2f6] 2017-08-16 13:30:09 +0200
-Branch: REL9_2_STABLE [60b135c82] 2017-08-16 13:30:20 +0200
--->
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [a4619b26a] 2017-08-15 17:14:52 +0200
-Branch: REL_10_STABLE [a6b174f55] 2017-08-16 13:27:21 +0200
-Branch: REL9_6_STABLE [954490fec] 2017-08-16 13:28:10 +0200
--->
- <para>
- Change <application>ecpg</application>'s parser to recognize backslash
- continuation of C preprocessor command lines (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [5a5c2feca] 2017-08-14 11:48:59 -0400
-Branch: REL9_6_STABLE [3883be3ea] 2017-08-14 11:48:59 -0400
-Branch: REL9_5_STABLE [1621a7553] 2017-08-14 11:48:59 -0400
-Branch: REL9_4_STABLE [01de7ea85] 2017-08-14 11:48:59 -0400
-Branch: REL9_3_STABLE [25169b948] 2017-08-14 11:48:59 -0400
-Branch: REL9_2_STABLE [e3335ec0b] 2017-08-14 11:48:59 -0400
-Branch: master [b5178c5d0] 2017-08-17 13:13:47 -0400
-Branch: REL_10_STABLE [1d7a479d2] 2017-08-17 13:13:56 -0400
-Branch: REL9_6_STABLE [c34331488] 2017-08-17 13:14:06 -0400
-Branch: REL9_5_STABLE [bff216d87] 2017-08-17 13:14:11 -0400
-Branch: REL9_4_STABLE [4f862351d] 2017-08-17 13:15:15 -0400
-Branch: REL9_3_STABLE [bc4404405] 2017-08-17 13:15:36 -0400
-Branch: REL9_2_STABLE [f7e4783dd] 2017-08-17 13:15:46 -0400
--->
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL_10_STABLE [a76200de8] 2017-08-09 12:05:53 -0400
-Branch: REL9_6_STABLE [fc2aafe4a] 2017-08-09 12:06:08 -0400
-Branch: REL9_5_STABLE [a784d5f21] 2017-08-09 12:06:14 -0400
--->
- <para>
- Fix <literal>make check</literal> to behave correctly when invoked via a
- non-GNU make program (Thomas Munro)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-4">
- <title>Release 9.6.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.3.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.4</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.3,
- see <xref linkend="release-9-6-3"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [e568e1eee] 2017-08-07 07:09:28 -0700
-Branch: REL9_6_STABLE [156099630] 2017-08-07 07:09:31 -0700
-Branch: REL9_5_STABLE [36f9f6095] 2017-08-07 07:09:31 -0700
-Branch: REL9_4_STABLE [b6e39ca92] 2017-08-07 07:09:31 -0700
-Branch: REL9_3_STABLE [5e8e00914] 2017-08-07 07:09:31 -0700
-Branch: REL9_2_STABLE [e255e97a2] 2017-08-07 07:09:32 -0700
--->
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [bf6b9e944] 2017-08-07 17:03:42 +0300
-Branch: REL9_6_STABLE [f6fc72cb6] 2017-08-07 17:03:49 +0300
-Branch: REL9_5_STABLE [127835ddf] 2017-08-07 17:04:00 +0300
-Branch: REL9_4_STABLE [d5d46d99b] 2017-08-07 17:04:07 +0300
-Branch: REL9_3_STABLE [b2f833ea7] 2017-08-07 17:04:12 +0300
-Branch: REL9_2_STABLE [06651648a] 2017-08-07 17:04:17 +0300
--->
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8d9881911] 2017-08-07 10:19:19 -0400
-Branch: REL9_6_STABLE [52a414387] 2017-08-07 10:19:20 -0400
-Branch: REL9_5_STABLE [873741c68] 2017-08-07 10:19:21 -0400
-Branch: REL9_4_STABLE [f1cda6d6c] 2017-08-07 10:19:22 -0400
--->
- <para>
- Make <function>lo_put()</function> check for <literal>UPDATE</literal> privilege on
- the target large object (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- <function>lo_put()</function> should surely require the same permissions
- as <function>lowrite()</function>, but the check was missing, allowing any
- user to change the data in a large object.
- (CVE-2017-7548)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0f33a719f] 2017-06-15 12:30:02 -0400
-Branch: REL9_6_STABLE [a0873fbab] 2017-06-15 12:30:02 -0400
-Branch: REL9_5_STABLE [fd376afc9] 2017-06-15 12:30:02 -0400
--->
- <para>
- Correct the documentation about the process for upgrading standby
- servers with <application>pg_upgrade</application> (Bruce Momjian)
- </para>
-
- <para>
- The previous documentation instructed users to start/stop the primary
- server after running <application>pg_upgrade</application> but before syncing
- the standby servers. This sequence is unsafe.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [459c64d32] 2017-07-26 17:24:16 -0400
-Branch: REL9_6_STABLE [8c348765f] 2017-07-26 17:24:16 -0400
-Branch: REL9_5_STABLE [0d4604ad6] 2017-07-26 17:24:16 -0400
-Branch: REL9_4_STABLE [dfd091985] 2017-07-26 17:25:46 -0400
-Branch: REL9_3_STABLE [2efbfb94b] 2017-07-26 17:24:16 -0400
--->
- <para>
- Fix concurrent locking of tuple update chains (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If several sessions concurrently lock a tuple update chain with
- nonconflicting lock modes using an old snapshot, and they all
- succeed, it was possible for some of them to nonetheless fail (and
- conclude there is no live tuple version) due to a race condition.
- This had consequences such as foreign-key checks failing to see a
- tuple that definitely exists but is being updated concurrently.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [31b8db8e6] 2017-07-06 17:18:55 +0300
-Branch: REL9_6_STABLE [42f62e4c9] 2017-07-06 17:19:44 +0300
-Branch: REL9_5_STABLE [fb2d385e6] 2017-07-06 17:20:17 +0300
-Branch: REL9_4_STABLE [b90e4ca3e] 2017-07-06 17:20:37 +0300
-Branch: REL9_3_STABLE [f371cc9e9] 2017-07-06 17:20:56 +0300
--->
- <para>
- Fix potential data corruption when freezing a tuple whose XMAX is a
- multixact with exactly one still-interesting member (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [512f67c8d] 2017-07-12 13:24:16 -0400
-Branch: REL9_6_STABLE [09c598898] 2017-07-12 13:24:16 -0400
-Branch: REL9_5_STABLE [e7213fe2b] 2017-07-12 13:24:16 -0400
-Branch: REL9_4_STABLE [e439bbe99] 2017-07-12 13:24:17 -0400
--->
- <para>
- Avoid integer overflow and ensuing crash when sorting more than one
- billion tuples in-memory (Sergey Koposov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [45e004fb4] 2017-07-10 11:00:09 -0400
-Branch: REL9_6_STABLE [c0077f738] 2017-07-10 11:00:09 -0400
-Branch: REL9_5_STABLE [afd1415a4] 2017-07-10 11:00:09 -0400
-Branch: REL9_4_STABLE [bc0f76e7a] 2017-07-10 11:00:09 -0400
-Branch: REL9_3_STABLE [59892b120] 2017-07-10 11:00:09 -0400
-Branch: REL9_2_STABLE [a4a590ee7] 2017-07-10 11:00:09 -0400
--->
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e2c8100e6] 2017-07-24 16:45:58 -0400
-Branch: REL9_6_STABLE [51865a0a0] 2017-07-24 16:46:00 -0400
-Branch: REL9_5_STABLE [5146ca352] 2017-07-24 16:45:46 -0400
-Branch: REL9_4_STABLE [8ad35c7fa] 2017-07-24 16:45:46 -0400
-Branch: REL9_3_STABLE [4ecee1192] 2017-07-24 16:45:47 -0400
-Branch: REL9_2_STABLE [05a562d9c] 2017-07-24 16:45:47 -0400
--->
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [b93827c74] 2017-07-03 14:51:51 +0300
-Branch: REL9_6_STABLE [f73382877] 2017-07-03 14:53:01 +0300
-Branch: REL9_5_STABLE [90630a6ad] 2017-07-03 14:53:06 +0300
-Branch: REL9_4_STABLE [fb63a0aa3] 2017-07-03 14:53:08 +0300
-Branch: REL9_3_STABLE [543e00bc1] 2017-07-03 14:53:10 +0300
-Branch: REL9_2_STABLE [fb1110085] 2017-07-03 14:53:12 +0300
--->
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [97d3a0b09] 2017-08-04 11:07:10 -0400
-Branch: REL9_6_STABLE [b798ea88a] 2017-08-04 11:07:10 -0400
-Branch: REL9_5_STABLE [bebee333c] 2017-08-04 11:07:10 -0400
-Branch: REL9_4_STABLE [8d05db3d8] 2017-08-04 11:07:10 -0400
-Branch: REL9_3_STABLE [dda04b9dd] 2017-08-04 11:07:10 -0400
-Branch: REL9_2_STABLE [c180d2eb7] 2017-08-04 11:07:11 -0400
--->
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f0256c774] 2017-06-27 18:47:57 -0400
-Branch: REL9_6_STABLE [55968ed89] 2017-06-27 18:47:57 -0400
-Branch: REL9_5_STABLE [d16e96fb2] 2017-06-27 18:47:57 -0400
-Branch: REL9_4_STABLE [c2cb606a2] 2017-06-27 18:47:57 -0400
-Branch: REL9_3_STABLE [9ce7f3919] 2017-06-27 18:47:57 -0400
-Branch: REL9_2_STABLE [6ccab9242] 2017-06-27 18:47:57 -0400
-Branch: master [99255d73c] 2017-06-28 12:30:16 -0400
-Branch: REL9_6_STABLE [43c67e32f] 2017-06-28 12:30:16 -0400
-Branch: REL9_5_STABLE [63f5db8ab] 2017-06-28 12:30:16 -0400
-Branch: REL9_4_STABLE [e97b7372b] 2017-06-28 12:30:16 -0400
-Branch: REL9_3_STABLE [cc154d9a0] 2017-06-28 12:30:16 -0400
-Branch: REL9_2_STABLE [5e7447132] 2017-06-28 12:30:16 -0400
--->
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ad1b5c842] 2017-06-26 16:17:05 -0400
-Branch: REL9_6_STABLE [f6af9c749] 2017-06-26 16:17:05 -0400
-Branch: REL9_5_STABLE [5a6b95cdf] 2017-06-26 16:17:06 -0400
-Branch: REL9_4_STABLE [fc4da1fde] 2017-06-26 16:17:06 -0400
-Branch: REL9_3_STABLE [456bf261d] 2017-06-26 16:17:06 -0400
-Branch: REL9_2_STABLE [439b6363d] 2017-06-26 16:17:06 -0400
--->
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8b0b6303e] 2017-05-16 15:24:52 -0400
-Branch: REL9_6_STABLE [34782a348] 2017-05-29 20:27:45 -0400
-Branch: REL9_5_STABLE [82f8c21e0] 2017-05-29 20:27:45 -0400
-Branch: REL9_4_STABLE [54676c72c] 2017-05-29 20:27:45 -0400
-Branch: REL9_3_STABLE [4a3bb96ce] 2017-05-29 20:27:45 -0400
-Branch: REL9_2_STABLE [364100e0b] 2017-05-29 20:27:45 -0400
--->
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [fb886c153] 2017-06-21 14:14:45 -0700
-Branch: REL9_6_STABLE [39e30cbc1] 2017-06-21 14:14:38 -0700
-Branch: REL9_5_STABLE [7775ebaf0] 2017-06-21 14:14:29 -0700
-Branch: REL9_4_STABLE [823a51ed3] 2017-06-21 14:14:21 -0700
-Branch: REL9_3_STABLE [511d803ca] 2017-06-21 14:14:12 -0700
-Branch: REL9_2_STABLE [81bf7b5b1] 2017-06-21 14:13:58 -0700
--->
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fca85f8ef] 2017-06-30 12:00:15 -0400
-Branch: REL9_6_STABLE [e9d4aa594] 2017-06-30 12:00:03 -0400
-Branch: REL9_5_STABLE [446914f6b] 2017-06-30 12:00:03 -0400
-Branch: REL9_4_STABLE [5aa8db014] 2017-06-30 12:00:03 -0400
--->
- <para>
- Fix <application>walsender</application> to exit promptly when client requests
- shutdown (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [47fd420fb] 2017-06-05 19:18:15 -0700
-Branch: REL9_6_STABLE [b3d5b6833] 2017-06-05 19:18:16 -0700
-Branch: REL9_5_STABLE [e1319f64e] 2017-06-05 19:18:16 -0700
-Branch: REL9_4_STABLE [f4e484dd0] 2017-06-05 19:18:16 -0700
-Branch: master [6e1dd2773] 2017-06-05 19:18:16 -0700
-Branch: REL9_6_STABLE [b8bd32a51] 2017-06-05 19:18:16 -0700
-Branch: REL9_5_STABLE [641a60b02] 2017-06-05 19:18:16 -0700
-Branch: REL9_4_STABLE [55d7027d5] 2017-06-05 19:18:16 -0700
-Branch: REL9_3_STABLE [45d067d50] 2017-06-05 19:18:16 -0700
-Branch: REL9_2_STABLE [133b1920c] 2017-06-05 19:18:16 -0700
--->
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [c6c333436] 2017-06-05 19:18:15 -0700
-Branch: REL9_6_STABLE [862204aac] 2017-06-05 19:18:16 -0700
-Branch: REL9_5_STABLE [50581f2e7] 2017-06-05 19:18:16 -0700
-Branch: REL9_4_STABLE [1cdc0ab9c] 2017-06-05 19:18:16 -0700
--->
- <para>
- Prevent walsender-triggered panics during shutdown checkpoints
- (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e5d494d78] 2017-06-26 17:31:56 -0400
-Branch: REL9_6_STABLE [a4d1ce095] 2017-06-26 17:31:56 -0400
-Branch: REL9_5_STABLE [dc311b5bd] 2017-06-26 17:31:56 -0400
-Branch: REL9_4_STABLE [47fec424c] 2017-06-26 17:31:56 -0400
-Branch: REL9_3_STABLE [cb59949f6] 2017-06-26 17:31:56 -0400
-Branch: REL9_2_STABLE [e96adaacd] 2017-06-26 17:31:56 -0400
--->
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [3bdea167e] 2017-06-18 19:12:56 -0700
-Branch: REL9_6_STABLE [810344436] 2017-06-18 19:13:15 -0700
-Branch: REL9_5_STABLE [1ba1adf77] 2017-06-18 19:13:50 -0700
-Branch: REL9_4_STABLE [a27c566c7] 2017-06-18 19:14:09 -0700
--->
- <para>
- Fix leakage of small subtransactions spilled to disk during logical
- decoding (Andres Freund)
- </para>
-
- <para>
- This resulted in temporary files consuming excessive disk space.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [524dbc143] 2017-05-13 15:06:40 -0700
-Branch: REL9_6_STABLE [bd619fcfe] 2017-05-13 15:06:40 -0700
-Branch: REL9_5_STABLE [fa9207c74] 2017-05-13 15:06:40 -0700
-Branch: REL9_4_STABLE [2dca50b76] 2017-05-13 15:06:40 -0700
--->
- <para>
- Reduce the work needed to build snapshots during creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
-
- <para>
- The previous algorithm was infeasibly expensive on a server with a
- lot of open transactions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [955a684e0] 2017-05-13 14:21:00 -0700
-Branch: REL9_6_STABLE [75784859c] 2017-05-13 14:21:00 -0700
-Branch: REL9_5_STABLE [b64a68e36] 2017-05-13 14:21:00 -0700
-Branch: REL9_4_STABLE [79abd23db] 2017-05-13 14:21:00 -0700
--->
- <para>
- Fix race condition that could indefinitely delay creation of
- logical-decoding slots (Andres Freund, Petr Jelinek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [50ee1c746] 2017-05-12 18:17:29 -0400
-Branch: REL9_6_STABLE [b7a98b14c] 2017-05-12 18:17:29 -0400
-Branch: REL9_5_STABLE [3569a9a73] 2017-05-12 18:17:29 -0400
-Branch: REL9_4_STABLE [64417f8d3] 2017-05-12 18:17:29 -0400
-Branch: master [8085a4f75] 2017-05-12 18:30:17 -0400
-Branch: REL9_6_STABLE [f7d0a31ce] 2017-05-12 18:30:02 -0400
-Branch: REL9_5_STABLE [8a7506e04] 2017-05-12 18:30:02 -0400
-Branch: REL9_4_STABLE [ef7a6b3c9] 2017-05-12 18:30:02 -0400
-Branch: master [2df5d4655] 2017-05-12 19:05:27 -0400
-Branch: REL9_6_STABLE [d0755dc32] 2017-05-12 19:05:28 -0400
-Branch: REL9_5_STABLE [e7955ac64] 2017-05-12 19:05:29 -0400
-Branch: REL9_4_STABLE [32900700f] 2017-05-12 19:05:30 -0400
--->
- <para>
- Reduce overhead in processing syscache invalidation events (Tom Lane)
- </para>
-
- <para>
- This is particularly helpful for logical decoding, which triggers
- frequent cache invalidation.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d8e6b84bd] 2017-06-19 15:33:41 -0400
-Branch: REL9_6_STABLE [1f184426b] 2017-06-19 15:33:41 -0400
--->
- <para>
- Remove incorrect heuristic used in some cases to estimate join
- selectivity based on the presence of foreign-key constraints
- (David Rowley)
- </para>
-
- <para>
- In some cases where a multi-column foreign key constraint existed but
- did not exactly match a query's join structure, the planner used an
- estimation heuristic that turns out not to work well at all. Revert
- such cases to the way they were estimated before 9.6.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b1cb32fb6] 2017-07-11 16:48:59 -0400
-Branch: REL9_6_STABLE [123368061] 2017-07-11 16:48:59 -0400
-Branch: REL9_5_STABLE [56076b88d] 2017-07-11 16:48:59 -0400
-Branch: REL9_4_STABLE [a8358559e] 2017-07-11 16:48:59 -0400
-Branch: REL9_3_STABLE [521fede16] 2017-07-11 16:48:59 -0400
-Branch: REL9_2_STABLE [55204850a] 2017-07-11 16:48:59 -0400
-Branch: master [bc2d716ad] 2017-07-12 18:00:04 -0400
-Branch: REL9_6_STABLE [ff2d53722] 2017-07-12 18:00:04 -0400
-Branch: REL9_5_STABLE [2346f1c10] 2017-07-12 18:00:04 -0400
-Branch: REL9_4_STABLE [a2320b337] 2017-07-12 18:00:04 -0400
-Branch: REL9_3_STABLE [aea1a3f0e] 2017-07-12 18:00:04 -0400
-Branch: REL9_2_STABLE [75670ec37] 2017-07-12 18:00:04 -0400
--->
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9c7dc8928] 2017-06-27 17:51:11 -0400
-Branch: REL9_6_STABLE [3a7bd59c4] 2017-06-27 17:51:11 -0400
-Branch: REL9_5_STABLE [9a2706572] 2017-06-27 17:51:11 -0400
-Branch: REL9_4_STABLE [dc777f9db] 2017-06-27 17:51:11 -0400
-Branch: REL9_3_STABLE [66dee28b4] 2017-06-27 17:51:11 -0400
--->
- <para>
- Allow window functions to be used in sub-<literal>SELECT</literal>s that
- are within the arguments of an aggregate function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [7086be6e3] 2017-07-24 15:57:24 -0400
-Branch: REL9_6_STABLE [971faefc2] 2017-07-24 16:24:42 -0400
--->
- <para>
- Ensure that a view's <literal>CHECK OPTIONS</literal> clause is enforced
- properly when the underlying table is a foreign table (Etsuro Fujita)
- </para>
-
- <para>
- Previously, the update might get pushed entirely to the foreign
- server, but the need to verify the view conditions was missed if so.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [94aced8cd] 2017-05-26 15:16:59 -0400
-Branch: REL9_6_STABLE [acab87ece] 2017-05-26 15:16:59 -0400
-Branch: REL9_5_STABLE [9ded51719] 2017-05-26 15:16:59 -0400
-Branch: REL9_4_STABLE [8f62b388b] 2017-05-26 15:16:59 -0400
-Branch: REL9_3_STABLE [525780c62] 2017-05-26 15:16:59 -0400
-Branch: REL9_2_STABLE [da9165686] 2017-05-26 15:16:59 -0400
--->
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [12590c5d3] 2017-05-15 11:33:44 -0400
-Branch: REL9_6_STABLE [b35cce914] 2017-05-15 11:33:44 -0400
-Branch: REL9_5_STABLE [53a1aa9f9] 2017-05-15 11:33:45 -0400
--->
- <para>
- Fix dangling pointer in <command>ALTER TABLE</command> when there is a
- comment on a constraint belonging to the table (David Rowley)
- </para>
-
- <para>
- Re-applying the comment to the reconstructed constraint could fail
- with a weird error message, or even crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [b37448122] 2017-08-03 20:34:45 -0400
-Branch: REL9_6_STABLE [df04db041] 2017-08-03 20:49:07 -0400
-Branch: REL9_5_STABLE [f2878a608] 2017-08-03 20:55:44 -0400
-Branch: REL9_4_STABLE [e0446d06e] 2017-08-03 21:08:39 -0400
-Branch: REL9_3_STABLE [b7d1bc820] 2017-08-03 21:29:36 -0400
-Branch: REL9_2_STABLE [22eb38caa] 2017-08-03 21:42:46 -0400
--->
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [86705aa8c] 2017-08-03 13:24:48 -0400
-Branch: REL9_6_STABLE [1f220c390] 2017-08-03 13:25:32 -0400
--->
- <para>
- Allow a foreign table's <literal>CHECK</literal> constraints to be
- initially <literal>NOT VALID</literal> (Amit Langote)
- </para>
-
- <para>
- <command>CREATE TABLE</command> silently drops <literal>NOT VALID</literal>
- specifiers for <literal>CHECK</literal> constraints, reasoning that the
- table must be empty so the constraint can be validated immediately.
- But this is wrong for <command>CREATE FOREIGN TABLE</command>, where there's
- no reason to suppose that the underlying table is empty, and even if
- it is it's no business of ours to decide that the constraint can be
- treated as valid going forward. Skip this <quote>optimization</quote> for
- foreign tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [30681c830] 2017-06-16 11:33:12 +0300
-Branch: REL9_6_STABLE [a9a5eb32b] 2017-06-16 11:39:45 +0300
-Branch: REL9_5_STABLE [501e6f8b7] 2017-06-16 11:44:00 +0300
-Branch: REL9_4_STABLE [6338b50b9] 2017-06-16 11:46:15 +0300
-Branch: REL9_3_STABLE [b47e2f7a9] 2017-06-16 11:46:11 +0300
-Branch: REL9_2_STABLE [ac93a78b0] 2017-06-16 11:46:26 +0300
--->
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [34aebcf42] 2017-06-02 19:11:15 -0700
-Branch: REL9_6_STABLE [8a7cd781e] 2017-06-02 19:11:23 -0700
--->
- <para>
- Allow parallelism in the query plan when <command>COPY</command> copies from
- a query's result (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [da11977de] 2017-07-12 22:06:13 +0300
-Branch: REL9_6_STABLE [bbeec3c74] 2017-07-12 22:06:10 +0300
-Branch: REL9_5_STABLE [209970ded] 2017-07-12 22:03:58 +0300
-Branch: REL9_4_STABLE [852902822] 2017-07-12 22:04:03 +0300
-Branch: REL9_3_STABLE [11854dee0] 2017-07-12 22:04:08 +0300
-Branch: REL9_2_STABLE [40ba61b44] 2017-07-12 22:04:15 +0300
--->
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d761fe218] 2017-05-21 13:05:16 -0400
-Branch: REL9_6_STABLE [c101d83a3] 2017-05-21 13:05:17 -0400
-Branch: REL9_5_STABLE [5032f704e] 2017-05-21 13:05:17 -0400
-Branch: REL9_4_STABLE [83f4e8f71] 2017-05-21 13:05:17 -0400
-Branch: REL9_3_STABLE [b3c536bce] 2017-05-21 13:05:17 -0400
-Branch: REL9_2_STABLE [798d2321e] 2017-05-21 13:05:17 -0400
--->
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9ae2661fe] 2017-05-24 15:28:34 -0400
-Branch: REL9_6_STABLE [8527132e5] 2017-05-24 15:28:34 -0400
-Branch: REL9_5_STABLE [2c5e3fab3] 2017-05-24 15:28:35 -0400
-Branch: REL9_4_STABLE [a3043d363] 2017-05-24 15:28:35 -0400
-Branch: REL9_3_STABLE [971a158e6] 2017-05-24 15:28:35 -0400
-Branch: REL9_2_STABLE [a047270d5] 2017-05-24 15:28:35 -0400
--->
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bebe174bb] 2017-07-28 12:25:43 -0400
-Branch: REL9_6_STABLE [30a5c8bfb] 2017-07-31 12:10:36 -0400
-Branch: REL9_5_STABLE [99eea89db] 2017-07-31 12:10:36 -0400
-Branch: REL9_4_STABLE [d48180ec8] 2017-07-31 12:10:36 -0400
-Branch: REL9_3_STABLE [b92f17277] 2017-07-31 12:10:36 -0400
-Branch: REL9_2_STABLE [b4b958251] 2017-07-31 12:10:36 -0400
-Branch: master [3c163a7fc] 2017-07-28 14:25:28 -0400
-Branch: REL9_6_STABLE [1e58c503e] 2017-07-31 12:38:35 -0400
-Branch: REL9_5_STABLE [df52739ce] 2017-07-31 12:38:35 -0400
-Branch: REL9_4_STABLE [9cbdc6894] 2017-07-31 12:38:35 -0400
-Branch: REL9_3_STABLE [0d8f015e7] 2017-07-31 12:38:35 -0400
-Branch: REL9_2_STABLE [456c7dff2] 2017-07-31 12:38:35 -0400
--->
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [e6c33d594] 2017-06-07 14:01:46 +0300
-Branch: REL9_6_STABLE [f44c609ea] 2017-06-07 14:04:54 +0300
-Branch: REL9_5_STABLE [739cb7f8b] 2017-06-07 14:03:27 +0300
-Branch: REL9_4_STABLE [1fe1fc449] 2017-06-07 14:04:49 +0300
-Branch: REL9_3_STABLE [f2fa0c651] 2017-06-07 14:04:44 +0300
--->
- <para>
- In <application>libpq</application>, reset GSS/SASL and SSPI authentication
- state properly after a failed connection attempt (Michael Paquier)
- </para>
-
- <para>
- Failure to do this meant that when falling back from SSL to non-SSL
- connections, a GSS/SASL failure in the SSL attempt would always cause
- the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9485516ea] 2017-05-17 12:24:19 -0400
-Branch: REL9_6_STABLE [bee9e8698] 2017-05-17 12:24:19 -0400
-Branch: REL9_5_STABLE [49dfbb53c] 2017-05-17 12:24:19 -0400
-Branch: REL9_4_STABLE [ff0e30512] 2017-05-17 12:24:19 -0400
-Branch: REL9_3_STABLE [6bc710f6d] 2017-05-17 12:24:19 -0400
-Branch: REL9_2_STABLE [07477130e] 2017-05-17 12:24:19 -0400
--->
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3eb9a5e7c] 2017-08-03 17:36:39 -0400
-Branch: REL9_6_STABLE [3d7632829] 2017-08-03 17:36:41 -0400
-Branch: REL9_5_STABLE [65048cf23] 2017-08-03 17:36:42 -0400
-Branch: REL9_4_STABLE [b93217653] 2017-08-03 17:36:43 -0400
-Branch: REL9_3_STABLE [035bb8222] 2017-08-03 17:36:23 -0400
--->
- <para>
- Fix <application>pg_dump</application> and <application>pg_restore</application> to
- emit <command>REFRESH MATERIALIZED VIEW</command> commands last (Tom Lane)
- </para>
-
- <para>
- This prevents errors during dump/restore when a materialized view
- refers to tables owned by a different user.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [4d57e8381] 2017-08-02 18:26:59 -0400
-Branch: REL9_6_STABLE [060393f2a] 2017-08-02 18:26:58 -0400
-Branch: REL9_5_STABLE [f3142c027] 2017-08-02 18:26:58 -0400
-Branch: REL9_4_STABLE [330e68734] 2017-08-02 18:26:57 -0400
-Branch: master [9a3b5d3ad] 2017-08-03 14:54:28 -0400
-Branch: REL9_6_STABLE [611840074] 2017-08-03 14:55:18 -0400
-Branch: REL9_5_STABLE [12f1e523a] 2017-08-03 14:55:17 -0400
-Branch: REL9_4_STABLE [69ad12b58] 2017-08-03 14:55:17 -0400
--->
- <para>
- Improve <application>pg_dump</application>/<application>pg_restore</application>'s
- reporting of error conditions originating in <application>zlib</application>
- (Vladimir Kunschikov, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [93f039b49] 2017-07-22 20:20:09 -0400
-Branch: REL9_6_STABLE [82ebda7ff] 2017-07-22 20:20:09 -0400
-Branch: REL9_5_STABLE [7debd9f79] 2017-07-22 20:20:09 -0400
-Branch: REL9_4_STABLE [502ead3d6] 2017-07-22 20:20:10 -0400
-Branch: REL9_3_STABLE [68a22bc69] 2017-07-22 20:20:10 -0400
--->
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to
- drop event triggers as expected (Tom Lane)
- </para>
-
- <para>
- It also now correctly assigns ownership of event triggers; before,
- they were restored as being owned by the superuser running the
- restore script.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [4500edc7e] 2017-06-28 10:33:57 -0400
-Branch: REL9_6_STABLE [a2de017b3] 2017-06-28 10:34:01 -0400
--->
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to not
- fail when the <literal>public</literal> schema doesn't exist (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0461b66e3] 2017-05-26 12:51:05 -0400
-Branch: REL9_6_STABLE [5886c7d58] 2017-05-26 12:51:05 -0400
-Branch: REL9_5_STABLE [41c4eb5ec] 2017-05-26 12:51:05 -0400
-Branch: REL9_4_STABLE [1cfc9dc75] 2017-05-26 12:51:05 -0400
-Branch: REL9_3_STABLE [a561254e4] 2017-05-26 12:51:05 -0400
-Branch: REL9_2_STABLE [f62e1eff5] 2017-05-26 12:51:06 -0400
--->
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bd61d5a19] 2017-06-19 11:02:45 -0400
-Branch: REL9_6_STABLE [3ef40dcec] 2017-06-19 11:03:02 -0400
-Branch: REL9_5_STABLE [4fc274dd8] 2017-06-19 11:03:07 -0400
-Branch: REL9_4_STABLE [d063f972d] 2017-06-19 11:03:11 -0400
-Branch: REL9_3_STABLE [2943c04f7] 2017-06-19 11:03:16 -0400
-Branch: REL9_2_STABLE [c10cbf77a] 2017-06-19 11:03:21 -0400
--->
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b4af9e3f3] 2017-07-24 15:16:31 -0400
-Branch: REL9_6_STABLE [3a07ba128] 2017-07-24 15:16:31 -0400
-Branch: REL9_5_STABLE [f579580be] 2017-07-24 15:16:31 -0400
-Branch: REL9_4_STABLE [f0f255a34] 2017-07-24 15:16:31 -0400
-Branch: REL9_3_STABLE [b6d640047] 2017-07-24 15:16:31 -0400
-Branch: REL9_2_STABLE [d9874fde8] 2017-07-24 15:16:31 -0400
--->
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [eb145fdfe] 2017-07-20 11:29:36 -0400
-Branch: REL9_6_STABLE [41ada8377] 2017-07-20 11:29:36 -0400
-Branch: REL9_5_STABLE [c2bbec9f2] 2017-07-20 11:29:36 -0400
-Branch: REL9_4_STABLE [6ab4a1136] 2017-07-20 11:29:36 -0400
-Branch: REL9_3_STABLE [e947838ae] 2017-07-20 11:29:36 -0400
--->
- <para>
- Fix dumping of outer joins with empty constraints, such as the result
- of a <literal>NATURAL LEFT JOIN</literal> with no common columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a3ca72ae9] 2017-07-13 19:25:03 -0400
-Branch: REL9_6_STABLE [3b0c2dbed] 2017-07-13 19:24:44 -0400
-Branch: REL9_5_STABLE [3fbebd781] 2017-07-13 19:24:44 -0400
-Branch: REL9_4_STABLE [26d867875] 2017-07-13 19:24:44 -0400
-Branch: REL9_3_STABLE [0ecc407d9] 2017-07-13 19:24:44 -0400
-Branch: REL9_2_STABLE [bccfb1776] 2017-07-13 19:24:44 -0400
--->
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [8046465c2] 2017-07-14 16:02:53 +0300
-Branch: REL9_6_STABLE [cedd25ae8] 2017-07-14 16:03:05 +0300
-Branch: REL9_5_STABLE [f20d58a6f] 2017-07-14 16:03:12 +0300
-Branch: REL9_4_STABLE [240299806] 2017-07-14 16:03:16 +0300
-Branch: REL9_3_STABLE [f3633689f] 2017-07-14 16:03:23 +0300
-Branch: REL9_2_STABLE [4b994a96c] 2017-07-14 16:03:27 +0300
--->
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [a46fe6e8b] 2017-07-21 14:25:36 -0400
-Branch: REL9_6_STABLE [73fbf3d3d] 2017-07-21 22:04:55 -0400
-Branch: REL9_5_STABLE [ed367be64] 2017-07-21 22:05:07 -0400
--->
- <para>
- Fix <application>pg_rewind</application> to correctly handle files exceeding 2GB
- (Kuntal Ghosh, Michael Paquier)
- </para>
-
- <para>
- Ordinarily such files won't appear in <productname>PostgreSQL</productname> data
- directories, but they could be present in some cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [b710248dd] 2017-06-20 13:20:10 -0400
-Branch: REL9_6_STABLE [0efdbd323] 2017-06-20 13:20:02 -0400
-Branch: REL9_5_STABLE [f4f867bda] 2017-06-20 13:20:02 -0400
-Branch: REL9_4_STABLE [a0e854881] 2017-06-20 13:20:02 -0400
-Branch: REL9_3_STABLE [5c890645d] 2017-06-20 13:20:02 -0400
-Branch: REL9_2_STABLE [65beccae5] 2017-06-20 13:20:02 -0400
--->
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [c25ed2006] 2017-06-05 16:10:07 -0700
-Branch: REL9_6_STABLE [d3ca4b4b4] 2017-06-05 16:10:07 -0700
-Branch: REL9_5_STABLE [25653c171] 2017-06-05 16:10:07 -0700
--->
- <para>
- Fix <application>pg_xlogdump</application>'s computation of WAL record length
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8bf58c0d9] 2017-07-21 12:51:38 -0400
-Branch: REL9_6_STABLE [d86a2b7b5] 2017-07-21 12:51:38 -0400
-Branch: REL9_5_STABLE [72318eaed] 2017-07-21 12:51:38 -0400
-Branch: REL9_4_STABLE [cb2b1cac0] 2017-07-21 12:51:38 -0400
-Branch: REL9_3_STABLE [69711415e] 2017-07-21 12:51:38 -0400
-Branch: master [88f48b57f] 2017-07-21 14:20:43 -0400
-Branch: REL9_6_STABLE [0d503dd1f] 2017-07-21 14:20:43 -0400
-Branch: REL9_5_STABLE [90877d28e] 2017-07-21 14:20:43 -0400
-Branch: REL9_4_STABLE [a648fc70a] 2017-07-21 14:20:43 -0400
-Branch: REL9_3_STABLE [6d9de660d] 2017-07-21 14:20:43 -0400
--->
- <para>
- In <filename>postgres_fdw</filename>, re-establish connections to remote
- servers after <command>ALTER SERVER</command> or <command>ALTER USER
- MAPPING</command> commands (Kyotaro Horiguchi)
- </para>
-
- <para>
- This ensures that option changes affecting connection parameters will
- be applied promptly.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [ae9bfc5d6] 2017-06-07 15:14:55 -0400
-Branch: REL9_6_STABLE [fd849956c] 2017-06-07 15:24:22 -0400
-Branch: REL9_5_STABLE [b7665f079] 2017-06-07 15:33:32 -0400
-Branch: REL9_4_STABLE [c02c450cf] 2017-06-07 15:40:35 -0400
-Branch: REL9_3_STABLE [fc267a0c3] 2017-06-07 15:41:05 -0400
--->
- <para>
- In <filename>postgres_fdw</filename>, allow cancellation of remote
- transaction control commands (Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows us to quickly escape a wait for an unresponsive
- remote server in many more cases than previously.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [596a7c8df] 2017-05-11 14:51:21 -0400
-Branch: REL9_6_STABLE [128e133cc] 2017-05-11 14:51:33 -0400
-Branch: REL9_5_STABLE [6f2fe2468] 2017-05-11 14:51:38 -0400
-Branch: REL9_4_STABLE [5c633f76b] 2017-05-11 14:51:46 -0400
--->
- <para>
- Increase <literal>MAX_SYSCACHE_CALLBACKS</literal> to provide more room for
- extensions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e9a3c047a] 2017-06-01 13:32:55 -0400
-Branch: REL9_6_STABLE [8d9b4fe01] 2017-06-01 13:32:56 -0400
-Branch: REL9_5_STABLE [68938ab8e] 2017-06-01 13:32:56 -0400
-Branch: REL9_4_STABLE [894ce0e97] 2017-06-01 13:32:56 -0400
-Branch: REL9_3_STABLE [cee7238de] 2017-06-01 13:32:56 -0400
-Branch: REL9_2_STABLE [a378b9bc2] 2017-06-01 13:32:56 -0400
--->
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [614350a3a] 2017-06-05 14:24:42 -0400
-Branch: REL9_6_STABLE [b64ff9c5a] 2017-06-05 14:27:59 -0400
-Branch: REL9_5_STABLE [0fde390f6] 2017-06-05 14:28:13 -0400
-Branch: REL9_4_STABLE [307fc49d5] 2017-06-05 14:28:26 -0400
-Branch: REL9_3_STABLE [fe39a086d] 2017-06-05 14:28:44 -0400
-Branch: REL9_2_STABLE [545dc4d21] 2017-06-05 14:29:00 -0400
-Branch: master [2e02136fe] 2017-06-05 20:38:46 -0400
-Branch: REL9_6_STABLE [ec504aff7] 2017-06-05 20:39:53 -0400
-Branch: REL9_5_STABLE [b2482ab83] 2017-06-05 20:40:11 -0400
-Branch: REL9_4_STABLE [6da999635] 2017-06-05 20:40:27 -0400
-Branch: REL9_3_STABLE [da30fa603] 2017-06-05 20:40:47 -0400
-Branch: REL9_2_STABLE [f964a7c5a] 2017-06-05 20:41:01 -0400
--->
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [b757e01f6] 2017-05-12 10:21:13 -0400
-Branch: REL9_6_STABLE [69ce3ead1] 2017-05-12 10:22:20 -0400
-Branch: REL9_5_STABLE [8ec82ee6a] 2017-05-12 10:23:39 -0400
-Branch: REL9_4_STABLE [616dd9978] 2017-05-12 10:24:00 -0400
-Branch: REL9_3_STABLE [2c7d2114b] 2017-05-12 10:24:16 -0400
-Branch: REL9_2_STABLE [614f83c12] 2017-05-12 10:24:36 -0400
--->
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [71ad8000d] 2017-07-23 23:53:27 -0700
-Branch: REL9_6_STABLE [bcc2c3b45] 2017-07-23 23:53:37 -0700
-Branch: REL9_5_STABLE [bef96e57e] 2017-07-23 23:53:41 -0700
-Branch: REL9_4_STABLE [0328bd1ef] 2017-07-23 23:53:46 -0700
-Branch: REL9_3_STABLE [9842c1b55] 2017-07-23 23:53:51 -0700
-Branch: REL9_2_STABLE [4885e5c88] 2017-07-23 23:53:55 -0700
--->
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [56b6ef893] 2017-05-12 11:11:49 -0400
-Branch: REL9_6_STABLE [cb701af78] 2017-05-12 11:21:20 -0400
-Branch: REL9_5_STABLE [054a897c4] 2017-05-12 11:26:40 -0400
-Branch: REL9_4_STABLE [d39d968f5] 2017-05-12 11:27:56 -0400
-Branch: master [93b7d9731] 2017-06-10 10:19:06 -0400
-Branch: REL9_6_STABLE [3c017a545] 2017-06-10 10:22:14 -0400
-Branch: REL9_5_STABLE [11aa362c8] 2017-06-10 10:23:21 -0400
-Branch: REL9_4_STABLE [6b2a0b475] 2017-06-10 10:23:43 -0400
-Branch: master [fd2487e49] 2017-07-16 11:24:29 -0400
-Branch: REL9_6_STABLE [b4a1d69ed] 2017-07-16 11:27:00 -0400
-Branch: REL9_5_STABLE [7eb4124da] 2017-07-16 11:27:07 -0400
-Branch: REL9_4_STABLE [9c3f502b4] 2017-07-16 11:27:15 -0400
--->
- <para>
- In MSVC builds, honor <literal>PROVE_FLAGS</literal> settings
- on <filename>vcregress.pl</filename>'s command line (Andrew Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-3">
- <title>Release 9.6.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.2.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.3</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are using third-party replication tools that depend
- on <quote>logical decoding</quote>, see the fourth changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.2,
- see <xref linkend="release-9-6-2"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [3eefc5105] 2017-05-08 07:24:24 -0700
-Branch: REL9_6_STABLE [c928addfc] 2017-05-08 07:24:27 -0700
-Branch: REL9_5_STABLE [db2158108] 2017-05-08 07:24:27 -0700
-Branch: REL9_4_STABLE [b2423f0fa] 2017-05-08 07:24:27 -0700
-Branch: REL9_3_STABLE [b5b124046] 2017-05-08 07:24:28 -0700
-Branch: REL9_2_STABLE [99cbb0bd9] 2017-05-08 07:24:28 -0700
--->
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-6-4"/>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [e2d4ef8de] 2017-05-08 09:26:32 -0400
-Branch: REL9_6_STABLE [c33c42362] 2017-05-08 09:18:57 -0400
-Branch: REL9_5_STABLE [d45cd7c0e] 2017-05-08 09:19:07 -0400
-Branch: REL9_4_STABLE [3e5ea1f9b] 2017-05-08 09:19:15 -0400
-Branch: REL9_3_STABLE [4f1b2089a] 2017-05-08 09:19:23 -0400
-Branch: REL9_2_STABLE [d035c1b97] 2017-05-08 09:19:42 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b6576e591] 2017-05-08 11:18:40 -0400
-Branch: REL9_6_STABLE [cad159432] 2017-05-08 11:18:54 -0400
-Branch: REL9_5_STABLE [a199582ef] 2017-05-08 11:19:00 -0400
-Branch: REL9_4_STABLE [d3f3f9568] 2017-05-08 11:19:04 -0400
-Branch: REL9_3_STABLE [703da1795] 2017-05-08 11:19:08 -0400
--->
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [0170b10df] 2017-05-08 07:24:24 -0700
-Branch: REL9_6_STABLE [aafbd1df9] 2017-05-08 07:24:27 -0700
-Branch: REL9_5_STABLE [96d745492] 2017-05-08 07:24:27 -0700
-Branch: REL9_4_STABLE [ed36c1fe1] 2017-05-08 07:24:27 -0700
-Branch: REL9_3_STABLE [3eab81127] 2017-05-08 07:24:28 -0700
--->
- <para>
- Restore <application>libpq</application>'s recognition of
- the <envar>PGREQUIRESSL</envar> environment variable (Daniel Gustafsson)
- </para>
-
- <para>
- Processing of this environment variable was unintentionally dropped
- in <productname>PostgreSQL</productname> 9.3, but its documentation remained.
- This creates a security hazard, since users might be relying on the
- environment variable to force SSL-encrypted connections, but that
- would no longer be guaranteed. Restore handling of the variable,
- but give it lower priority than <envar>PGSSLMODE</envar>, to avoid
- breaking configurations that work correctly with post-9.3 code.
- (CVE-2017-7485)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [2bef06d51] 2017-04-27 13:13:36 -0700
-Branch: REL9_6_STABLE [28afff347] 2017-04-27 13:13:36 -0700
-Branch: REL9_5_STABLE [47f896b5c] 2017-04-27 13:13:37 -0700
-Branch: REL9_4_STABLE [5da646138] 2017-04-27 13:13:37 -0700
-Branch: master [56e19d938] 2017-04-27 15:29:15 -0700
-Branch: REL9_6_STABLE [29e8c881d] 2017-04-27 15:29:33 -0700
-Branch: REL9_5_STABLE [54270d7eb] 2017-04-27 15:29:43 -0700
-Branch: REL9_4_STABLE [b6ecf26cc] 2017-04-27 15:29:52 -0700
--->
- <para>
- Fix possibly-invalid initial snapshot during logical decoding
- (Petr Jelinek, Andres Freund)
- </para>
-
- <para>
- The initial snapshot created for a logical decoding replication slot
- was potentially incorrect. This could cause third-party tools that
- use logical decoding to copy incomplete/inconsistent initial data.
- This was more likely to happen if the source server was busy at the
- time of slot creation, or if another logical slot already existed.
- </para>
-
- <para>
- If you are using a replication tool that depends on logical decoding,
- and it should have copied a nonempty data set at the start of
- replication, it is advisable to recreate the replica after
- installing this update, or to verify its contents against the source
- server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [87f998203] 2017-03-14 11:51:11 -0400
-Branch: REL9_6_STABLE [36fcb36b8] 2017-03-14 11:52:27 -0400
-Branch: REL9_5_STABLE [c17a3f57e] 2017-03-14 12:03:29 -0400
-Branch: REL9_4_STABLE [bbd5e600f] 2017-03-14 12:06:36 -0400
-Branch: REL9_3_STABLE [6bd7816e7] 2017-03-14 12:08:14 -0400
-Branch: REL9_2_STABLE [b2ae1d6c4] 2017-03-14 12:10:36 -0400
--->
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0874d4f3e] 2017-04-23 13:11:06 -0400
-Branch: REL9_6_STABLE [f5885488d] 2017-04-23 13:11:08 -0400
-Branch: REL9_5_STABLE [a66e01bbc] 2017-04-23 13:10:57 -0400
-Branch: REL9_4_STABLE [2e14541c4] 2017-04-23 13:10:57 -0400
-Branch: REL9_3_STABLE [856580873] 2017-04-23 13:10:57 -0400
-Branch: REL9_2_STABLE [952e33b05] 2017-04-23 13:10:58 -0400
--->
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [1d04a59be] 2017-02-22 03:11:58 +0900
-Branch: REL9_6_STABLE [9fab155c6] 2017-02-22 08:29:32 +0900
-Branch: REL9_5_STABLE [feb659cce] 2017-02-22 08:29:44 +0900
-Branch: REL9_4_STABLE [a3eb715a3] 2017-02-22 08:29:57 +0900
--->
- <para>
- Avoid possible crash in <application>walsender</application> due to failure
- to initialize a string buffer (Stas Kelvich, Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3f074845a] 2017-05-04 13:59:39 -0400
-Branch: REL9_6_STABLE [855f0e924] 2017-05-04 13:59:13 -0400
-Branch: REL9_5_STABLE [6cfb428b0] 2017-05-04 13:59:13 -0400
--->
- <para>
- Fix possible crash when rescanning a nearest-neighbor index-only scan
- on a GiST index (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [893902085] 2017-04-24 13:00:30 -0400
-Branch: REL9_6_STABLE [dfa4baf91] 2017-04-24 13:00:23 -0400
-Branch: master [aa1351f1e] 2017-04-26 16:17:34 -0400
-Branch: REL9_6_STABLE [e880df25e] 2017-04-26 16:17:29 -0400
--->
- <para>
- Prevent delays in postmaster's launching of multiple parallel worker
- processes (Tom Lane)
- </para>
-
- <para>
- There could be a significant delay (up to tens of seconds) before
- satisfying a query's request for more than one worker process, or when
- multiple queries requested workers simultaneously. On most platforms
- this required unlucky timing, but on some it was the typical case.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4fe04244b] 2017-04-24 12:16:58 -0400
-Branch: REL9_6_STABLE [63f64d282] 2017-04-24 12:16:58 -0400
-Branch: REL9_5_STABLE [dba1f310a] 2017-04-24 12:16:58 -0400
-Branch: REL9_4_STABLE [436b560b8] 2017-04-24 12:16:58 -0400
--->
- <para>
- Fix postmaster's handling of <function>fork()</function> failure for a
- background worker process (Tom Lane)
- </para>
-
- <para>
- Previously, the postmaster updated portions of its state as though
- the process had been launched successfully, resulting in subsequent
- confusion.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [89deca582] 2017-04-07 12:18:38 -0400
-Branch: REL9_6_STABLE [c0a493e17] 2017-04-07 12:18:38 -0400
--->
- <para>
- Fix possible <quote>no relation entry for relid 0</quote> error when
- planning nested set operations (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [1ea60ad60] 2017-03-15 12:28:54 -0400
-Branch: REL9_6_STABLE [5feb78ae8] 2017-03-15 12:41:00 -0400
-Branch: master [f120b614e] 2017-03-24 12:30:39 -0400
-Branch: REL9_6_STABLE [5674a258f] 2017-03-24 12:39:07 -0400
-Branch: master [7d8f6986b] 2017-03-31 21:01:20 -0400
-Branch: REL9_6_STABLE [fb1879c37] 2017-03-31 21:10:30 -0400
--->
- <para>
- Fix assorted minor issues in planning of parallel queries (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [76799fc89] 2017-04-17 15:29:15 -0400
-Branch: REL9_6_STABLE [6c73b390b] 2017-04-17 15:29:00 -0400
-Branch: REL9_5_STABLE [6f0f98bb0] 2017-04-17 15:29:00 -0400
--->
- <para>
- Avoid applying <quote>physical targetlist</quote> optimization to custom
- scans (Dmitry Ivanov, Tom Lane)
- </para>
-
- <para>
- This optimization supposed that retrieving all columns of a tuple
- is inexpensive, which is true for ordinary Postgres tuples; but it
- might not be the case for a custom scan provider.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [aa5d3c0b3] 2017-05-06 21:46:35 -0400
-Branch: REL9_6_STABLE [92b15224b] 2017-05-06 21:46:41 -0400
-Branch: REL9_5_STABLE [d617c7629] 2017-05-06 21:46:56 -0400
--->
- <para>
- Use the correct sub-expression when applying a <literal>FOR ALL</literal>
- row-level-security policy (Stephen Frost)
- </para>
-
- <para>
- In some cases the <literal>WITH CHECK</literal> restriction would be applied
- when the <literal>USING</literal> restriction is more appropriate.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9209e0760] 2017-05-02 18:06:09 -0400
-Branch: REL9_6_STABLE [d56b8b41b] 2017-05-02 18:05:54 -0400
-Branch: REL9_5_STABLE [d0d3a57bf] 2017-05-02 18:05:54 -0400
-Branch: REL9_4_STABLE [c6b3d0706] 2017-05-02 18:05:54 -0400
-Branch: REL9_3_STABLE [062824edd] 2017-05-02 18:05:54 -0400
-Branch: REL9_2_STABLE [c9d6c564f] 2017-05-02 18:05:54 -0400
--->
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [f30f34e58] 2017-02-12 16:03:41 -0500
-Branch: REL9_6_STABLE [4d43d5d35] 2017-02-12 16:03:46 -0500
-Branch: REL9_5_STABLE [660e457f5] 2017-02-12 16:03:54 -0500
-Branch: REL9_4_STABLE [804aad8ff] 2017-02-12 16:04:09 -0500
-Branch: REL9_3_STABLE [b167d57d5] 2017-02-12 16:05:12 -0500
-Branch: REL9_2_STABLE [27a8c8033] 2017-02-12 16:05:23 -0500
--->
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [6a4dda44e] 2017-04-28 14:48:38 -0400
-Branch: REL9_6_STABLE [8a9c83bfa] 2017-04-28 14:48:44 -0400
-Branch: REL9_5_STABLE [a0291c330] 2017-04-28 14:50:36 -0400
-Branch: REL9_4_STABLE [93a07a68e] 2017-04-28 14:52:20 -0400
-Branch: REL9_3_STABLE [954744f7a] 2017-04-28 14:53:56 -0400
-Branch: REL9_2_STABLE [f60f0c8fe] 2017-04-28 14:55:42 -0400
--->
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a8df75b0a] 2017-03-06 16:50:47 -0500
-Branch: REL9_6_STABLE [943140d57] 2017-03-06 16:50:47 -0500
-Branch: REL9_5_STABLE [420d9ec0a] 2017-03-06 16:50:47 -0500
--->
- <para>
- Avoid dangling pointer in <command>COPY ... TO</command> when row-level
- security is active for the source table (Tom Lane)
- </para>
-
- <para>
- Usually this had no ill effects, but sometimes it would cause
- unexpected errors or crashes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [dbca84f04] 2017-03-04 16:09:33 -0500
-Branch: REL9_6_STABLE [68f7b91e5] 2017-03-04 16:09:33 -0500
-Branch: REL9_5_STABLE [807df31d1] 2017-03-04 16:09:33 -0500
--->
- <para>
- Avoid accessing an already-closed relcache entry in <command>CLUSTER</command>
- and <command>VACUUM FULL</command> (Tom Lane)
- </para>
-
- <para>
- With some bad luck, this could lead to indexes on the target
- relation getting rebuilt with the wrong persistence setting.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Gierth <rhodiumtoad@postgresql.org>
-Branch: master [1914c5ea7] 2017-03-16 22:28:03 +0000
-Branch: REL9_6_STABLE [9b626f6c3] 2017-03-16 22:31:49 +0000
-Branch: REL9_5_STABLE [ee78ad5bc] 2017-03-16 22:33:59 +0000
-Branch: REL9_4_STABLE [269efd052] 2017-03-16 22:32:56 +0000
-Branch: REL9_3_STABLE [8f8a5aefc] 2017-03-16 22:33:18 +0000
-Branch: REL9_2_STABLE [a494ff4b0] 2017-03-16 22:33:38 +0000
-Branch: master [64ae420b2] 2017-03-17 14:35:54 +0000
-Branch: REL9_6_STABLE [733488dc6] 2017-03-17 14:46:15 +0000
--->
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f2ec57dee] 2017-02-15 16:40:05 -0500
-Branch: REL9_6_STABLE [354dfa235] 2017-02-15 16:40:05 -0500
-Branch: REL9_5_STABLE [96ba17640] 2017-02-15 16:40:06 -0500
-Branch: REL9_4_STABLE [d0e9c0e31] 2017-02-15 16:40:06 -0500
-Branch: REL9_3_STABLE [6a4941f8c] 2017-02-15 16:40:06 -0500
-Branch: REL9_2_STABLE [030705e4f] 2017-02-15 16:40:06 -0500
--->
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [d5286aa90] 2017-03-21 16:23:10 +0300
-Branch: REL9_6_STABLE [a4d07d2e9] 2017-03-21 16:24:10 +0300
--->
- <para>
- Fix incorrect support for certain <type>box</type> operators in SP-GiST
- (Nikita Glukhov)
- </para>
-
- <para>
- SP-GiST index scans using the operators <literal>&amp;&lt;</literal>
- <literal>&amp;&gt;</literal> <literal>&amp;&lt;|</literal> and <literal>|&amp;&gt;</literal>
- would yield incorrect answers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [df1a699e5] 2017-04-05 23:51:27 -0400
-Branch: REL9_6_STABLE [fd52b8834] 2017-04-05 23:51:28 -0400
-Branch: REL9_5_STABLE [d68a2b20a] 2017-04-05 23:51:28 -0400
-Branch: REL9_4_STABLE [8851bcf88] 2017-04-05 23:51:28 -0400
--->
- <para>
- Fix integer-overflow problems in <type>interval</type> comparison (Kyotaro
- Horiguchi, Tom Lane)
- </para>
-
- <para>
- The comparison operators for type <type>interval</type> could yield wrong
- answers for intervals larger than about 296000 years. Indexes on
- columns containing such large values should be reindexed, since they
- may be corrupt.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [0de791ed7] 2017-05-03 21:41:10 -0400
-Branch: REL9_6_STABLE [071d13395] 2017-05-04 21:17:46 -0400
-Branch: REL9_5_STABLE [9750a9583] 2017-05-04 21:20:26 -0400
-Branch: REL9_4_STABLE [12dd58d64] 2017-05-04 21:22:48 -0400
-Branch: REL9_3_STABLE [6e86b448f] 2017-05-04 21:31:12 -0400
-Branch: REL9_2_STABLE [a48d47908] 2017-05-04 22:39:23 -0400
--->
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [8f93bd851] 2017-02-08 18:04:59 -0500
-Branch: REL9_6_STABLE [404756fe8] 2017-02-08 18:04:59 -0500
-Branch: REL9_5_STABLE [7786b9848] 2017-02-08 18:04:59 -0500
-Branch: REL9_4_STABLE [1888fad44] 2017-02-08 18:04:59 -0500
-Branch: master [5d2adf0f8] 2017-02-09 15:50:16 -0500
-Branch: REL9_6_STABLE [fc96a5fbc] 2017-02-09 15:49:57 -0500
-Branch: REL9_5_STABLE [cf73c6bfc] 2017-02-09 15:49:57 -0500
-Branch: REL9_4_STABLE [86ef376bb] 2017-02-09 15:49:58 -0500
--->
- <para>
- Fix roundoff problems in <function>float8_timestamptz()</function>
- and <function>make_interval()</function> (Tom Lane)
- </para>
-
- <para>
- These functions truncated, rather than rounded, when converting a
- floating-point value to integer microseconds; that could cause
- unexpectedly off-by-one results.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a3eac988c] 2017-03-16 12:51:08 -0300
-Branch: REL9_6_STABLE [41306a511] 2017-03-16 12:51:08 -0300
-Branch: REL9_5_STABLE [087e696f0] 2017-03-16 12:51:08 -0300
-Branch: REL9_6_STABLE [1ec36a9eb] 2017-04-16 20:49:40 -0400
-Branch: REL9_5_STABLE [b6e6ae1dc] 2017-04-16 20:50:31 -0400
--->
- <para>
- Fix <function>pg_get_object_address()</function> to handle members of operator
- families correctly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: master [78874531b] 2017-03-24 13:53:40 +0300
-Branch: REL9_6_STABLE [8de6278d3] 2017-03-24 13:55:02 +0300
--->
- <para>
- Fix cancelling of <function>pg_stop_backup()</function> when attempting to stop
- a non-exclusive backup (Michael Paquier, David Steele)
- </para>
-
- <para>
- If <function>pg_stop_backup()</function> was cancelled while waiting for a
- non-exclusive backup to end, related state was left inconsistent;
- a new exclusive backup could not be started, and there were other minor
- problems.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [af2c5aa88] 2017-05-02 21:50:35 -0400
-Branch: REL9_6_STABLE [c521d5a8d] 2017-05-02 21:50:42 -0400
-Branch: REL9_5_STABLE [724cd4f06] 2017-05-02 21:50:47 -0400
-Branch: REL9_4_STABLE [5557b6af5] 2017-05-02 21:50:52 -0400
-Branch: REL9_3_STABLE [35ac926bf] 2017-05-02 21:50:56 -0400
-Branch: REL9_2_STABLE [1b6db75ef] 2017-05-02 21:51:01 -0400
-Branch: master [5788a5670] 2017-05-07 11:34:31 -0400
-Branch: REL9_6_STABLE [5042e9492] 2017-05-07 11:34:41 -0400
-Branch: REL9_5_STABLE [38ed45c91] 2017-05-07 11:34:48 -0400
-Branch: REL9_4_STABLE [6eedc6c18] 2017-05-07 11:34:58 -0400
-Branch: REL9_3_STABLE [07987304d] 2017-05-07 11:35:05 -0400
-Branch: REL9_2_STABLE [9061680f0] 2017-05-07 11:35:11 -0400
--->
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ff97741bc] 2017-03-08 12:21:23 -0500
-Branch: REL9_6_STABLE [e0a6ed8a2] 2017-03-08 12:21:12 -0500
-Branch: REL9_5_STABLE [50a9d714a] 2017-03-08 12:21:12 -0500
-Branch: REL9_4_STABLE [8dd5c4171] 2017-03-08 12:21:12 -0500
--->
- <para>
- Reduce memory management overhead for contexts containing many large
- blocks (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f97de05a1] 2017-02-21 17:51:37 -0500
-Branch: REL9_6_STABLE [62ed08422] 2017-02-21 17:51:27 -0500
-Branch: REL9_5_STABLE [ff1b032a9] 2017-02-21 17:51:28 -0500
-Branch: REL9_4_STABLE [d9959e6eb] 2017-02-21 17:51:28 -0500
-Branch: REL9_3_STABLE [3f613c6a4] 2017-02-21 17:51:28 -0500
-Branch: REL9_2_STABLE [775227590] 2017-02-21 17:51:28 -0500
--->
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [ff30aec75] 2017-03-17 11:14:01 +0200
-Branch: REL9_6_STABLE [38bdba54a] 2017-03-17 11:14:36 +0200
-Branch: REL9_5_STABLE [96fd76dd2] 2017-03-17 11:14:45 +0200
-Branch: REL9_4_STABLE [6b584c36a] 2017-03-17 11:14:49 +0200
-Branch: REL9_3_STABLE [3ebcc2498] 2017-03-17 11:14:53 +0200
-Branch: REL9_2_STABLE [9c52ddfce] 2017-03-17 11:14:58 +0200
-Branch: REL9_6_STABLE [4ae0805bb] 2017-03-24 12:39:23 +0200
-Branch: REL9_5_STABLE [42a60aa7f] 2017-03-24 12:39:20 +0200
-Branch: REL9_4_STABLE [6423ed7d4] 2017-03-24 12:39:17 +0200
-Branch: REL9_3_STABLE [e0e1ef46d] 2017-03-24 12:39:14 +0200
-Branch: REL9_2_STABLE [8ae3ff64b] 2017-03-24 12:39:01 +0200
--->
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [43c79c7d6] 2017-03-13 21:03:55 +0100
-Branch: REL9_6_STABLE [f08a90ecd] 2017-03-13 20:50:48 +0100
-Branch: REL9_5_STABLE [a8b3262ab] 2017-03-13 20:51:46 +0100
-Branch: REL9_4_STABLE [e060baaad] 2017-03-13 20:51:56 +0100
-Branch: REL9_3_STABLE [04207ef76] 2017-03-13 20:52:05 +0100
-Branch: REL9_2_STABLE [d8c207437] 2017-03-13 20:52:16 +0100
--->
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [d1ca82d0a] 2017-03-10 10:32:41 +0100
-Branch: REL9_6_STABLE [d0fef0654] 2017-03-10 10:50:46 +0100
-Branch: REL9_5_STABLE [466ee7a53] 2017-03-10 10:51:24 +0100
-Branch: REL9_4_STABLE [f6b906599] 2017-03-10 10:51:40 +0100
-Branch: REL9_3_STABLE [af471919b] 2017-03-10 10:51:51 +0100
-Branch: REL9_2_STABLE [731afc91f] 2017-03-10 10:52:01 +0100
--->
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Teodor Sigaev <teodor@sigaev.ru>
-Branch: REL9_6_STABLE [2ed391f95] 2017-03-24 19:23:13 +0300
--->
- <para>
- Fix <application>pgbench</application> to handle the combination
- of <option>--connect</option> and <option>--rate</option> options correctly
- (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ef2662394] 2017-03-07 11:36:42 -0500
-Branch: REL9_6_STABLE [0e2c85d13] 2017-03-07 11:36:35 -0500
--->
- <para>
- Fix <application>pgbench</application> to honor the long-form option
- spelling <option>--builtin</option>, as per its documentation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [330b84d8c] 2017-03-06 23:29:02 -0500
-Branch: REL9_6_STABLE [e961341cc] 2017-03-06 23:29:08 -0500
--->
- <para>
- Fix <application>pg_dump</application>/<application>pg_restore</application> to correctly
- handle privileges for the <literal>public</literal> schema when
- using <option>--clean</option> option (Stephen Frost)
- </para>
-
- <para>
- Other schemas start out with no privileges granted,
- but <literal>public</literal> does not; this requires special-case treatment
- when it is dropped and restored due to the <option>--clean</option> option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [299990ba1] 2017-03-06 19:33:59 -0500
-Branch: REL9_6_STABLE [8ea8178cd] 2017-03-06 19:33:59 -0500
-Branch: REL9_5_STABLE [b6882e9ec] 2017-03-06 19:33:59 -0500
-Branch: REL9_4_STABLE [db9b4b716] 2017-03-06 19:33:59 -0500
-Branch: REL9_3_STABLE [783acfd4d] 2017-03-06 19:33:59 -0500
-Branch: REL9_2_STABLE [0ab75448e] 2017-03-06 19:33:59 -0500
--->
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [39370e6a0] 2017-02-17 15:06:28 -0500
-Branch: REL9_6_STABLE [4e8b2fd33] 2017-02-17 15:06:34 -0500
--->
- <para>
- Fix typo in <application>pg_dump</application>'s query for initial privileges
- of a procedural language (Peter Eisentraut)
- </para>
-
- <para>
- This resulted in <application>pg_dump</application> always believing that the
- language had no initial privileges. Since that's true for most
- procedural languages, ill effects from this bug are probably rare.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f39ddd843] 2017-03-10 14:15:09 -0500
-Branch: REL9_6_STABLE [4cdd81d90] 2017-03-10 14:15:09 -0500
-Branch: REL9_5_STABLE [88f3743cb] 2017-03-10 14:15:09 -0500
-Branch: REL9_4_STABLE [64d132c29] 2017-03-10 14:15:09 -0500
-Branch: REL9_3_STABLE [0c0a95c2f] 2017-03-10 14:15:09 -0500
-Branch: REL9_2_STABLE [e6d2ba419] 2017-03-10 14:15:09 -0500
--->
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [ff992c074] 2017-03-06 17:03:57 -0500
-Branch: REL9_6_STABLE [65a3f233b] 2017-03-06 17:04:06 -0500
-Branch: REL9_5_STABLE [6be8647f7] 2017-03-06 17:04:13 -0500
-Branch: REL9_4_STABLE [93598898c] 2017-03-06 17:04:22 -0500
-Branch: REL9_3_STABLE [7f831f09b] 2017-03-06 17:04:29 -0500
-Branch: REL9_2_STABLE [e864cd25b] 2017-03-06 17:04:55 -0500
--->
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [944a026b4] 2017-03-12 19:35:31 -0400
-Branch: REL9_6_STABLE [08c6d42c8] 2017-03-12 19:35:49 -0400
-Branch: REL9_5_STABLE [d0e5ac736] 2017-03-12 19:35:57 -0400
-Branch: REL9_4_STABLE [4b2669ada] 2017-03-12 19:36:06 -0400
-Branch: REL9_3_STABLE [e03c6d93b] 2017-03-12 19:36:15 -0400
-Branch: REL9_2_STABLE [0276da5eb] 2017-03-12 19:36:28 -0400
--->
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [cd1e23e93] 2017-03-11 13:32:18 -0800
-Branch: REL9_6_STABLE [8469923f3] 2017-03-11 13:32:26 -0800
-Branch: REL9_5_STABLE [82f3792a4] 2017-03-11 13:32:40 -0800
-Branch: REL9_4_STABLE [166dfb3a9] 2017-03-11 13:33:14 -0800
-Branch: REL9_3_STABLE [f6cfc14e5] 2017-03-11 13:33:22 -0800
-Branch: REL9_2_STABLE [c4613c3f4] 2017-03-11 13:33:30 -0800
--->
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9e43e8714] 2017-02-22 15:04:26 -0500
-Branch: REL9_6_STABLE [16500d227] 2017-02-22 15:04:07 -0500
-Branch: REL9_5_STABLE [513c9f9de] 2017-02-22 15:04:07 -0500
-Branch: REL9_4_STABLE [98755681a] 2017-02-22 15:04:07 -0500
-Branch: REL9_3_STABLE [53b5a8c13] 2017-02-22 15:04:07 -0500
-Branch: master [1dffabed4] 2017-04-14 14:52:21 -0400
-Branch: REL9_6_STABLE [d51279433] 2017-04-14 14:52:03 -0400
-Branch: REL9_5_STABLE [9b48ce377] 2017-04-14 14:52:03 -0400
-Branch: REL9_4_STABLE [e0eda580d] 2017-04-14 14:52:03 -0400
-Branch: REL9_3_STABLE [fad06b287] 2017-04-14 14:52:03 -0400
-Branch: master [6cfaffc0d] 2017-04-13 17:18:35 -0400
-Branch: REL9_6_STABLE [a70b18b89] 2017-04-13 17:18:35 -0400
-Branch: REL9_5_STABLE [67665a71c] 2017-04-13 17:18:35 -0400
-Branch: REL9_4_STABLE [b179684c7] 2017-04-13 17:18:35 -0400
-Branch: REL9_3_STABLE [5be58cc89] 2017-04-13 17:18:35 -0400
--->
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s extraction of trigrams from regular
- expressions (Tom Lane)
- </para>
-
- <para>
- In some cases it would produce a broken data structure that could never
- match anything, leading to GIN or GiST indexscans that use a trigram
- index not finding any matches to the regular expression.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [332bec1e6] 2017-04-24 22:50:07 -0400
-Branch: REL9_6_STABLE [86e640a69] 2017-04-26 09:14:21 -0400
--->
- <para>
- In <filename>contrib/postgres_fdw</filename>, allow join conditions that
- contain shippable extension-provided functions to be pushed to the
- remote server (David Rowley, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [14722c69f] 2017-05-05 12:38:29 -0300
-Branch: REL9_6_STABLE [19a403378] 2017-05-05 12:05:34 -0300
-Branch: REL9_5_STABLE [adfad4222] 2017-05-05 12:05:34 -0300
-Branch: REL9_4_STABLE [41ba2ca08] 2017-05-05 12:05:34 -0300
-Branch: REL9_3_STABLE [f692583dd] 2017-05-05 12:05:34 -0300
-Branch: REL9_2_STABLE [992e581bf] 2017-05-05 12:05:34 -0300
--->
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e18b2c480] 2017-04-30 15:13:51 -0400
-Branch: REL9_6_STABLE [6872d96a3] 2017-04-30 15:14:06 -0400
-Branch: REL9_5_STABLE [4d4d8fa77] 2017-04-30 15:14:11 -0400
-Branch: REL9_4_STABLE [96cad6f24] 2017-04-30 15:14:15 -0400
-Branch: REL9_3_STABLE [f8cf9719d] 2017-04-30 15:14:20 -0400
-Branch: REL9_2_STABLE [54aeb8d3e] 2017-04-30 15:14:24 -0400
-Branch: master [a54d5875f] 2017-05-07 12:33:12 -0400
-Branch: REL9_6_STABLE [fab2d0d7f] 2017-05-07 12:33:18 -0400
-Branch: REL9_5_STABLE [74e747fbd] 2017-05-07 12:33:22 -0400
-Branch: REL9_4_STABLE [e829385f5] 2017-05-07 12:33:27 -0400
-Branch: REL9_3_STABLE [9e5f3d013] 2017-05-07 12:33:31 -0400
-Branch: REL9_2_STABLE [da55df018] 2017-05-07 12:33:35 -0400
--->
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [74a20d0ab] 2017-05-01 11:53:11 -0400
-Branch: REL9_6_STABLE [1fdc3f6e8] 2017-05-01 11:53:42 -0400
-Branch: REL9_5_STABLE [9a8cc157c] 2017-05-01 11:53:49 -0400
-Branch: REL9_4_STABLE [1c8862346] 2017-05-01 11:53:56 -0400
-Branch: REL9_3_STABLE [dc93cafca] 2017-05-01 11:54:02 -0400
-Branch: REL9_2_STABLE [c96ccc40e] 2017-05-01 11:54:08 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d4e59c552] 2017-05-07 11:57:41 -0400
-Branch: REL9_6_STABLE [f75472817] 2017-05-07 11:57:41 -0400
-Branch: REL9_5_STABLE [2f66002df] 2017-05-07 11:57:41 -0400
-Branch: REL9_4_STABLE [62a288312] 2017-05-07 11:57:41 -0400
-Branch: REL9_3_STABLE [5971accd8] 2017-05-07 11:57:41 -0400
-Branch: REL9_2_STABLE [82e7d3dfd] 2017-05-07 11:57:41 -0400
--->
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-2">
- <title>Release 9.6.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.1.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.2</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.6.1,
- see <xref linkend="release-9-6-1"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [2aaec6546] 2017-02-06 13:20:19 -0500
-Branch: REL9_6_STABLE [7fcddbdd0] 2017-02-06 13:20:20 -0500
-Branch: REL9_5_STABLE [e935696f4] 2017-02-06 13:20:21 -0500
-Branch: REL9_4_STABLE [5879958e1] 2017-02-06 13:20:23 -0500
-Branch: REL9_3_STABLE [32c893c8d] 2017-02-06 13:20:24 -0500
-Branch: REL9_2_STABLE [bcd7b47c2] 2017-02-06 13:20:25 -0500
--->
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ffaa44cb5] 2016-11-15 15:55:35 -0500
-Branch: REL9_6_STABLE [8aa3e4751] 2016-11-15 15:55:35 -0500
-Branch: REL9_5_STABLE [0bc3ed98c] 2016-11-15 15:55:35 -0500
-Branch: REL9_4_STABLE [3e844a34b] 2016-11-15 15:55:36 -0500
--->
- <para>
- Ensure that the special snapshot used for catalog scans is not
- invalidated by premature data pruning (Tom Lane)
- </para>
-
- <para>
- Backends failed to account for this snapshot when advertising their
- oldest xmin, potentially allowing concurrent vacuuming operations to
- remove data that was still needed. This led to transient failures
- along the lines of <quote>cache lookup failed for relation 1255</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [7403561c0] 2017-01-09 18:19:29 -0300
-Branch: REL9_6_STABLE [4482c6a23] 2017-01-09 18:19:29 -0300
-Branch: REL9_5_STABLE [ed8e8b814] 2017-01-09 18:19:29 -0300
--->
- <para>
- Fix incorrect WAL logging for BRIN indexes (Kuntal Ghosh)
- </para>
-
- <para>
- The WAL record emitted for a BRIN <quote>revmap</quote> page when moving an
- index tuple to a different page was incorrect. Replay would make the
- related portion of the index useless, forcing it to be recomputed.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [fa0f466d5] 2016-12-08 14:12:08 -0500
-Branch: REL9_6_STABLE [1ed3c6ff9] 2016-12-08 14:13:55 -0500
-Branch: REL9_5_STABLE [141ad6896] 2016-12-08 14:14:12 -0500
-Branch: REL9_4_STABLE [68e56eef6] 2016-12-08 14:14:27 -0500
-Branch: REL9_3_STABLE [8e403f215] 2016-12-08 14:16:47 -0500
-Branch: REL9_2_STABLE [a00ac6299] 2016-12-08 14:19:25 -0500
--->
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [4f714b2fd] 2016-10-27 14:27:40 -0400
-Branch: REL9_6_STABLE [4a43a6244] 2016-10-27 14:54:35 -0400
-Branch: REL9_5_STABLE [0cbd199fd] 2016-10-27 14:54:39 -0400
-Branch: REL9_4_STABLE [4a8cfbdcb] 2016-10-27 14:56:37 -0400
-Branch: REL9_3_STABLE [e927f55ff] 2016-10-27 14:56:42 -0400
-Branch: REL9_2_STABLE [2be2838a7] 2016-10-27 14:56:53 -0400
--->
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [ec4b97501] 2017-01-26 18:14:02 +0000
-Branch: REL9_6_STABLE [95d1b4145] 2017-01-26 20:06:44 +0000
-Branch: REL9_5_STABLE [99289e506] 2017-01-26 20:09:18 +0000
-Branch: REL9_4_STABLE [800d89a98] 2017-01-26 20:10:19 +0000
-Branch: REL9_3_STABLE [048d44175] 2017-01-26 20:15:23 +0000
--->
- <para>
- Ensure that hot standby feedback works correctly when it's enabled at
- standby server start (Ants Aasma, Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Simon Riggs <simon@2ndQuadrant.com>
-Branch: master [e8ee3d6b8] 2017-01-26 18:59:58 +0000
-Branch: REL9_6_STABLE [40b7800da] 2017-01-27 12:13:20 +0000
-Branch: REL9_5_STABLE [ace2cd80a] 2017-01-27 12:15:02 +0000
-Branch: REL9_4_STABLE [357e06128] 2017-01-27 12:16:18 +0000
-Branch: REL9_3_STABLE [332068a21] 2017-01-27 12:18:07 +0000
-Branch: REL9_2_STABLE [15c54e836] 2017-01-27 12:19:50 +0000
--->
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [c6a389792] 2017-01-20 15:55:45 -0500
-Branch: REL9_6_STABLE [746ba76f1] 2017-01-20 16:11:45 -0500
-Branch: REL9_5_STABLE [aeaaf62aa] 2017-01-20 16:14:11 -0500
-Branch: REL9_4_STABLE [806f9b3d7] 2017-01-20 16:16:46 -0500
-Branch: REL9_3_STABLE [5c5788e90] 2017-01-20 16:18:55 -0500
-Branch: REL9_2_STABLE [5dff230eb] 2017-01-20 16:26:39 -0500
--->
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [93eb619cd] 2016-12-17 02:22:15 +0900
-Branch: REL9_6_STABLE [6c75fb6b3] 2016-12-17 02:25:47 +0900
--->
- <para>
- Disallow setting the <replaceable>num_sync</replaceable> field to zero in
- <xref linkend="guc-synchronous-standby-names"/> (Fujii Masao)
- </para>
-
- <para>
- The correct way to disable synchronous standby is to set the whole
- value to an empty string.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [f1169ab50] 2017-02-01 18:02:43 -0500
-Branch: REL9_6_STABLE [13752743b] 2017-02-01 17:59:53 -0500
--->
- <para>
- Don't count background worker processes against a user's connection
- limit (David Rowley)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [182db0704] 2016-11-26 13:31:35 -0500
-Branch: REL9_6_STABLE [0cc8453ac] 2016-11-26 13:31:35 -0500
-Branch: REL9_5_STABLE [576bd360b] 2016-11-26 13:31:35 -0500
-Branch: REL9_4_STABLE [313786a74] 2016-11-26 13:31:35 -0500
-Branch: REL9_3_STABLE [2cbb62db1] 2016-11-26 13:31:35 -0500
-Branch: REL9_2_STABLE [a982b02a4] 2016-11-26 13:31:35 -0500
--->
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [e54f75722] 2017-01-29 23:05:07 -0500
-Branch: REL9_6_STABLE [20064c0ec] 2017-01-29 23:05:09 -0500
--->
- <para>
- Fix tracking of initial privileges for extension member objects so
- that it works correctly with <command>ALTER EXTENSION ... ADD/DROP</command>
- (Stephen Frost)
- </para>
-
- <para>
- An object's current privileges at the time it is added to the
- extension will now be considered its default privileges; only
- later changes in its privileges will be dumped by
- subsequent <application>pg_dump</application> runs.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bd673e8e8] 2016-11-23 13:45:55 -0500
-Branch: REL9_6_STABLE [4a5e1d370] 2016-11-23 13:45:56 -0500
-Branch: REL9_5_STABLE [e0375d77b] 2016-11-23 13:45:56 -0500
-Branch: REL9_4_STABLE [15f3e0cb1] 2016-11-23 13:45:56 -0500
-Branch: REL9_3_STABLE [8f67a6c22] 2016-11-23 13:45:56 -0500
-Branch: REL9_2_STABLE [05975ab0a] 2016-11-23 13:45:56 -0500
--->
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a522fc3d8] 2016-10-26 17:05:06 -0400
-Branch: REL9_6_STABLE [445035a6e] 2016-10-26 17:05:06 -0400
-Branch: REL9_5_STABLE [b53c841e5] 2016-10-26 17:05:06 -0400
-Branch: REL9_4_STABLE [3a9a8c408] 2016-10-26 17:05:06 -0400
--->
- <para>
- Fix incorrect updating of trigger function properties when changing a
- foreign-key constraint's deferrability properties with <command>ALTER
- TABLE ... ALTER CONSTRAINT</command> (Tom Lane)
- </para>
-
- <para>
- This led to odd failures during subsequent exercise of the foreign
- key, as the triggers were fired at the wrong times.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4e026b32d] 2016-11-25 13:44:47 -0500
-Branch: REL9_6_STABLE [bf5fe7bfa] 2016-11-25 13:44:47 -0500
-Branch: REL9_5_STABLE [6cbe84c82] 2016-11-25 13:44:48 -0500
-Branch: REL9_4_STABLE [f7166ce24] 2016-11-25 13:44:48 -0500
-Branch: REL9_3_STABLE [05bef7b08] 2016-11-25 13:44:48 -0500
-Branch: REL9_2_STABLE [6a363a4c2] 2016-11-25 13:44:48 -0500
--->
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [3957b58b8] 2017-01-09 19:26:58 -0300
-Branch: REL9_6_STABLE [4e563a1f6] 2017-01-09 19:26:58 -0300
-Branch: REL9_5_STABLE [4d4ab6ccd] 2017-01-09 19:26:58 -0300
--->
- <para>
- Fix <command>ALTER TABLE ... SET DATA TYPE ... USING</command> when child
- table has different column ordering than the parent
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Failure to adjust the column numbering in the <literal>USING</literal>
- expression led to errors,
- typically <quote>attribute <replaceable>N</replaceable> has wrong type</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d86f40009] 2017-01-04 18:00:11 -0500
-Branch: REL9_6_STABLE [f64554b99] 2017-01-04 18:00:11 -0500
-Branch: REL9_5_STABLE [50c8196f9] 2017-01-04 18:00:11 -0500
-Branch: REL9_4_STABLE [696d40d30] 2017-01-04 18:00:11 -0500
-Branch: REL9_3_STABLE [5f89a9885] 2017-01-04 18:00:12 -0500
-Branch: REL9_2_STABLE [6c4cf2be8] 2017-01-04 18:00:12 -0500
--->
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1ead0208b] 2016-12-22 16:23:38 -0500
-Branch: REL9_6_STABLE [68330c8b4] 2016-12-22 16:23:34 -0500
--->
- <para>
- Ensure that <command>CREATE TABLE ... LIKE ... WITH OIDS</command> creates
- a table with OIDs, whether or not the <literal>LIKE</literal>-referenced
- table(s) have OIDs (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Dean Rasheed <dean.a.rasheed@gmail.com>
-Branch: master [58b136264] 2016-12-21 16:58:18 +0000
-Branch: REL9_6_STABLE [a46ee6b30] 2016-12-21 17:01:52 +0000
-Branch: REL9_5_STABLE [78a98b767] 2016-12-21 17:02:47 +0000
-Branch: REL9_4_STABLE [cad24980e] 2016-12-21 17:03:54 +0000
--->
- <para>
- Fix <command>CREATE OR REPLACE VIEW</command> to update the view query
- before attempting to apply the new view options (Dean Rasheed)
- </para>
-
- <para>
- Previously the command would fail if the new options were
- inconsistent with the old view definition.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [12bd7dd31] 2016-12-22 17:08:43 -0500
-Branch: REL9_6_STABLE [f0f2e56ac] 2016-12-22 17:08:47 -0500
-Branch: REL9_5_STABLE [e82369217] 2016-12-22 17:08:49 -0500
-Branch: REL9_4_STABLE [ac1ec9c1f] 2016-12-22 17:08:58 -0500
-Branch: REL9_3_STABLE [0e3aadb68] 2016-12-22 17:09:00 -0500
--->
- <para>
- Report correct object identity during <command>ALTER TEXT SEARCH
- CONFIGURATION</command> (Artur Zakirov)
- </para>
-
- <para>
- The wrong catalog OID was reported to extensions such as logical
- decoding.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [4aaddf2f0] 2016-11-24 15:39:55 -0300
-Branch: REL9_6_STABLE [9b6634290] 2016-11-24 15:39:55 -0300
-Branch: REL9_5_STABLE [7816d1356] 2016-11-24 15:39:55 -0300
--->
- <para>
- Fix commit timestamp mechanism to not fail when queried about
- the special XIDs <literal>FrozenTransactionId</literal>
- and <literal>BootstrapTransactionId</literal> (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e3e66d8a9] 2016-11-07 12:08:18 -0500
-Branch: REL9_6_STABLE [5ee3a7453] 2016-11-07 12:08:19 -0500
-Branch: REL9_5_STABLE [e2f5cd9cf] 2016-11-07 12:08:19 -0500
-Branch: master [530f80652] 2016-11-10 15:00:58 -0500
-Branch: REL9_6_STABLE [05a6e8728] 2016-11-10 15:00:58 -0500
-Branch: REL9_5_STABLE [6e00ba1e1] 2016-11-10 15:00:58 -0500
--->
- <para>
- Fix incorrect use of view reloptions as regular table reloptions (Tom
- Lane)
- </para>
-
- <para>
- The symptom was spurious <quote>ON CONFLICT is not supported on table
- ... used as a catalog table</quote> errors when the target
- of <command>INSERT ... ON CONFLICT</command> is a view with cascade option.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [385072320] 2016-12-04 15:02:45 -0500
-Branch: REL9_6_STABLE [da05d0ebc] 2016-12-04 15:02:46 -0500
-Branch: REL9_5_STABLE [25c06a1ed] 2016-12-04 15:02:48 -0500
--->
- <para>
- Fix incorrect <quote>target lists can have at most <replaceable>N</replaceable>
- entries</quote> complaint when using <literal>ON CONFLICT</literal> with
- wide tables (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [da8f3ebf3] 2016-11-02 14:32:13 -0400
-Branch: REL9_6_STABLE [f4d865f22] 2016-11-02 14:32:13 -0400
--->
- <para>
- Fix spurious <quote>query provides a value for a dropped column</quote>
- errors during <command>INSERT</command> or <command>UPDATE</command> on a table
- with a dropped column (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c5f365f3a] 2016-11-20 14:26:19 -0500
-Branch: REL9_6_STABLE [90f8b4be5] 2016-11-20 14:26:19 -0500
-Branch: REL9_5_STABLE [aeb5e8242] 2016-11-20 14:26:19 -0500
-Branch: REL9_4_STABLE [44c8b4fcd] 2016-11-20 14:26:19 -0500
-Branch: REL9_3_STABLE [71db302ec] 2016-11-20 14:26:19 -0500
--->
- <para>
- Prevent multicolumn expansion of <replaceable>foo</replaceable><literal>.*</literal> in
- an <command>UPDATE</command> source expression (Tom Lane)
- </para>
-
- <para>
- This led to <quote>UPDATE target count mismatch --- internal
- error</quote>. Now the syntax is understood as a whole-row variable,
- as it would be in other contexts.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0b78106cd] 2016-12-08 11:40:02 -0500
-Branch: REL9_6_STABLE [cf22c8cb8] 2016-12-09 12:01:14 -0500
-Branch: REL9_5_STABLE [6a493adda] 2016-12-09 12:01:14 -0500
-Branch: REL9_4_STABLE [c7a62135a] 2016-12-09 12:01:14 -0500
-Branch: REL9_3_STABLE [2afe282a3] 2016-12-09 12:01:14 -0500
-Branch: REL9_2_STABLE [082d1fb9e] 2016-12-09 12:01:14 -0500
--->
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a8ae12322] 2016-12-21 17:39:32 -0500
-Branch: REL9_6_STABLE [88e1e91da] 2016-12-21 17:39:32 -0500
-Branch: REL9_5_STABLE [d5633af7b] 2016-12-21 17:39:32 -0500
-Branch: REL9_4_STABLE [d0f60e4cc] 2016-12-21 17:39:32 -0500
-Branch: REL9_3_STABLE [a57695d9a] 2016-12-21 17:39:33 -0500
-Branch: REL9_2_STABLE [6e2c21ec5] 2016-12-21 17:39:33 -0500
--->
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [db80acfc9] 2016-12-20 09:20:17 +0200
-Branch: REL9_6_STABLE [ce92fc4e2] 2016-12-20 09:20:30 +0200
--->
- <para>
- Fix execution of <literal>DISTINCT</literal> and ordered aggregates when
- multiple such aggregates are able to share the same transition state
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [89fcea1ac] 2016-12-21 15:18:39 -0500
-Branch: REL9_6_STABLE [4e2477b7b] 2016-12-21 15:18:40 -0500
-Branch: master [260443847] 2016-12-19 13:49:50 -0500
-Branch: REL9_6_STABLE [3f07eff10] 2016-12-19 13:49:45 -0500
--->
- <para>
- Fix implementation of phrase search operators in <type>tsquery</type>
- (Tom Lane)
- </para>
-
- <para>
- Remove incorrect, and inconsistently-applied, rewrite rules that
- tried to transform away AND/OR/NOT operators appearing below a PHRASE
- operator; instead upgrade the execution engine to handle such cases
- correctly. This fixes assorted strange behavior and possible crashes
- for text search queries containing such combinations. Also fix
- nested PHRASE operators to work sanely in combinations other than
- simple left-deep trees, correct the behavior when removing stopwords
- from a phrase search clause, and make sure that index searches behave
- consistently with simple sequential-scan application of such queries.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9d4ca0131] 2017-01-26 12:18:07 -0500
-Branch: REL9_6_STABLE [2dfc12647] 2017-01-26 12:17:47 -0500
-Branch: REL9_5_STABLE [423ad86f4] 2017-01-26 12:17:47 -0500
-Branch: REL9_4_STABLE [2c1976a6c] 2017-01-26 12:17:47 -0500
-Branch: REL9_3_STABLE [2e024f83b] 2017-01-26 12:17:47 -0500
-Branch: REL9_2_STABLE [fe6120f9b] 2017-01-26 12:17:47 -0500
--->
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0eaaaf00e] 2016-12-11 13:09:57 -0500
-Branch: REL9_6_STABLE [c8bfe055b] 2016-12-11 13:09:57 -0500
-Branch: REL9_5_STABLE [c6caa5200] 2016-12-11 13:09:57 -0500
-Branch: REL9_4_STABLE [6f5cb982e] 2016-12-11 13:09:57 -0500
-Branch: REL9_3_STABLE [79e1a9efa] 2016-12-11 13:09:57 -0500
-Branch: REL9_2_STABLE [f4ccee408] 2016-12-11 13:09:57 -0500
--->
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5ec81acee] 2016-10-30 17:35:42 -0400
-Branch: REL9_6_STABLE [464326e83] 2016-10-30 17:35:42 -0400
-Branch: REL9_5_STABLE [e0491c19d] 2016-10-30 17:35:42 -0400
-Branch: REL9_4_STABLE [514797a52] 2016-10-30 17:35:43 -0400
-Branch: REL9_3_STABLE [407d513df] 2016-10-30 17:35:43 -0400
-Branch: REL9_2_STABLE [606e16a7f] 2016-10-30 17:35:43 -0400
--->
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [24ebc444c] 2016-10-30 15:24:40 -0400
-Branch: REL9_6_STABLE [2a2b439cc] 2016-10-30 15:24:40 -0400
-Branch: REL9_5_STABLE [de7387604] 2016-10-30 15:24:40 -0400
-Branch: REL9_4_STABLE [f0c2ce45e] 2016-10-30 15:24:40 -0400
-Branch: REL9_3_STABLE [77a22f898] 2016-10-30 15:24:40 -0400
-Branch: REL9_2_STABLE [b0f8a273e] 2016-10-30 15:24:40 -0400
--->
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9a00f03e4] 2016-10-30 12:27:41 -0400
-Branch: REL9_6_STABLE [48a6592da] 2016-10-30 12:27:41 -0400
-Branch: REL9_5_STABLE [7151e72d7] 2016-10-30 12:27:41 -0400
--->
- <para>
- Improve speed of user-defined aggregates that
- use <function>array_append()</function> as transition function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [82f8107b9] 2017-01-05 11:33:51 -0500
-Branch: REL9_6_STABLE [5b4f8f4c6] 2017-01-05 11:33:51 -0500
-Branch: REL9_5_STABLE [4555a375a] 2017-01-05 11:33:51 -0500
-Branch: REL9_4_STABLE [4e446563b] 2017-01-05 11:33:51 -0500
-Branch: REL9_3_STABLE [ee9cb284a] 2017-01-05 11:33:51 -0500
-Branch: REL9_2_STABLE [e0d59c6ef] 2017-01-05 11:33:51 -0500
--->
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a73491e5f] 2016-12-09 12:42:17 -0300
-Branch: REL9_6_STABLE [79c89f1f4] 2016-12-09 12:42:17 -0300
-Branch: REL9_5_STABLE [581b09c72] 2016-12-09 12:42:17 -0300
--->
- <para>
- Fix possible crash in <function>array_position()</function>
- or <function>array_positions()</function> when processing arrays of records
- (Junseok Yang)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [4f5182e18] 2016-12-16 12:53:04 +0200
-Branch: REL9_6_STABLE [0fe5a4cd7] 2016-12-16 12:52:50 +0200
-Branch: REL9_5_STABLE [595333ff4] 2016-12-16 12:53:12 +0200
-Branch: REL9_4_STABLE [779325478] 2016-12-16 12:53:16 +0200
-Branch: REL9_3_STABLE [e71fe8470] 2016-12-16 12:53:22 +0200
-Branch: REL9_2_STABLE [c8f8ed5c2] 2016-12-16 12:53:27 +0200
--->
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [974ece58b] 2017-01-17 17:27:32 +0900
-Branch: REL9_6_STABLE [60a8b63d2] 2017-01-17 17:29:15 +0900
-Branch: REL9_5_STABLE [dfe348c1b] 2017-01-17 17:30:26 +0900
-Branch: REL9_4_STABLE [9e7f00d86] 2017-01-17 17:31:51 +0900
-Branch: REL9_3_STABLE [f64b11fa0] 2017-01-17 17:32:20 +0900
-Branch: REL9_2_STABLE [c73157ca0] 2017-01-17 17:32:45 +0900
--->
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c22ecc656] 2017-01-18 15:22:07 -0500
-Branch: REL9_6_STABLE [b21e665f2] 2017-01-18 15:21:52 -0500
-Branch: REL9_5_STABLE [74e67bbad] 2017-01-18 15:21:52 -0500
--->
- <para>
- Disable transform that attempted to remove no-op <literal>AT TIME
- ZONE</literal> conversions (Tom Lane)
- </para>
-
- <para>
- This resulted in wrong answers when the simplified expression was
- used in an index condition.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f0774abde] 2016-12-27 15:43:54 -0500
-Branch: REL9_6_STABLE [21e24eb9a] 2016-12-27 15:43:54 -0500
-Branch: REL9_5_STABLE [4efe7aa2d] 2016-12-27 15:43:54 -0500
-Branch: REL9_4_STABLE [0b947b692] 2016-12-27 15:43:54 -0500
-Branch: REL9_3_STABLE [583599839] 2016-12-27 15:43:54 -0500
-Branch: REL9_2_STABLE [beae7d5f0] 2016-12-27 15:43:55 -0500
--->
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [53c7cff72] 2016-12-05 15:54:28 -0500
-Branch: REL9_6_STABLE [06fa6670f] 2016-12-05 15:59:02 -0500
--->
- <para>
- Fix crash if the number of workers available to a parallel query
- decreases during a rescan (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [13671b4b2] 2016-11-19 14:26:19 -0500
-Branch: REL9_6_STABLE [272c42660] 2016-11-19 14:26:19 -0500
-Branch: REL9_5_STABLE [b9ee42e70] 2016-11-19 14:26:20 -0500
--->
- <para>
- Fix bugs in transmitting GUC parameter values to parallel workers
- (Michael Paquier, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [4212cb732] 2016-12-06 11:11:54 -0500
-Branch: REL9_6_STABLE [ebe5dc9e0] 2016-12-06 11:43:12 -0500
--->
- <para>
- Allow statements prepared with <command>PREPARE</command> to be given
- parallel plans (Amit Kapila, Tobias Bussmann)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [41e2b84ce] 2016-11-29 19:32:35 -0500
-Branch: REL9_6_STABLE [e5b8aa636] 2016-11-29 19:32:35 -0500
--->
- <para>
- Fix incorrect generation of parallel plans for semi-joins (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [0c2070cef] 2017-01-13 13:34:10 -0500
-Branch: REL9_6_STABLE [2d443ae1b] 2017-01-13 13:36:09 -0500
--->
- <para>
- Fix planner's cardinality estimates for parallel joins (Robert Haas)
- </para>
-
- <para>
- Ensure that these estimates reflect the number of rows predicted to
- be seen by each worker, rather than the total.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ab77a5a45] 2016-11-25 16:20:12 -0500
-Branch: REL9_6_STABLE [474de765a] 2016-11-25 16:20:31 -0500
-Branch: master [f24cf960d] 2016-11-21 11:09:24 -0500
-Branch: REL9_6_STABLE [01f08cbbc] 2016-11-21 11:09:33 -0500
--->
- <para>
- Fix planner to avoid trying to parallelize plan nodes containing
- initplans or subplans (Tom Lane, Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c52d37c8b] 2017-01-06 14:12:52 -0500
-Branch: REL9_6_STABLE [4103a2f20] 2017-01-06 14:12:52 -0500
-Branch: REL9_5_STABLE [aaf12e577] 2017-01-06 14:12:52 -0500
-Branch: REL9_4_STABLE [e4380e4cf] 2017-01-06 14:12:52 -0500
-Branch: REL9_3_STABLE [a8191800a] 2017-01-06 14:12:52 -0500
--->
- <para>
- Ensure that cached plans are invalidated by changes in foreign-table
- options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e1b449bea] 2016-11-10 11:31:56 -0500
-Branch: REL9_6_STABLE [7defc3b97] 2016-11-10 11:31:56 -0500
--->
- <para>
- Fix the plan generated for sorted partial aggregation with a constant
- <literal>GROUP BY</literal> clause (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1f542a2ea] 2016-12-13 13:20:37 -0500
-Branch: REL9_6_STABLE [997a2994e] 2016-12-13 13:20:16 -0500
--->
- <para>
- Fix <quote>could not find plan for CTE</quote> planner error when dealing
- with a <literal>UNION ALL</literal> containing CTE references (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [555494d1b] 2017-02-02 19:11:32 -0500
-Branch: REL9_6_STABLE [b971a98ce] 2017-02-02 19:11:27 -0500
--->
- <para>
- Fix mishandling of initplans when forcibly adding a Material node to
- a subplan (Tom Lane)
- </para>
-
- <para>
- The typical consequence of this mistake was a <quote>plan should not
- reference subplan's variable</quote> error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7fa93eec4] 2016-12-17 15:28:54 -0500
-Branch: REL9_6_STABLE [f4f195d15] 2016-12-17 15:28:54 -0500
-Branch: master [770671062] 2016-11-02 15:50:15 -0400
-Branch: REL9_6_STABLE [23c6c437f] 2016-11-02 15:50:21 -0400
--->
- <para>
- Fix foreign-key-based join selectivity estimation for semi-joins and
- anti-joins, as well as inheritance cases (Tom Lane)
- </para>
-
- <para>
- The new code for taking the existence of a foreign key relationship
- into account did the wrong thing in these cases, making the estimates
- worse not better than the pre-9.6 code.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [bec96c82f] 2017-01-19 12:06:21 -0500
-Branch: REL9_6_STABLE [fd081cabf] 2017-01-19 12:06:27 -0500
--->
- <para>
- Fix <application>pg_dump</application> to emit the data of a sequence that is
- marked as an extension configuration table (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [e2090d9d2] 2017-01-31 16:24:11 -0500
-Branch: REL9_6_STABLE [eb5e9d90d] 2017-01-31 16:24:14 -0500
--->
- <para>
- Fix mishandling of <command>ALTER DEFAULT PRIVILEGES ... REVOKE</command>
- in <application>pg_dump</application> (Stephen Frost)
- </para>
-
- <para>
- <application>pg_dump</application> missed issuing the
- required <literal>REVOKE</literal> commands in cases where <command>ALTER
- DEFAULT PRIVILEGES</command> had been used to reduce privileges to less than
- they would normally be.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [2259bf672] 2016-12-21 13:47:06 -0500
-Branch: REL9_6_STABLE [542975a14] 2016-12-21 13:47:13 -0500
-Branch: REL9_5_STABLE [1efc5dba0] 2016-12-21 13:47:18 -0500
-Branch: REL9_4_STABLE [13f51dacf] 2016-12-21 13:47:23 -0500
-Branch: REL9_3_STABLE [1f2cfd26f] 2016-12-21 13:47:28 -0500
-Branch: REL9_2_STABLE [da57166b7] 2016-12-21 13:47:32 -0500
-Branch: master [19990918d] 2016-12-21 13:47:06 -0500
-Branch: REL9_6_STABLE [e45319bb7] 2016-12-21 13:47:13 -0500
-Branch: REL9_5_STABLE [94476436a] 2016-12-21 13:47:18 -0500
-Branch: REL9_4_STABLE [107943f1a] 2016-12-21 13:47:23 -0500
-Branch: REL9_3_STABLE [fc03f7dd1] 2016-12-21 13:47:28 -0500
-Branch: REL9_2_STABLE [59a389891] 2016-12-21 13:47:32 -0500
--->
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ac888986f] 2016-11-17 14:59:13 -0500
-Branch: REL9_6_STABLE [0eaa5118a] 2016-11-17 14:59:19 -0500
-Branch: REL9_5_STABLE [a7864037d] 2016-11-17 14:59:23 -0500
-Branch: REL9_4_STABLE [e69b532be] 2016-11-17 14:59:26 -0500
--->
- <para>
- Fix <application>pg_restore</application> with <option>--create --if-exists</option>
- to behave more sanely if an archive contains
- unrecognized <command>DROP</command> commands (Tom Lane)
- </para>
-
- <para>
- This doesn't fix any live bug, but it may improve the behavior in
- future if <application>pg_restore</application> is used with an archive
- generated by a later <application>pg_dump</application> version.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [10238fad0] 2016-12-19 10:11:04 +0100
-Branch: REL9_6_STABLE [1c8ad594e] 2016-12-19 10:15:52 +0100
-Branch: REL9_5_STABLE [bc53d7130] 2016-12-19 10:16:02 +0100
-Branch: REL9_4_STABLE [f6508827a] 2016-12-19 10:16:12 +0100
--->
- <para>
- Fix <application>pg_basebackup</application>'s rate limiting in the presence of
- slow I/O (Antonin Houska)
- </para>
-
- <para>
- If disk I/O was transiently much slower than the specified rate
- limit, the calculation overflowed, effectively disabling the rate
- limit for the rest of the run.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: REL9_6_STABLE [b6a323a8c] 2016-11-07 14:47:30 +0100
-Branch: REL9_5_STABLE [6d779e05a] 2016-11-07 15:03:56 +0100
-Branch: REL9_4_STABLE [5556420d4] 2016-11-07 15:04:23 +0100
--->
- <para>
- Fix <application>pg_basebackup</application>'s handling of
- symlinked <filename>pg_stat_tmp</filename> and <filename>pg_replslot</filename>
- subdirectories (Magnus Hagander, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [f267c1c24] 2016-10-27 11:19:51 -0400
-Branch: REL9_6_STABLE [05e2293f4] 2016-10-27 11:34:28 -0400
-Branch: REL9_5_STABLE [ef18cb7da] 2016-10-27 11:53:14 -0400
-Branch: REL9_4_STABLE [d1e9c8269] 2016-10-27 11:59:08 -0400
-Branch: REL9_3_STABLE [92929a3e3] 2016-10-27 12:00:05 -0400
-Branch: REL9_2_STABLE [629575fa2] 2016-10-27 12:14:07 -0400
--->
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [dbdfd114f] 2016-11-25 18:36:10 -0500
-Branch: REL9_6_STABLE [255bcd27f] 2016-11-25 18:36:10 -0500
--->
- <para>
- Improve <application>initdb</application> to insert the correct
- platform-specific default values for
- the <replaceable>xxx</replaceable><literal>_flush_after</literal> parameters
- into <filename>postgresql.conf</filename> (Fabien Coelho, Tom Lane)
- </para>
-
- <para>
- This is a cleaner way of documenting the default values than was used
- previously.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cd1b21569] 2016-12-22 15:01:37 -0500
-Branch: REL9_6_STABLE [77cd0dc7e] 2016-12-22 15:01:38 -0500
-Branch: REL9_5_STABLE [c472f2a33] 2016-12-22 15:01:39 -0500
--->
- <para>
- Fix possible mishandling of expanded arrays in domain check
- constraints and <literal>CASE</literal> execution (Tom Lane)
- </para>
-
- <para>
- It was possible for a PL/pgSQL function invoked in these contexts to
- modify or even delete an array value that needs to be preserved for
- additional operations.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fc8b81a29] 2016-11-06 12:09:36 -0500
-Branch: REL9_6_STABLE [a5b153ff5] 2016-11-06 12:09:36 -0500
-Branch: REL9_5_STABLE [674877e93] 2016-11-06 12:09:36 -0500
--->
- <para>
- Fix nested uses of PL/pgSQL functions in contexts such as domain
- check constraints evaluated during assignment to a PL/pgSQL variable
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9cda81f00] 2016-12-09 15:27:23 -0500
-Branch: REL9_6_STABLE [b90f2247e] 2016-12-09 15:27:23 -0500
-Branch: REL9_5_STABLE [00858728f] 2016-12-09 15:27:23 -0500
-Branch: REL9_4_STABLE [13a4b37b9] 2016-12-09 15:27:23 -0500
-Branch: REL9_3_STABLE [cea6de20b] 2016-12-09 15:27:23 -0500
-Branch: REL9_2_STABLE [981885d17] 2016-12-09 15:27:23 -0500
--->
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fd2664dcb] 2016-11-06 14:43:13 -0500
-Branch: REL9_6_STABLE [3af8467e9] 2016-11-06 14:43:13 -0500
-Branch: REL9_5_STABLE [abdc83998] 2016-11-06 14:43:13 -0500
-Branch: REL9_4_STABLE [110413a35] 2016-11-06 14:43:13 -0500
-Branch: REL9_3_STABLE [9c0b04f18] 2016-11-06 14:43:14 -0500
-Branch: REL9_2_STABLE [92b7b1058] 2016-11-06 14:43:14 -0500
--->
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0a7481930] 2016-11-15 16:17:19 -0500
-Branch: REL9_6_STABLE [a69e6d9a6] 2016-11-15 16:17:19 -0500
-Branch: REL9_5_STABLE [8951f92da] 2016-11-15 16:17:19 -0500
-Branch: REL9_4_STABLE [e9802122d] 2016-11-15 16:17:19 -0500
-Branch: REL9_3_STABLE [46b6f3fff] 2016-11-15 16:17:19 -0500
-Branch: REL9_2_STABLE [13aa9af37] 2016-11-15 16:17:19 -0500
--->
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [4032ef18d] 2016-12-22 08:28:13 +0100
-Branch: REL9_6_STABLE [fd2a5547c] 2016-12-22 08:29:13 +0100
-Branch: REL9_5_STABLE [a88c547f9] 2016-12-22 08:29:33 +0100
-Branch: REL9_4_STABLE [3af172f7b] 2016-12-22 08:30:06 +0100
-Branch: REL9_3_STABLE [1df8b3fe8] 2016-12-22 08:32:25 +0100
-Branch: REL9_2_STABLE [501c91074] 2016-12-22 08:34:07 +0100
--->
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a3aef88e6] 2016-12-25 16:04:45 -0500
-Branch: REL9_6_STABLE [6a8c67f50] 2016-12-25 16:04:47 -0500
--->
- <para>
- Fix incorrect error reporting for duplicate data
- in <application>psql</application>'s <command>\crosstabview</command> (Tom Lane)
- </para>
-
- <para>
- <application>psql</application> sometimes quoted the wrong row and/or column
- values when complaining about multiple entries for the same crosstab
- cell.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [f3fd531a5] 2016-12-23 21:01:29 -0500
-Branch: REL9_6_STABLE [dc61580bd] 2016-12-23 21:01:33 -0500
-Branch: REL9_5_STABLE [16a2efdb2] 2016-12-23 21:01:40 -0500
-Branch: REL9_4_STABLE [98f30a0e7] 2016-12-23 21:01:45 -0500
-Branch: REL9_3_STABLE [2022d594d] 2016-12-23 21:01:48 -0500
-Branch: REL9_2_STABLE [26b55d669] 2016-12-23 21:01:51 -0500
--->
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [404e66758] 2016-11-28 11:51:30 -0500
-Branch: REL9_6_STABLE [28735cc72] 2016-11-28 11:51:35 -0500
--->
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER TABLE t
- ALTER c DROP ...</command> (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [18f8f784c] 2016-12-07 12:19:56 -0500
-Branch: REL9_6_STABLE [bb39f58f7] 2016-12-07 12:19:56 -0500
-Branch: REL9_5_STABLE [370c7a863] 2016-12-07 12:19:56 -0500
-Branch: REL9_4_STABLE [ccb84dae1] 2016-12-07 12:19:56 -0500
-Branch: REL9_3_STABLE [82eb5c514] 2016-12-07 12:19:56 -0500
-Branch: REL9_2_STABLE [1ec5cc025] 2016-12-07 12:19:57 -0500
--->
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [2f802d95b] 2016-12-22 09:48:55 -0800
-Branch: REL9_6_STABLE [51126ccdb] 2016-12-22 09:47:55 -0800
-Branch: REL9_5_STABLE [80ca22aa6] 2016-12-22 09:47:46 -0800
-Branch: REL9_4_STABLE [76943f54a] 2016-12-22 09:47:36 -0800
-Branch: REL9_3_STABLE [9b8507bfa] 2016-12-22 09:47:25 -0800
-Branch: REL9_2_STABLE [44de099f8] 2016-12-22 09:46:46 -0800
--->
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [c44486838] 2016-12-22 09:20:35 -0800
-Branch: REL9_6_STABLE [150841fb9] 2016-12-22 09:19:34 -0800
-Branch: REL9_5_STABLE [d5c05f27a] 2016-12-22 09:19:18 -0800
-Branch: REL9_4_STABLE [cb687e0ac] 2016-12-22 09:19:08 -0800
-Branch: REL9_3_STABLE [bd46cce21] 2016-12-22 09:18:50 -0800
--->
- <para>
- Teach <filename>contrib/dblink</filename> to ignore irrelevant server options
- when it uses a <filename>contrib/postgres_fdw</filename> foreign server as
- the source of connection options (Corey Huinker)
- </para>
-
- <para>
- Previously, if the foreign server object had options that were not
- also <application>libpq</application> connection options, an error occurred.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_6_STABLE [4774f6183] 2016-11-04 12:37:29 -0400
-Branch: REL9_5_STABLE [56d34ba5f] 2016-11-04 12:37:29 -0400
-Branch: master [14ee35799] 2016-11-02 00:09:27 -0400
-Branch: REL9_6_STABLE [2a8783e44] 2016-11-02 00:09:28 -0400
-Branch: REL9_5_STABLE [af636d7b5] 2016-11-02 00:09:28 -0400
--->
- <para>
- Fix portability problems in <filename>contrib/pageinspect</filename>'s
- functions for GIN indexes (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [3b790d256] 2016-12-21 11:01:48 -0500
-Branch: REL9_6_STABLE [b98e5513f] 2016-12-21 11:11:36 -0500
--->
- <para>
- Fix possible miss of socket read events while waiting on Windows
- (Amit Kapila)
- </para>
-
- <para>
- This error was harmless for most uses, but it is known to cause hangs
- when trying to use the pldebugger extension.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [95b9b8a39] 2016-12-03 15:46:36 -0500
-Branch: REL9_6_STABLE [784054579] 2016-12-03 15:46:42 -0500
-Branch: REL9_5_STABLE [5ab4b2ec4] 2016-12-03 15:46:48 -0500
-Branch: REL9_4_STABLE [b45a4949d] 2016-12-03 15:47:18 -0500
-Branch: REL9_3_STABLE [6c5d5918b] 2016-12-03 15:47:31 -0500
-Branch: REL9_2_STABLE [d83c94292] 2016-12-03 15:47:52 -0500
-Branch: master [b37da1e8a] 2016-12-03 15:46:35 -0500
-Branch: REL9_6_STABLE [056d62c5e] 2016-12-03 15:46:42 -0500
-Branch: REL9_5_STABLE [3cb8bdfef] 2016-12-03 15:46:48 -0500
-Branch: REL9_4_STABLE [ec7eacfae] 2016-12-03 15:47:12 -0500
-Branch: REL9_3_STABLE [4c3505eb4] 2016-12-03 15:47:31 -0500
-Branch: REL9_2_STABLE [a9265258a] 2016-12-03 15:47:49 -0500
--->
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [93513d1b6] 2016-12-15 14:32:42 -0500
-Branch: REL9_6_STABLE [6f4d38dbe] 2016-12-15 14:32:58 -0500
-Branch: REL9_5_STABLE [492fe48f0] 2016-12-15 14:33:06 -0500
-Branch: REL9_4_STABLE [b95f4bf07] 2016-12-15 14:33:10 -0500
-Branch: REL9_3_STABLE [ccf24539b] 2016-12-15 14:33:14 -0500
-Branch: REL9_2_STABLE [2b7d715c0] 2016-12-15 14:33:19 -0500
-Branch: master [32416b0f9] 2016-11-06 10:45:58 -0500
-Branch: REL9_6_STABLE [20559a854] 2016-11-06 10:46:08 -0500
-Branch: REL9_5_STABLE [6e377ef0c] 2016-11-06 10:46:14 -0500
-Branch: REL9_4_STABLE [6651ab058] 2016-11-06 10:46:21 -0500
-Branch: REL9_3_STABLE [3a8f24abd] 2016-11-06 10:46:27 -0500
-Branch: REL9_2_STABLE [6653dbafd] 2016-11-06 10:46:34 -0500
-Branch: master [1f87181e1] 2016-11-03 22:24:34 -0400
-Branch: REL9_6_STABLE [7afafe8af] 2016-11-04 10:44:16 -0400
-Branch: REL9_5_STABLE [ac6fc1b55] 2016-11-04 10:44:16 -0400
-Branch: REL9_4_STABLE [c09478e15] 2016-11-04 10:44:16 -0400
-Branch: REL9_3_STABLE [22b1207a3] 2016-11-04 10:44:16 -0400
-Branch: REL9_2_STABLE [07bc2fc45] 2016-11-04 10:44:16 -0400
--->
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [308d86827] 2017-01-30 11:40:22 -0500
-Branch: REL9_6_STABLE [6da67b684] 2017-01-30 11:40:39 -0500
-Branch: REL9_5_STABLE [4c729f471] 2017-01-30 11:40:46 -0500
-Branch: REL9_4_STABLE [a7b5de3ba] 2017-01-30 11:40:54 -0500
-Branch: REL9_3_STABLE [2b133be04] 2017-01-30 11:41:02 -0500
-Branch: REL9_2_STABLE [ef878cc2c] 2017-01-30 11:41:09 -0500
--->
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6-1">
- <title>Release 9.6.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.6.0.
- For information about new features in the 9.6 major release, see
- <xref linkend="release-9-6"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.6.1</title>
-
- <para>
- A dump/restore is not required for those running 9.6.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bugs described in
- the first two changelog entries below, then after updating you may need
- to take action to repair corrupted free space maps and/or visibility
- maps.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [917dc7d23] 2016-10-19 14:26:05 +0300
-Branch: REL9_6_STABLE [142530ef0] 2016-10-19 14:43:34 +0300
-Branch: REL9_5_STABLE [b82573d6e] 2016-10-19 15:00:06 +0300
-Branch: REL9_4_STABLE [2523bef15] 2016-10-19 15:00:10 +0300
-Branch: REL9_3_STABLE [1c02ee314] 2016-10-19 15:00:34 +0300
--->
- <para>
- Fix WAL-logging of truncation of relation free space maps and
- visibility maps (Pavan Deolasee, Heikki Linnakangas)
- </para>
-
- <para>
- It was possible for these files to not be correctly restored during
- crash recovery, or to be written incorrectly on a standby server.
- Bogus entries in a free space map could lead to attempts to access
- pages that have been truncated away from the relation itself, typically
- producing errors like <quote>could not read block <replaceable>XXX</replaceable>:
- read only 0 of 8192 bytes</quote>. Checksum failures in the
- visibility map are also possible, if checksumming is enabled.
- </para>
-
- <para>
- Procedures for determining whether there is a problem and repairing it
- if so are discussed at
- <ulink url="https://wiki.postgresql.org/wiki/Free_Space_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5afcd2aa7] 2016-09-30 20:40:55 -0400
-Branch: REL9_6_STABLE [b6d906073] 2016-09-30 20:39:06 -0400
--->
- <para>
- Fix possible data corruption when <application>pg_upgrade</application> rewrites
- a relation visibility map into 9.6 format (Tom Lane)
- </para>
-
- <para>
- On big-endian machines, bytes of the new visibility map were written
- in the wrong order, leading to a completely incorrect map. On
- Windows, the old map was read using text mode, leading to incorrect
- results if the map happened to contain consecutive bytes that matched
- a carriage return/line feed sequence. The latter error would almost
- always lead to a <application>pg_upgrade</application> failure due to the map
- file appearing to be the wrong length.
- </para>
-
- <para>
- If you are using a big-endian machine (many non-Intel architectures
- are big-endian) and have used <application>pg_upgrade</application> to upgrade
- from a pre-9.6 release, you should assume that all visibility maps are
- incorrect and need to be regenerated. It is sufficient to truncate
- each relation's visibility map
- with <filename>contrib/pg_visibility</filename>'s
- <function>pg_truncate_visibility_map()</function> function.
- For more information see
- <ulink url="https://wiki.postgresql.org/wiki/Visibility_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a6c0a5b6e] 2016-10-23 18:36:13 -0400
-Branch: REL9_6_STABLE [c4016fcb1] 2016-10-23 18:36:13 -0400
-Branch: REL9_5_STABLE [65d85b8f9] 2016-10-23 18:36:13 -0400
--->
- <para>
- Don't throw serialization errors for self-conflicting insertions
- in <command>INSERT ... ON CONFLICT</command> (Thomas Munro, Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [d8589946d] 2016-10-17 12:13:16 +0300
-Branch: REL9_6_STABLE [a5f0bd77a] 2016-10-17 12:13:35 +0300
--->
- <para>
- Fix use-after-free hazard in execution of aggregate functions
- using <literal>DISTINCT</literal> (Peter Geoghegan)
- </para>
-
- <para>
- This could lead to a crash or incorrect query results.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [ac4a9d92f] 2016-10-09 12:49:37 -0400
-Branch: REL9_6_STABLE [dca25c256] 2016-10-09 12:49:37 -0400
--->
- <para>
- Fix incorrect handling of polymorphic aggregates used as window
- functions (Tom Lane)
- </para>
-
- <para>
- The aggregate's transition function was told that its first argument
- and result were of the aggregate's output type, rather than the
- state type. This led to errors or crashes with
- polymorphic transition functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [814b9e9b8] 2016-10-03 16:22:57 -0400
-Branch: REL9_6_STABLE [190765a05] 2016-10-03 16:23:02 -0400
-Branch: REL9_5_STABLE [647a86e37] 2016-10-03 16:23:12 -0400
--->
- <para>
- Fix <command>COPY</command> with a column name list from a table that has
- row-level security enabled (Adam Brightwell)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [709e461be] 2016-10-20 17:17:50 -0400
-Branch: REL9_6_STABLE [033666515] 2016-10-20 17:17:57 -0400
-Branch: REL9_5_STABLE [cc0e4c567] 2016-10-20 17:18:01 -0400
-Branch: REL9_4_STABLE [adb199711] 2016-10-20 17:18:05 -0400
-Branch: REL9_3_STABLE [edb514306] 2016-10-20 17:18:09 -0400
-Branch: REL9_2_STABLE [f17c26dbd] 2016-10-20 17:18:14 -0400
--->
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [81e82a2bd] 2016-10-13 19:46:05 -0400
-Branch: REL9_6_STABLE [03f2bf70a] 2016-10-13 19:46:06 -0400
-Branch: REL9_5_STABLE [3cd504254] 2016-10-13 19:45:58 -0400
--->
- <para>
- Fix statistics update for <command>TRUNCATE</command> in a prepared
- transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e55a946a8] 2016-10-08 19:29:27 -0400
-Branch: REL9_6_STABLE [b605aeba0] 2016-10-08 19:29:27 -0400
-Branch: REL9_5_STABLE [d1a9f128d] 2016-10-08 19:29:27 -0400
-Branch: REL9_4_STABLE [12230c478] 2016-10-08 19:29:27 -0400
-Branch: REL9_3_STABLE [56a047f46] 2016-10-08 19:29:28 -0400
-Branch: REL9_2_STABLE [a54faa659] 2016-10-08 19:29:28 -0400
-Branch: master [3cca13cbf] 2016-10-13 17:05:14 -0400
-Branch: REL9_6_STABLE [f9e8b05e5] 2016-10-13 17:05:14 -0400
-Branch: REL9_5_STABLE [3217ac3a9] 2016-10-13 17:05:15 -0400
-Branch: REL9_4_STABLE [f2024d59a] 2016-10-13 17:05:15 -0400
-Branch: REL9_3_STABLE [f0bf0f233] 2016-10-13 17:05:15 -0400
-Branch: REL9_2_STABLE [6f2db29ec] 2016-10-13 17:05:15 -0400
--->
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6bc811c99] 2016-10-03 16:40:25 -0400
-Branch: REL9_6_STABLE [993d94c59] 2016-10-03 16:40:26 -0400
-Branch: REL9_5_STABLE [f50fa46cc] 2016-10-03 16:40:27 -0400
--->
- <para>
- Show a sensible value
- in <structname>pg_settings</structname>.<structfield>unit</structfield>
- for <varname>min_wal_size</varname> and <varname>max_wal_size</varname> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9c4cc9e2c] 2016-10-13 00:25:48 -0400
-Branch: REL9_6_STABLE [0e9e64c07] 2016-10-13 00:25:28 -0400
--->
- <para>
- Fix replacement of array elements in <function>jsonb_set()</function>
- (Tom Lane)
- </para>
-
- <para>
- If the target is an existing JSON array element, it got deleted
- instead of being replaced with a new value.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6292c2339] 2016-10-23 15:01:24 -0400
-Branch: REL9_6_STABLE [5beb73b49] 2016-10-23 15:01:24 -0400
-Branch: REL9_5_STABLE [913e7e598] 2016-10-23 15:01:24 -0400
-Branch: REL9_4_STABLE [9ec21591f] 2016-10-23 15:01:24 -0400
-Branch: REL9_3_STABLE [676c60375] 2016-10-23 15:01:24 -0400
-Branch: REL9_2_STABLE [9bc01e7a4] 2016-10-23 15:01:24 -0400
-Branch: REL9_1_STABLE [d4fa18a55] 2016-10-23 15:01:24 -0400
-Branch: master [8f1fb7d62] 2016-10-23 19:14:32 -0400
-Branch: REL9_6_STABLE [fdcee9f1f] 2016-10-23 19:14:32 -0400
-Branch: REL9_5_STABLE [beac79369] 2016-10-23 19:14:32 -0400
--->
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [00f15338b] 2016-10-24 09:45:48 -0300
-Branch: REL9_6_STABLE [c8329f934] 2016-10-24 09:46:49 -0300
-Branch: REL9_5_STABLE [7a2fa5774] 2016-10-24 09:38:28 -0300
--->
- <para>
- Preserve commit timestamps across server restart
- (Julien Rouhaud, Craig Ringer)
- </para>
-
- <para>
- With <xref linkend="guc-track-commit-timestamp"/> turned on, old
- commit timestamps became inaccessible after a clean server restart.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [61633f790] 2016-10-03 22:11:36 -0700
-Branch: REL9_6_STABLE [76c0b73df] 2016-10-03 22:12:31 -0700
-Branch: REL9_5_STABLE [ce603a34a] 2016-10-03 22:13:10 -0700
-Branch: REL9_4_STABLE [07172b20f] 2016-10-03 22:14:12 -0700
--->
- <para>
- Fix logical WAL decoding to work properly when a subtransaction's WAL
- output is large enough to spill to disk (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [308985b0b] 2016-09-28 11:19:46 -0400
-Branch: REL9_6_STABLE [32841fa32] 2016-09-28 11:22:39 -0400
--->
- <para>
- Fix dangling-pointer problem in logical WAL decoding (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [cb775768e] 2016-10-13 15:06:46 -0400
-Branch: REL9_6_STABLE [2dd9e315d] 2016-10-13 15:06:57 -0400
-Branch: REL9_5_STABLE [43d17489d] 2016-10-13 15:07:04 -0400
-Branch: REL9_4_STABLE [6d3cbbf59] 2016-10-13 15:07:11 -0400
--->
- <para>
- Round shared-memory allocation request to a multiple of the actual
- huge page size when attempting to use huge pages on Linux (Tom Lane)
- </para>
-
- <para>
- This avoids possible failures during <function>munmap()</function> on systems
- with atypical default huge page sizes. Except in crash-recovery
- cases, there were no ill effects other than a log message.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [8bb14cdd3] 2016-10-07 12:20:39 +0300
-Branch: REL9_6_STABLE [341acf235] 2016-10-07 12:21:52 +0300
-Branch: REL9_5_STABLE [cb38c056f] 2016-10-07 12:22:19 +0300
-Branch: REL9_4_STABLE [31895abd8] 2016-10-07 12:22:45 +0300
-Branch: REL9_3_STABLE [fde92dc22] 2016-10-07 12:23:06 +0300
-Branch: REL9_2_STABLE [e7bb327e3] 2016-10-07 12:23:58 +0300
-Branch: REL9_1_STABLE [e76d06d7f] 2016-10-07 12:23:52 +0300
-Branch: master [275bf9860] 2016-10-07 12:51:52 +0300
-Branch: REL9_6_STABLE [4d3ecbfee] 2016-10-07 12:53:40 +0300
-Branch: REL9_5_STABLE [f0ca54037] 2016-10-07 12:53:42 +0300
-Branch: REL9_4_STABLE [418cd758a] 2016-10-07 12:53:45 +0300
-Branch: REL9_3_STABLE [b5afc6f67] 2016-10-07 12:53:47 +0300
-Branch: REL9_2_STABLE [5d5dc6f68] 2016-10-07 12:53:49 +0300
-Branch: REL9_1_STABLE [e84e4761f] 2016-10-07 12:53:51 +0300
--->
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [886f6c5cc] 2016-10-10 10:35:58 -0400
-Branch: REL9_6_STABLE [bb211b66f] 2016-10-10 10:35:58 -0400
-Branch: REL9_5_STABLE [4f87f7640] 2016-10-10 10:35:58 -0400
-Branch: REL9_4_STABLE [eb6bc03bf] 2016-10-10 10:35:58 -0400
-Branch: REL9_3_STABLE [455eaf984] 2016-10-10 10:35:58 -0400
-Branch: REL9_2_STABLE [7397f62e7] 2016-10-10 10:35:58 -0400
-Branch: REL9_1_STABLE [fb6825fe5] 2016-10-10 10:35:58 -0400
--->
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [83c249200] 2016-10-03 10:07:49 -0400
-Branch: REL9_6_STABLE [bac56dbe0] 2016-10-03 10:07:39 -0400
-Branch: REL9_5_STABLE [0f259bd17] 2016-10-03 10:07:39 -0400
--->
- <para>
- In <application>pg_upgrade</application>, check library loadability in name order
- (Tom Lane)
- </para>
-
- <para>
- This is a workaround to deal with cross-extension dependencies from
- language transform modules to their base language and data type
- modules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e8bdee277] 2016-10-02 14:31:28 -0400
-Branch: REL9_6_STABLE [f40334b85] 2016-10-02 14:31:28 -0400
--->
- <para>
- Fix <application>pg_upgrade</application> to work correctly for extensions
- containing index access methods (Tom Lane)
- </para>
-
- <para>
- To allow this, the server has been extended to support <command>ALTER
- EXTENSION ADD/DROP ACCESS METHOD</command>. That functionality should have
- been included in the original patch to support dynamic creation of
- access methods, but it was overlooked.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [f002ed2b8] 2016-09-30 20:40:56 -0400
-Branch: REL9_6_STABLE [53fbeed40] 2016-09-30 20:40:27 -0400
--->
- <para>
- Improve error reporting in <application>pg_upgrade</application>'s file
- copying/linking/rewriting steps (Tom Lane, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4806f26f9] 2016-10-07 09:51:18 -0400
-Branch: REL9_6_STABLE [1749332ec] 2016-10-07 09:51:28 -0400
--->
- <para>
- Fix <application>pg_dump</application> to work against pre-7.4 servers
- (Amit Langote, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [0d4d7d618] 2016-10-07 14:35:17 +0300
-Branch: REL9_6_STABLE [2933ed036] 2016-10-07 14:35:41 +0300
-Branch: REL9_5_STABLE [010a1b561] 2016-10-07 14:35:45 +0300
--->
- <para>
- Disallow specifying both <option>--source-server</option>
- and <option>--source-target</option> options to <application>pg_rewind</application>
- (Michael Banck)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [d7eb76b90] 2016-10-06 13:24:46 +0300
-Branch: REL9_6_STABLE [aab809664] 2016-10-06 13:34:38 +0300
-Branch: REL9_5_STABLE [69da71254] 2016-10-06 13:34:32 +0300
--->
- <para>
- Make <application>pg_rewind</application> turn off <varname>synchronous_commit</varname>
- in its session on the source server (Michael Banck, Michael Paquier)
- </para>
-
- <para>
- This allows <application>pg_rewind</application> to work even when the source
- server is using synchronous replication that is not working for some
- reason.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [3d39244e6] 2016-09-30 11:22:00 +0200
-Branch: REL9_6_STABLE [41d58e97a] 2016-09-30 11:22:20 +0200
-Branch: REL9_5_STABLE [d8b4c3490] 2016-09-30 11:22:32 +0200
-Branch: REL9_4_STABLE [da3f71a08] 2016-09-30 11:22:49 +0200
-Branch: REL9_3_STABLE [4bff35cca] 2016-09-30 11:23:25 +0200
--->
- <para>
- In <application>pg_xlogdump</application>, retry opening new WAL segments when
- using <option>--follow</option> option (Magnus Hagander)
- </para>
-
- <para>
- This allows for a possible delay in the server's creation of the next
- segment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9a109452d] 2016-10-01 16:32:54 -0400
-Branch: REL9_6_STABLE [f4e787c82] 2016-10-01 16:32:55 -0400
--->
- <para>
- Fix <filename>contrib/pg_visibility</filename> to report the correct TID for
- a corrupt tuple that has been the subject of a rolled-back update
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7107d58ec] 2016-10-01 13:35:13 -0400
-Branch: REL9_6_STABLE [68fb75e10] 2016-10-01 13:35:20 -0400
--->
- <para>
- Fix makefile dependencies so that parallel make
- of <application>PL/Python</application> by itself will succeed reliably
- (Pavel Raiskup)
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [5e21b6811] 2016-10-20 15:40:07 -0400
-Branch: REL9_6_STABLE [845a8ea3e] 2016-10-20 15:40:14 -0400
-Branch: REL9_5_STABLE [aac898ac5] 2016-10-20 15:40:18 -0400
-Branch: REL9_4_STABLE [a8518738a] 2016-10-20 15:40:22 -0400
-Branch: REL9_3_STABLE [92da75278] 2016-10-20 15:40:26 -0400
-Branch: REL9_2_STABLE [b2aee4cb6] 2016-10-20 15:40:30 -0400
-Branch: REL9_1_STABLE [37ecf07d3] 2016-10-20 15:40:34 -0400
-Branch: master [d8fc45bd0] 2016-10-20 15:20:11 -0400
-Branch: REL9_6_STABLE [80ba149b0] 2016-10-20 15:20:17 -0400
-Branch: REL9_5_STABLE [8cddedc17] 2016-10-20 15:20:21 -0400
-Branch: REL9_4_STABLE [1d388ba2c] 2016-10-20 15:20:26 -0400
-Branch: REL9_3_STABLE [ff68f434f] 2016-10-20 15:20:30 -0400
-Branch: REL9_2_STABLE [3c5fae786] 2016-10-20 15:20:35 -0400
-Branch: REL9_1_STABLE [9345bf08c] 2016-10-20 15:20:39 -0400
-Branch: master [f3094920a] 2016-10-19 18:55:52 -0400
-Branch: REL9_6_STABLE [7fec5e101] 2016-10-19 18:55:57 -0400
-Branch: REL9_5_STABLE [bc59c1236] 2016-10-19 18:56:01 -0400
-Branch: REL9_4_STABLE [381c4b03b] 2016-10-19 18:56:05 -0400
-Branch: REL9_3_STABLE [ad6f67179] 2016-10-19 18:56:09 -0400
-Branch: REL9_2_STABLE [66adeefda] 2016-10-19 18:56:14 -0400
-Branch: REL9_1_STABLE [2877b102e] 2016-10-19 18:56:18 -0400
-Branch: master [ecbac3e6e] 2016-10-19 17:56:38 -0400
-Branch: REL9_6_STABLE [0c2f4c54c] 2016-10-19 17:56:45 -0400
-Branch: REL9_5_STABLE [5508d0c0b] 2016-10-19 17:56:49 -0400
-Branch: REL9_4_STABLE [9727dac58] 2016-10-19 17:56:53 -0400
-Branch: REL9_3_STABLE [7abda82ef] 2016-10-19 17:56:57 -0400
-Branch: REL9_2_STABLE [a03339aef] 2016-10-19 17:57:01 -0400
-Branch: REL9_1_STABLE [22cf97635] 2016-10-19 17:57:06 -0400
--->
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-6">
- <title>Release 9.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-09-29</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 9.6 include:
- </para>
-
- <!-- Items in this list summarize one or more items below -->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Parallel execution of sequential scans, joins and aggregates
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid scanning pages unnecessarily during vacuum freeze operations
- </para>
- </listitem>
-
- <listitem>
- <para>
- Synchronous replication now allows multiple standby servers for
- increased reliability
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full-text search can now search for phrases (multiple adjacent words)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>postgres_fdw</filename> now supports remote joins, sorts,
- <command>UPDATE</command>s, and <command>DELETE</command>s
- </para>
- </listitem>
-
- <listitem>
- <para>
- Substantial performance improvements, especially in the area of
- scalability on multi-<acronym>CPU</acronym>-socket servers
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.6</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.6 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-10 [53be0b1ad] Provide much better wait information in pg_stat_activity
--->
- <para>
- Improve the <link
- linkend="pg-stat-activity-view"><structname>pg_stat_activity</structname></link>
- view's information about what a process is waiting for (Amit
- Kapila, Ildus Kurbangaliev)
- </para>
-
- <para>
- Historically a process has only been shown as waiting if it was
- waiting for a heavyweight lock. Now waits for lightweight locks
- and buffer pins are also shown in <structname>pg_stat_activity</structname>.
- Also, the type of lock being waited for is now visible.
- These changes replace the <structfield>waiting</structfield> column with
- <structfield>wait_event_type</structfield> and <structfield>wait_event</structfield>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-05 [2d87eedc1] to_char(): Do not count negative sign as a digit for tim
--->
- <para>
- In <link
- linkend="functions-formatting-table"><function>to_char()</function></link>,
- do not count a minus sign (when needed) as part of the field
- width for time-related fields (Bruce Momjian)
- </para>
-
- <para>
- For example, <literal>to_char('-4 years'::interval, 'YY')</literal>
- now returns <literal>-04</literal>, rather than <literal>-4</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-21 [647d87c56] Make extract() do something more reasonable with infinit
--->
- <para>
- Make <link
- linkend="functions-datetime-table"><function>extract()</function></link> behave
- more reasonably with infinite inputs (Vitaly Burovoy)
- </para>
-
- <para>
- Historically the <function>extract()</function> function just returned
- zero given an infinite timestamp, regardless of the given
- field name. Make it return <literal>infinity</literal>
- or <literal>-infinity</literal> as appropriate when the
- requested field is one that is monotonically increasing (e.g,
- <literal>year</literal>, <literal>epoch</literal>), or <literal>NULL</literal> when
- it is not (e.g., <literal>day</literal>, <literal>hour</literal>). Also,
- throw the expected error for bad field names.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-05 [0426f349e] Rearrange the handling of error context reports.
-This commit is also listed under libpq and psql
--->
- <para>
- Remove PL/pgSQL's <quote>feature</quote> that suppressed the
- innermost line of <literal>CONTEXT</literal> for messages emitted by
- <command>RAISE</command> commands (Pavel Stehule)
- </para>
-
- <para>
- This ancient backwards-compatibility hack was agreed to have
- outlived its usefulness.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-29 [61d66c44f] Fix support of digits in email/hostnames.
--->
- <para>
- Fix the default text search parser to allow leading digits
- in <literal>email</literal> and <literal>host</literal> tokens (Artur Zakirov)
- </para>
-
- <para>
- In most cases this will result in few changes in the parsing of
- text. But if you have data where such addresses occur frequently,
- it may be worth rebuilding dependent <type>tsvector</type> columns
- and indexes so that addresses of this form will be found properly
- by text searches.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-04 [1bbd52cb9] Make unaccent handle all diacritics known to Unicode, an
-2016-03-16 [9a206d063] Improve script generating unaccent rules
--->
- <para>
- Extend <link linkend="unaccent"><filename>contrib/unaccent</filename></link>'s
- standard <filename>unaccent.rules</filename> file to handle all diacritics
- known to Unicode, and to expand ligatures correctly (Thomas Munro,
- L&eacute;onard Benedetti)
- </para>
-
- <para>
- The previous version neglected to convert some less-common letters
- with diacritic marks. Also, ligatures are now expanded into
- separate letters. Installations that use this rules file may wish
- to rebuild <type>tsvector</type> columns and indexes that depend on the
- result.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-22 [d371bebd3] Remove redundant CREATEUSER/NOCREATEUSER options in CREA
--->
- <para>
- Remove the long-deprecated
- <literal>CREATEUSER</literal>/<literal>NOCREATEUSER</literal> options from
- <command>CREATE ROLE</command> and allied commands (Tom Lane)
- </para>
-
- <para>
- <literal>CREATEUSER</literal> actually meant <literal>SUPERUSER</literal>,
- for ancient backwards-compatibility reasons. This has been a
- constant source of confusion for people who (reasonably) expect
- it to mean <literal>CREATEROLE</literal>. It has been deprecated for
- ten years now, so fix the problem by removing it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [293007898] Reserve the "pg_" namespace for roles
-2016-05-06 [a89505fd2] Remove various special checks around default roles
-2016-05-08 [7df974ee0] Disallow superuser names starting with 'pg_' in initdb
--->
- <para>
- Treat role names beginning with <literal>pg_</literal> as reserved
- (Stephen Frost)
- </para>
-
- <para>
- User creation of such role names is now disallowed. This prevents
- conflicts with built-in roles created by <application>initdb</application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-07 [d8710f18f] Correct column name in information schema
--->
- <para>
- Change a column name in the
- <structname>information_schema</structname>.<structname>routines</structname>
- view from <structfield>result_cast_character_set_name</structfield>
- to <structfield>result_cast_char_set_name</structfield> (Cl&eacute;ment
- Pr&eacute;vost)
- </para>
-
- <para>
- The SQL:2011 standard specifies the longer name, but that appears
- to be a mistake, because adjacent column names use the shorter
- style, as do other <structname>information_schema</structname> views.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-08 [d5563d7df] psql: Support multiple -c and -f options, and allow mixi
--->
- <para>
- <application>psql</application>'s <option>-c</option> option no longer implies
- <option>--no-psqlrc</option>
- (Pavel Stehule, Catalin Iacob)
- </para>
-
- <para>
- Write <option>--no-psqlrc</option> (or its
- abbreviation <option>-X</option>) explicitly to obtain the old
- behavior. Scripts so modified will still work with old
- versions of <application>psql</application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-02 [5671aaca8] Improve pg_restore's -t switch to match all types of rel
--->
- <para>
- Improve <application>pg_restore</application>'s <option>-t</option> option to
- match all types of relations, not only plain tables (Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-12 [59a884e98] Change delimiter used for display of NextXID
--->
- <para>
- Change the display format used for <literal>NextXID</literal> in
- <application>pg_controldata</application> and related places (Joe Conway,
- Bruce Momjian)
- </para>
-
- <para>
- Display epoch-and-transaction-ID values in the format
- <replaceable>number</replaceable><literal>:</literal><replaceable>number</replaceable>.
- The previous format
- <replaceable>number</replaceable><literal>/</literal><replaceable>number</replaceable> was
- confusingly similar to that used for <acronym>LSN</acronym>s.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-06-07 [a89b4b1be] Update citext extension for parallel query.
-and many others in the same vein
--->
- <para>
- Update extension functions to be marked parallel-safe where
- appropriate (Andreas Karlsson)
- </para>
-
- <para>
- Many of the standard extensions have been updated to allow their
- functions to be executed within parallel query worker processes.
- These changes will not take effect in
- databases <application>pg_upgrade</application>'d from prior versions unless
- you apply <command>ALTER EXTENSION UPDATE</command> to each such extension
- (in each database of a cluster).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.6 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Parallel Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-09-18 [4a4e6893a] Glue layer to connect the executor to the shm_mq mechani
-2015-09-23 [a0d9f6e43] Add readfuncs.c support for plan nodes.
-2015-09-28 [d1b7c1ffe] Parallel executor support.
-2015-09-30 [3bd909b22] Add a Gather executor node.
-2015-10-16 [ee7ca559f] Add a C API for parallel heap scans.
-2015-10-16 [bfc78d719] Rewrite interaction of parallel mode with parallel execu
-2015-10-16 [a53c06a13] Prohibit parallel query when the isolation level is seri
-2015-11-02 [1efc7e538] Fix problems with ParamListInfo serialization mechanism.
-2015-11-06 [6e71dd7ce] Modify tqueue infrastructure to support transient record
-2015-11-11 [f0661c4e8] Make sequential scans parallel-aware.
-2015-11-11 [80558c1f5] Generate parallel sequential scan plans in simple cases.
-2015-12-09 [b287df70e] Allow EXPLAIN (ANALYZE, VERBOSE) to display per-worker s
-2016-01-20 [45be99f8c] Support parallel joins, and make related improvements.
-2016-02-03 [69d34408e] Allow parallel custom and foreign scans.
-2016-02-07 [a1c1af2a1] Introduce group locking to prevent parallel processes fr
-2016-02-07 [7c944bd90] Introduce a new GUC force_parallel_mode for testing purp
-2016-02-25 [57a6a72b6] Enable parallelism for prepared statements and extended
-2016-02-26 [7bea19d0a] On second thought, disable parallelism for prepared stat
-2016-03-21 [e06a38965] Support parallel aggregation.
-2016-04-05 [11c8669c0] Add parallel query support functions for assorted aggreg
-2016-04-08 [25fe8b5f1] Add a 'parallel_degree' reloption.
-2016-04-27 [59eb55127] Fix EXPLAIN VERBOSE output for parallel aggregate.
-2016-06-09 [c9ce4a1c6] Eliminate "parallel degree" terminology.
-2016-06-16 [75be66464] Invent min_parallel_relation_size GUC to replace a hard-
-2016-08-16 [f85b1a841] Disable parallel query by default.
-2016-09-15 [72ce78162] Make min_parallel_relation_size's default value platform
--->
- <para>
- Parallel queries (Robert Haas, Amit Kapila, David Rowley,
- many others)
- </para>
-
- <para>
- With 9.6, <productname>PostgreSQL</productname> introduces initial support
- for parallel execution of large queries. Only strictly read-only
- queries where the driving table is accessed via a sequential scan
- can be parallelized. Hash joins and nested loops can be performed
- in parallel, as can aggregation (for supported aggregates).
- Much remains to be done, but this is already a useful set of
- features.
- </para>
-
- <para>
- Parallel query execution is not (yet) enabled by default.
- To allow it, set the new configuration
- parameter <xref linkend="guc-max-parallel-workers-per-gather"/> to a
- value larger than zero. Additional control over use of parallelism
- is available through other new configuration parameters
- <xref linkend="guc-force-parallel-mode"/>,
- <xref linkend="guc-parallel-setup-cost"/>, <xref
- linkend="guc-parallel-tuple-cost"/>, and
- <literal>min_parallel_relation_size</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-16 [7aea8e4f2] Determine whether it's safe to attempt a parallel plan f
--->
- <para>
- Provide infrastructure for marking the parallel-safety status of
- functions (Robert Haas, Amit Kapila)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-09-02 [30bb26b5e] Allow usage of huge maintenance_work_mem for GIN build.
--->
- <para>
- Allow <link linkend="gin"><acronym>GIN</acronym></link> index builds to
- make effective use of <xref linkend="guc-maintenance-work-mem"/>
- settings larger than 1 GB (Robert Abraham, Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-07 [e95680832] Add pages deleted from pending list to FSM
-2015-09-23 [dc943ad95] Allow autoanalyze to add pages deleted from pending list
--->
- <para>
- Add pages deleted from a GIN index's pending list to the free space
- map immediately
- (Jeff Janes, Teodor Sigaev)
- </para>
-
- <para>
- This reduces bloat if the table is not vacuumed often.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-28 [7f46eaf03] Add gin_clean_pending_list function to clean up GIN pend
--->
- <para>
- Add <link
- linkend="functions-admin-index"><function>gin_clean_pending_list()</function></link>
- function to allow manual invocation of pending-list cleanup for a
- GIN index (Jeff Janes)
- </para>
-
- <para>
- Formerly, such cleanup happened only as a byproduct of vacuuming or
- analyzing the parent table.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-09 [013ebc0a7] Microvacuum for GIST
-2015-09-17 [22f519c92] Fix bug introduced by microvacuum for GiST
--->
- <para>
- Improve handling of dead index tuples in <link
- linkend="gist">GiST</link> indexes (Anastasia Lubennikova)
- </para>
-
- <para>
- Dead index tuples are now marked as such when an index scan notices
- that the corresponding heap tuple is dead. When inserting tuples,
- marked-dead tuples will be removed if needed to make space on
- the page.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-30 [acdf2a8b3] Introduce SP-GiST operator class over box.
--->
- <para>
- Add an <link linkend="spgist">SP-GiST</link> operator class for
- type <type>box</type> (Alexander Lebedev)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Sorting</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-08 [071180377] Use quicksort, not replacement selection, for external s
-2016-03-17 [0011c0091] Improve memory management for external sorts.
-2016-09-06 [96ba40c0f] Guard against possible memory allocation botch in batchm
--->
- <para>
- Improve sorting performance by using quicksort, not replacement
- selection sort, when performing external sort steps (Peter
- Geoghegan)
- </para>
-
- <para>
- The new approach makes better use of the <acronym>CPU</acronym> cache
- for typical cache sizes and data volumes. Where necessary,
- the behavior can be adjusted via the new configuration parameter
- <literal>replacement_sort_tuples</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-09 [0e57b4d8b] Speed up text sorts where the same strings occur multipl
-2015-10-20 [5be94a9eb] Be a bit more rigorous about how we cache strcoll and st
--->
- <para>
- Speed up text sorts where the same string occurs multiple times
- (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-06 [a76ef15d9] Add sort support routine for the UUID data type.
-2016-02-03 [b47b4dbf6] Extend sortsupport for text to more opclasses.
-2016-02-17 [f1f5ec1ef] Reuse abbreviated keys in ordered [set] aggregates.
--->
- <para>
- Speed up sorting of <type>uuid</type>, <type>bytea</type>, and
- <type>char(n)</type> fields by using <quote>abbreviated</quote> keys
- (Peter Geoghegan)
- </para>
-
- <para>
- Support for abbreviated keys has also been
- added to the non-default operator classes <link
- linkend="indexes-opclass"><literal>text_pattern_ops</literal></link>,
- <literal>varchar_pattern_ops</literal>, and
- <literal>bpchar_pattern_ops</literal>. Processing of ordered-set
- aggregates can also now exploit abbreviated keys.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-16 [b648b7034] Speed up CREATE INDEX CONCURRENTLY's TID sort.
--->
- <para>
- Speed up <command>CREATE INDEX CONCURRENTLY</command> by treating
- <acronym>TID</acronym>s as 64-bit integers during sorting (Peter
- Geoghegan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Locking</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-08-06 [0e141c0fb] Reduce ProcArrayLock contention by removing backends in
-2015-09-03 [4aec49899] Assorted code review for recent ProcArrayLock patch.
--->
- <para>
- Reduce contention for the <literal>ProcArrayLock</literal> (Amit Kapila,
- Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-15 [6150a1b08] Move buffer I/O and content LWLocks out of the main tran
--->
- <para>
- Improve performance by moving buffer content locks into the buffer
- descriptors (Andres Freund, Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-10 [48354581a] Allow Pin/UnpinBuffer to operate in a lockfree manner.
--->
- <para>
- Replace shared-buffer header spinlocks with atomic operations to
- improve scalability (Alexander Korotkov, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-10 [008608b9d] Avoid the use of a separate spinlock to protect a LWLock
--->
- <para>
- Use atomic operations, rather than a spinlock, to protect an
- <literal>LWLock</literal>'s wait queue (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-23 [44ca4022f] Partition the freelist for shared dynahash tables.
--->
- <para>
- Partition the shared hash table freelist to reduce contention on
- multi-<acronym>CPU</acronym>-socket servers (Aleksander Alekseev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-09 [687f2cd7a] Avoid pin scan for replay of XLOG_BTREE_VACUUM
-2016-04-03 [3e4b7d879] Avoid pin scan for replay of XLOG_BTREE_VACUUM in all ca
--->
- <para>
- Reduce interlocking on standby servers during the replay of btree
- index vacuuming operations (Simon Riggs)
- </para>
-
- <para>
- This change avoids substantial replication delays that sometimes
- occurred while replaying such operations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer Statistics</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-01 [be4b4dc75] Omit null rows when applying the Haas-Stokes estimator f
-2016-04-01 [3d3bf62f3] Omit null rows when setting the threshold for what's a m
-2016-04-04 [391159e03] Partially revert commit 3d3bf62f30200500637b24fdb7b992a9
--->
- <para>
- Improve <command>ANALYZE</command>'s estimates for columns with many nulls
- (Tomas Vondra, Alex Shulgin)
- </para>
-
- <para>
- Previously <command>ANALYZE</command> tended to underestimate the number
- of non-<literal>NULL</literal> distinct values in a column with many
- <literal>NULL</literal>s, and was also inaccurate in computing the
- most-common values.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-04 [84f9a35e3] Improve estimate of distinct values in estimate_num_grou
--->
- <para>
- Improve planner's estimate of the number of distinct values in
- a query result (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [137805f89] Use Foreign Key relationships to infer multi-column join
-2016-06-07 [77ba61080] Revert "Use Foreign Key relationships to infer multi-col
-2016-06-18 [100340e2d] Restore foreign-key-aware estimation of join relation si
--->
- <para>
- Use foreign key relationships to infer selectivity for join
- predicates (Tomas Vondra, David Rowley)
- </para>
-
- <para>
- If a table <literal>t</literal> has a foreign key restriction, say
- <literal>(a,b) REFERENCES r (x,y)</literal>, then a <literal>WHERE</literal>
- condition such as <literal>t.a = r.x AND t.b = r.y</literal> cannot
- select more than one <literal>r</literal> row per <literal>t</literal> row.
- The planner formerly considered these <literal>AND</literal> conditions
- to be independent and would often drastically misestimate
- selectivity as a result. Now it compares the <literal>WHERE</literal>
- conditions to applicable foreign key constraints and produces
- better estimates.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><command>VACUUM</command></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-01 [a892234f8] Change the format of the VM fork to add a second bit per
-2016-03-08 [77a1d1e79] Department of second thoughts: remove PD_ALL_FROZEN.
-2016-03-10 [fd31cd265] Don't vacuum all-frozen pages.
-2016-03-11 [7087166a8] pg_upgrade: Convert old visibility map format to new for
-2016-06-17 [ede62e56f] Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies.
-2016-07-18 [eca0f1db1] Clear all-frozen visibilitymap status when locking tuple
-2016-08-04 [e7caacf73] Fix hard to hit race condition in heapam's tuple locking
--->
- <para>
- Avoid re-vacuuming pages containing only frozen tuples (Masahiko
- Sawada, Robert Haas, Andres Freund)
- </para>
-
- <para>
- Formerly, anti-wraparound vacuum had to visit every page of
- a table, even pages where there was nothing to do. Now, pages
- containing only already-frozen tuples are identified in the table's
- visibility map, and can be skipped by vacuum even when doing
- transaction wraparound prevention. This should greatly reduce the
- cost of maintaining large tables containing mostly-unchanging data.
- </para>
-
- <para>
- If necessary, vacuum can be forced to process all-frozen
- pages using the new <literal>DISABLE_PAGE_SKIPPING</literal> option.
- Normally this should never be needed, but it might help in
- recovering from visibility-map corruption.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-30 [e84290823] Avoid useless truncation attempts during VACUUM.
--->
- <para>
- Avoid useless heap-truncation attempts during <command>VACUUM</command>
- (Jeff Janes, Tom Lane)
- </para>
-
- <para>
- This change avoids taking an exclusive table lock in some cases
- where no truncation is possible. The main benefit comes from
- avoiding unnecessary query cancellations on standby servers.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-08 [848ef42bb] Add the "snapshot too old" feature
-2016-05-06 [2cc41acd8] Fix hash index vs "snapshot too old" problemms
-2016-05-06 [7e3da1c47] Mitigate "snapshot too old" performance regression on NU
-2016-08-03 [3e2f3c2e4] Prevent "snapshot too old" from trying to return pruned
-2016-08-07 [9ee1cf04a] Fix TOAST access failure in RETURNING queries.
--->
- <para>
- Allow old <acronym>MVCC</acronym> snapshots to be invalidated after a
- configurable timeout (Kevin Grittner)
- </para>
-
- <para>
- Normally, deleted tuples cannot be physically removed by
- vacuuming until the last transaction that could <quote>see</quote>
- them is gone. A transaction that stays open for a long
- time can thus cause considerable table bloat because
- space cannot be recycled. This feature allows setting
- a time-based limit, via the new configuration parameter
- <xref linkend="guc-old-snapshot-threshold"/>, on how long an
- <acronym>MVCC</acronym> snapshot is guaranteed to be valid. After that,
- dead tuples are candidates for removal. A transaction using an
- outdated snapshot will get an error if it attempts to read a page
- that potentially could have contained such data.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-11 [d4c3a156c] Remove GROUP BY columns that are functionally dependent
--->
- <para>
- Ignore <literal>GROUP BY</literal> columns that are
- functionally dependent on other columns (David Rowley)
- </para>
-
- <para>
- If a <literal>GROUP BY</literal> clause includes all columns of a
- non-deferred primary key, as well as other columns of the same
- table, those other columns are redundant and can be dropped
- from the grouping. This saves computation in many common cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-31 [f9aefcb91] Support using index-only scans with partial indexes in m
--->
- <para>
- Allow use of an <link linkend="indexes-index-only-scans">index-only
- scan</link> on a partial index when the index's <literal>WHERE</literal>
- clause references columns that are not indexed (Tomas Vondra,
- Kyotaro Horiguchi)
- </para>
-
- <para>
- For example, an index defined by <command>CREATE INDEX tidx_partial
- ON t(b) WHERE a &gt; 0</command> can now be used for an index-only scan by
- a query that specifies <literal>WHERE a &gt; 0</literal> and does not
- otherwise use <literal>a</literal>. Previously this was disallowed
- because <literal>a</literal> is not listed as an index column.
- </para>
-
- </listitem>
-
- <listitem>
-<!--
-2016-03-10 [9cd00c457] Checkpoint sorting and balancing.
--->
- <para>
- Perform checkpoint writes in sorted order (Fabien Coelho,
- Andres Freund)
- </para>
-
- <para>
- Previously, checkpoints wrote out dirty pages in whatever order
- they happen to appear in shared buffers, which usually is nearly
- random. That performs poorly, especially on rotating media.
- This change causes checkpoint-driven writes to be done in order
- by file and block number, and to be balanced across tablespaces.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-10 [428b1d6b2] Allow to trigger kernel writeback after a configurable n
-2016-04-13 [fa11a09fe] Fix assorted portability issues with using msync() for d
-2016-04-24 [8f91d87d4] Fix documentation & config inconsistencies around 428b1d
-2016-04-26 [72a98a639] Don't open formally non-existent segments in _mdfd_getse
-2016-05-04 [a71248708] Fix transient mdsync() errors of truncated relations due
-2016-02-16 [7975c5e0a] Allow the WAL writer to flush WAL at a reduced rate.
-2016-06-10 [4bc0f165c] Change default of backend_flush_after GUC to 0 (disabled
--->
- <para>
- Where feasible, trigger kernel writeback after a configurable
- number of writes, to prevent accumulation of dirty data in kernel
- disk buffers (Fabien Coelho, Andres Freund)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> writes data to the kernel's disk cache,
- from where it will be flushed to physical storage in due time.
- Many operating systems are not smart about managing this and allow
- large amounts of dirty data to accumulate before deciding to flush
- it all at once, causing long delays for new I/O requests until the
- flushing finishes.
- This change attempts to alleviate this problem by explicitly
- requesting data flushes after a configurable interval.
- </para>
-
- <para>
- On Linux, <function>sync_file_range()</function> is used for this purpose,
- and the feature is on by default on Linux because that function has
- few downsides. This flushing capability is also available on other
- platforms if they have <function>msync()</function>
- or <function>posix_fadvise()</function>, but those interfaces have some
- undesirable side-effects so the feature is disabled by default on
- non-Linux platforms.
- </para>
-
- <para>
- The new configuration parameters <xref
- linkend="guc-backend-flush-after"/>, <xref
- linkend="guc-bgwriter-flush-after"/>, <xref
- linkend="guc-checkpoint-flush-after"/>, and <xref
- linkend="guc-wal-writer-flush-after"/> control this behavior.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-04 [804163bc2] Share transition state between different aggregates when
--->
- <para>
- Improve aggregate-function performance by sharing calculations
- across multiple aggregates if they have the same arguments and
- transition functions (David Rowley)
- </para>
-
- <para>
- For example, <command>SELECT AVG(x), VARIANCE(x) FROM tab</command> can use
- a single per-row computation for both aggregates.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-26 [8a7d07018] Speed up HeapTupleSatisfiesMVCC() by replacing the XID-i
--->
- <para>
- Speed up visibility tests for recently-created tuples by checking
- the current transaction's snapshot, not <structname>pg_clog</structname>, to
- decide if the source transaction should be considered committed
- (Jeff Janes, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-15 [db76b1efb] Allow SetHintBits() to succeed if the buffer's LSN is ne
--->
- <para>
- Allow tuple hint bits to be set sooner than before (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-20 [978b2f65a] Speedup 2PC by skipping two phase state files in normal
-2016-03-10 [e0694cf9c] Reduce size of two phase file header
--->
- <para>
- Improve performance of short-lived prepared transactions (Stas
- Kelvich, Simon Riggs, Pavan Deolasee)
- </para>
-
- <para>
- Two-phase commit information is now written only to <acronym>WAL</acronym>
- during <command>PREPARE TRANSACTION</command>, and will be read back from
- <acronym>WAL</acronym> during <command>COMMIT PREPARED</command> if that happens
- soon thereafter. A separate state file is created only if the
- pending transaction does not get committed or aborted by the time
- of the next checkpoint.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-08 [25c539233] Improve performance in freeing memory contexts
--->
- <para>
- Improve performance of memory context destruction (Jan Wieck)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-26 [cc988fbb0] Improve ResourceOwners' behavior for large numbers of ow
--->
- <para>
- Improve performance of resource owners with many tracked objects
- (Aleksander Alekseev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-06 [aa2387e2f] Improve speed of timestamp/time/date output functions.
--->
- <para>
- Improve speed of the output functions for <type>timestamp</type>,
- <type>time</type>, and <type>date</type> data types (David Rowley,
- Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-10 [37c54863c] Rework wait for AccessExclusiveLocks on Hot Standby
--->
- <para>
- Avoid some unnecessary cancellations of hot-standby queries
- during replay of actions that take <literal>AccessExclusive</literal>
- locks (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [719c84c1b] Extend relations multiple blocks at a time to improve sc
--->
- <para>
- Extend relations multiple blocks at a time when there is contention
- for the relation's extension lock (Dilip Kumar)
- </para>
-
- <para>
- This improves scalability by decreasing contention.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [5364b357f] Increase maximum number of clog buffers.
--->
- <para>
- Increase the number of clog buffers for better scalability (Amit
- Kapila, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-05 [6c82d8d1f] Further reduce overhead for passing plpgsql variables to
--->
- <para>
- Speed up expression evaluation in <application>PL/pgSQL</application> by
- keeping <literal>ParamListInfo</literal> entries for simple variables
- valid at all times (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-06 [4f33621f3] Don't set SO_SNDBUF on recent Windows versions that have
--->
- <para>
- Avoid reducing the <literal>SO_SNDBUF</literal> setting below its default
- on recent Windows versions (Chen Huajun)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-17 [9b33c7e80] Disable update_process_title by default on Windows
--->
- <para>
- Disable <xref linkend="guc-update-process-title"/> by default on
- Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- The overhead of updating the process title is much larger on Windows
- than most other platforms, and it is also less useful to do it since
- most Windows users do not have tools that can display process titles.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-15 [c16dc1aca] Add simple VACUUM progress reporting.
--->
- <para>
- Add <link
- linkend="pg-stat-progress-vacuum-view"><structname>pg_stat_progress_vacuum</structname></link>
- system view to provide progress reporting for <command>VACUUM</command>
- operations (Amit Langote, Robert Haas, Vinayak Pokale, Rahila Syed)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-05 [dc7d70ea0] Expose control file data via SQL accessible functions.
--->
- <para>
- Add <link
- linkend="functions-controldata"><function>pg_control_system()</function></link>,
- <function>pg_control_checkpoint()</function>,
- <function>pg_control_recovery()</function>, and
- <function>pg_control_init()</function> functions to expose fields of
- <filename>pg_control</filename> to <acronym>SQL</acronym> (Joe Conway, Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-17 [a5c43b886] Add new system view, pg_config
--->
- <para>
- Add <link linkend="view-pg-config"><structname>pg_config</structname></link>
- system view (Joe Conway)
- </para>
-
- <para>
- This view exposes the same information available from
- the <application>pg_config</application> command-line utility,
- namely assorted compile-time configuration information for
- <productname>PostgreSQL</productname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-10 [3f811c2d6] Add confirmed_flush column to pg_replication_slots.
--->
- <para>
- Add a <structfield>confirmed_flush_lsn</structfield> column to the <link
- linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname></link>
- system view (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-07 [b1a9bad9e] pgstat: add WAL receiver status view & SRF
-2016-06-29 [9ed551e0a] Add conninfo to pg_stat_wal_receiver
-2016-07-07 [60d50769b] Rename pg_stat_wal_receiver.conn_info to conninfo.
--->
- <para>
- Add <link
- linkend="pg-stat-wal-receiver-view"><structname>pg_stat_wal_receiver</structname></link>
- system view to provide information about the state of a hot-standby
- server's <acronym>WAL</acronym> receiver process (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-22 [52f5d578d] Create a function to reliably identify which sessions bl
--->
- <para>
- Add <link
- linkend="functions-info-session-table"><function>pg_blocking_pids()</function></link>
- function to reliably identify which sessions block which others
- (Tom Lane)
- </para>
-
- <para>
- This function returns an array of the process IDs of any
- sessions that are blocking the session with the given process ID.
- Historically users have obtained such information using a self-join
- on the <structname>pg_locks</structname> view. However, it is unreasonably
- tedious to do it that way with any modicum of correctness, and
- the addition of parallel queries has made the old approach entirely
- impractical, since locks might be held or awaited by child worker
- processes rather than the session's main process.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-12 [e63bb4549] Add new user fn pg_current_xlog_flush_location()
--->
- <para>
- Add function <link
- linkend="functions-admin-backup-table"><function>pg_current_xlog_flush_location()</function></link>
- to expose the current transaction log flush location (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-17 [a04bb65f7] Add new function pg_notification_queue_usage.
--->
- <para>
- Add function <link
- linkend="functions-info-session-table"><function>pg_notification_queue_usage()</function></link>
- to report how full the <command>NOTIFY</command> queue is (Brendan Jurd)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-25 [7b5ef8f2d] Limit the verbosity of memory context statistics dumps.
--->
- <para>
- Limit the verbosity of memory context statistics dumps (Tom Lane)
- </para>
-
- <para>
- The memory usage dump that is output to the postmaster log during an
- out-of-memory failure now summarizes statistics when there are a
- large number of memory contexts, rather than possibly generating
- a very large report. There is also a <quote>grand total</quote>
- summary line now.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><acronym>Authentication</acronym></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-08 [34c33a1f0] Add BSD authentication method.
--->
- <para>
- Add a <link linkend="auth-bsd"><acronym>BSD</acronym> authentication
- method</link> to allow use of
- the <systemitem class="osname">BSD</systemitem> Authentication service for
- <productname>PostgreSQL</productname> client authentication (Marisa Emerson)
- </para>
-
- <para>
- BSD Authentication is currently only available on <systemitem
- class="osname">OpenBSD</systemitem>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [2f1d2b7a7] Set PAM_RHOST item for PAM authentication
--->
- <para>
- When using <link linkend="auth-pam"><acronym>PAM</acronym>
- authentication</link>, provide the client IP address or host name
- to <acronym>PAM</acronym> modules via the <literal>PAM_RHOST</literal> item
- (Grzegorz Sampolski)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-07 [5e0b5dcab] Provide more detail in postmaster log for password authe
--->
- <para>
- Provide detail in the postmaster log for more types of password
- authentication failure (Tom Lane)
- </para>
-
- <para>
- All ordinarily-reachable password authentication failure cases
- should now provide specific <literal>DETAIL</literal> fields in the log.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-06 [643beffe8] Support RADIUS passwords up to 128 characters
--->
- <para>
- Support <link linkend="auth-radius"><acronym>RADIUS</acronym> passwords</link>
- up to 128 characters long (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [35e2e357c] Add authentication parameters compat_realm and upn_usena
--->
- <para>
- Add new <link linkend="sspi-auth"><acronym>SSPI</acronym>
- authentication</link> parameters
- <varname>compat_realm</varname> and <varname>upn_username</varname> to control
- whether <productname>NetBIOS</productname> or <productname>Kerberos</productname>
- realm names and user names are used during <acronym>SSPI</acronym>
- authentication (Christian Ullrich)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Configuration</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-16 [c6dda1f48] Add idle_in_transaction_session_timeout.
--->
- <para>
- Allow sessions to be terminated automatically if they are in
- idle-in-transaction state for too long (Vik Fearing)
- </para>
-
- <para>
- This behavior is controlled by the new configuration parameter
- <xref linkend="guc-idle-in-transaction-session-timeout"/>. It can
- be useful to prevent forgotten transactions from holding locks
- or preventing vacuum cleanup for too long.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-11 [f2dba881a] Raise max setting of checkpoint_timeout to 1d
--->
- <para>
- Raise the maximum allowed value
- of <xref linkend="guc-checkpoint-timeout"/> to 24 hours (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-08 [1aba62ec6] Allow per-tablespace effective_io_concurrency
--->
- <para>
- Allow <varname>effective_io_concurrency</varname> to be set per-tablespace
- to support cases where different tablespaces have different I/O
- characteristics (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-07 [f828654e1] Add log_line_prefix option 'n' for Unix epoch.
-2015-09-07 [b1e1862a1] Coordinate log_line_prefix options 'm' and 'n' to share
--->
- <para>
- Add <xref linkend="guc-log-line-prefix"/> option <literal>%n</literal> to
- print the current time in Unix epoch form, with milliseconds (Tomas
- Vondra, Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-16 [f4c454e9b] Add syslog_sequence_numbers parameter
-2016-03-16 [fc201dfd9] Add syslog_split_messages parameter
--->
- <para>
- Add <xref linkend="guc-syslog-sequence-numbers"/> and <xref
- linkend="guc-syslog-split-messages"/> configuration parameters
- to provide more control over the message format when logging to
- <systemitem>syslog</systemitem> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-18 [b555ed810] Merge wal_level "archive" and "hot_standby" into new nam
--->
- <para>
- Merge the <literal>archive</literal> and <literal>hot_standby</literal> values
- of the <xref linkend="guc-wal-level"/> configuration parameter
- into a single new value <literal>replica</literal> (Peter Eisentraut)
- </para>
-
- <para>
- Making a distinction between these settings is no longer useful,
- and merging them is a step towards a planned future simplification
- of replication setup. The old names are still accepted but are
- converted to <literal>replica</literal> internally.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-02 [7d17e683f] Add support for systemd service notifications
--->
- <para>
- Add configure option <option>--with-systemd</option> to enable
- calling <function>sd_notify()</function> at server start and stop (Peter
- Eisentraut)
- </para>
-
- <para>
- This allows the use of <application>systemd</application> service units of
- type <literal>notify</literal>, which greatly simplifies the management
- of <productname>PostgreSQL</productname> under <application>systemd</application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-19 [9a83564c5] Allow SSL server key file to have group read access if o
--->
- <para>
- Allow the server's <acronym>SSL</acronym> key file to have group read
- access if it is owned by <literal>root</literal> (Christoph Berg)
- </para>
-
- <para>
- Formerly, we insisted the key file be owned by the
- user running the <productname>PostgreSQL</productname> server, but
- that is inconvenient on some systems (such as <systemitem
- class="osname">Debian</systemitem>) that are configured to manage
- certificates centrally. Therefore, allow the case where the key
- file is owned by <literal>root</literal> and has group read access.
- It is up to the operating system administrator to ensure that
- the group does not include any untrusted users.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Reliability</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-11-12 [ac1d7945f] Make idle backends exit if the postmaster dies.
--->
- <para>
- Force backends to exit if the postmaster dies (Rajeev Rastogi,
- Robert Haas)
- </para>
-
- <para>
- Under normal circumstances the postmaster should always outlive
- its child processes. If for some reason the postmaster dies,
- force backend sessions to exit with an error. Formerly, existing
- backends would continue to run until their clients disconnect,
- but that is unsafe and inefficient. It also prevents a new
- postmaster from being started until the last old backend has
- exited. Backends will detect postmaster death when waiting for
- client I/O, so the exit will not be instantaneous, but it should
- happen no later than the end of the current query.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-07 [fcff8a575] Detect SSI conflicts before reporting constraint violati
--->
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
-<!--
-XXX this is pending backpatch, may need to remove
-2016-04-26 [c6ff84b06] Emit invalidations to standby for transactions without x
--->
- <para>
- Ensure that invalidation messages are recorded in <acronym>WAL</acronym>
- even when issued by a transaction that has no <acronym>XID</acronym>
- assigned (Andres Freund)
- </para>
-
- <para>
- This fixes some corner cases in which transactions on standby
- servers failed to notice changes, such as new indexes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-XXX this is pending backpatch, may need to remove
-2016-04-28 [e2c79e14d] Prevent multiple cleanup process for pending list in GIN
--->
- <para>
- Prevent multiple processes from trying to clean a <acronym>GIN</acronym>
- index's pending list concurrently (Teodor Sigaev, Jeff Janes)
- </para>
-
- <para>
- This had been intentionally allowed, but it causes race conditions
- that can result in vacuum missing index entries it needs to delete.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-06 [989be0810] Support multiple synchronous standby servers.
-2016-04-27 [4c804fbdf] Clean up parsing of synchronous_standby_names GUC variab
-2016-04-30 [17d5db352] Remove warning about num_sync being too large in synchro
--->
- <para>
- Allow synchronous replication to support multiple simultaneous
- synchronous standby servers, not just one (Masahiko Sawada,
- Beena Emerson, Michael Paquier, Fujii Masao, Kyotaro Horiguchi)
- </para>
-
- <para>
- The number of standby servers that must acknowledge a commit
- before it is considered complete is now configurable as part of
- the <xref linkend="guc-synchronous-standby-names"/> parameter.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-29 [314cbfc5d] Add new replication mode synchronous_commit = 'remote_ap
--->
- <para>
- Add new setting <literal>remote_apply</literal> for configuration
- parameter <xref linkend="guc-synchronous-commit"/> (Thomas Munro)
- </para>
-
- <para>
- In this mode, the master waits for the transaction to be
- <emphasis>applied</emphasis> on the standby server, not just written
- to disk. That means that you can count on a transaction started
- on the standby to see all commits previously acknowledged by
- the master.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-11 [6fcd88511] Allow pg_create_physical_replication_slot() to reserve W
-2015-09-06 [c314ead5b] Add ability to reserve WAL upon slot creation via replic
--->
- <para>
- Add a feature to the replication
- protocol, and a corresponding option to <link
- linkend="functions-replication-table"><function>pg_create_physical_replication_slot()</function></link>,
- to allow reserving <acronym>WAL</acronym> immediately when creating a
- replication slot (Gurjeet Singh, Michael Paquier)
- </para>
-
- <para>
- This allows the creation of a replication slot to guarantee
- that all the <acronym>WAL</acronym> needed for a base backup will be
- available.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-28 [0dc848b03] pg_basebackup: Add -slot option
--->
- <para>
- Add a <option>--slot</option> option to
- <link linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- (Peter Eisentraut)
- </para>
-
- <para>
- This lets <application>pg_basebackup</application> use a replication
- slot defined for <acronym>WAL</acronym> streaming. After the base
- backup completes, selecting the same slot for regular streaming
- replication allows seamless startup of the new standby server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-05 [711768546] Implement backup API functions for non-exclusive backups
-2016-07-11 [87d84d67b] Fix start WAL filename for concurrent backups from stand
--->
- <para>
- Extend <link
- linkend="functions-admin-backup-table"><function>pg_start_backup()</function></link>
- and <function>pg_stop_backup()</function> to support non-exclusive backups
- (Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-07-26 [d8411a6c8] Allow functions that return sets of tuples to return sim
--->
- <para>
- Allow functions that return sets of tuples to return simple
- <literal>NULL</literal>s (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- In the context of <literal>SELECT FROM function(...)</literal>, a function
- that returned a set of composite values was previously not allowed
- to return a plain <literal>NULL</literal> value as part of the set.
- Now that is allowed and interpreted as a row of <literal>NULL</literal>s.
- This avoids corner-case errors with, for example, unnesting an
- array of composite values.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-03 [a3c7a993d] Make INSERT-from-multiple-VALUES-rows handle targetlist
--->
- <para>
- Fully support array subscripts and field selections in the
- target column list of an <command>INSERT</command> with multiple
- <literal>VALUES</literal> rows (Tom Lane)
- </para>
-
- <para>
- Previously, such cases failed if the same target column was
- mentioned more than once, e.g., <literal>INSERT INTO tab (x[1],
- x[2]) VALUES (...)</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-11 [9118d03a8] When appropriate, postpone SELECT output expressions til
-2016-03-25 [d543170f2] Don't split up SRFs when choosing to postpone SELECT out
--->
- <para>
- When appropriate, postpone evaluation of <command>SELECT</command>
- output expressions until after an <literal>ORDER BY</literal> sort
- (Konstantin Knizhnik)
- </para>
-
- <para>
- This change ensures that volatile or expensive functions in the
- output list are executed in the order suggested by <literal>ORDER
- BY</literal>, and that they are not evaluated more times than required
- when there is a <literal>LIMIT</literal> clause. Previously, these
- properties held if the ordering was performed by an index scan or
- pre-merge-join sort, but not if it was performed by a top-level
- sort.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-12 [23a27b039] Widen query numbers-of-tuples-processed counters to uint
-2016-03-14 [74a379b98] Use repalloc_huge() to enlarge a SPITupleTable's tuple p
--->
- <para>
- Widen counters recording the number of tuples processed to 64 bits
- (Andreas Scherbaum)
- </para>
-
- <para>
- This change allows command tags, e.g. <command>SELECT</command>, to
- correctly report tuple counts larger than 4 billion. This also
- applies to PL/pgSQL's <command>GET DIAGNOSTICS ... ROW_COUNT</command>
- command.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-28 [8d32717b6] Avoid doing encoding conversions by double-conversion vi
--->
- <para>
- Avoid doing encoding conversions by converting through the
- <literal>MULE_INTERNAL</literal> encoding (Tom Lane)
- </para>
-
- <para>
- Previously, many conversions for Cyrillic and Central
- European single-byte encodings were done by converting to a
- related <literal>MULE_INTERNAL</literal> coding scheme and then to the
- destination encoding. Aside from being inefficient, this meant
- that when the conversion encountered an untranslatable character,
- the error message would confusingly complain about failure to
- convert to or from <literal>MULE_INTERNAL</literal>, rather than the
- user-visible encoding.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-28 [fbe5a3fb7] Only try to push down foreign joins if the user mapping
-2016-07-15 [45639a052] Avoid invalidating all foreign-join cached plans when us
--->
- <para>
- Consider performing joins of foreign tables remotely only when the
- tables will be accessed under the same role ID (Shigeru Hanada,
- Ashutosh Bapat, Etsuro Fujita)
- </para>
-
- <para>
- Previously, the foreign join pushdown infrastructure left the
- question of security entirely up to individual foreign data
- wrappers, but that made it too easy for an <acronym>FDW</acronym> to
- inadvertently create subtle security holes. So, make it the core
- code's job to determine which role ID will access each table,
- and do not attempt join pushdown unless the role is the same for
- all relevant relations.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-11-27 [92e38182d] COPY (INSERT/UPDATE/DELETE .. RETURNING ..)
--->
- <para>
- Allow <command>COPY</command> to copy the output of an
- <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- ... <literal>RETURNING</literal> query (Marko Tiikkaja)
- </para>
-
- <para>
- Previously, an intermediate <acronym>CTE</acronym> had to be written to
- get this result.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-05 [f2fcad27d] Support ALTER THING .. DEPENDS ON EXTENSION
--->
- <para>
- Introduce <command>ALTER <replaceable>object</replaceable> DEPENDS ON
- EXTENSION</command> (Abhijit Menon-Sen)
- </para>
-
- <para>
- This command allows a database object to be marked as depending
- on an extension, so that it will be dropped automatically if
- the extension is dropped (without needing <literal>CASCADE</literal>).
- However, the object is not part of the extension, and thus will
- be dumped separately by <application>pg_dump</application>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-19 [bc4996e61] Make ALTER .. SET SCHEMA do nothing, instead of throwing
--->
- <para>
- Make <command>ALTER <replaceable>object</replaceable> SET SCHEMA</command> do nothing
- when the object is already in the requested schema, rather than
- throwing an error as it historically has for most object types
- (Marti Raudsepp)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-14 [321eed5f0] Add ALTER OPERATOR command, for changing selectivity est
-2015-12-31 [0dab5ef39] Fix ALTER OPERATOR to update dependencies properly.
--->
- <para>
- Add options to <command>ALTER OPERATOR</command> to allow changing
- the selectivity functions associated with an existing operator
- (Yury Zhuravlev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-29 [2cd40adb8] Add IF NOT EXISTS processing to ALTER TABLE ADD COLUMN
--->
- <para>
- Add an <option>IF NOT EXISTS</option> option to <command>ALTER TABLE
- ADD COLUMN</command> (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-14 [47167b790] Reduce lock levels for ALTER TABLE SET autovacuum storag
-2016-03-10 [fcb4bfddb] Reduce lock level for altering fillfactor
--->
- <para>
- Reduce the lock strength needed by <command>ALTER TABLE</command>
- when setting fillfactor and autovacuum-related relation options
- (Fabr&iacute;zio de Royes Mello, Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-23 [473b93287] Support CREATE ACCESS METHOD
--->
- <para>
- Introduce <link linkend="sql-create-access-method"><command>CREATE
- ACCESS METHOD</command></link> to allow extensions to create index access
- methods (Alexander Korotkov, Petr Jel&iacute;nek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-03 [b67aaf21e] Add CASCADE support for CREATE EXTENSION.
--->
- <para>
- Add a <literal>CASCADE</literal> option to <command>CREATE
- EXTENSION</command> to automatically create any extensions the
- requested one depends on (Petr Jel&iacute;nek)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-05 [b943f502b] Have CREATE TABLE LIKE add OID column if any LIKEd table
--->
- <para>
- Make <command>CREATE TABLE ... LIKE</command> include an <type>OID</type>
- column if any source table has one (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-16 [f27a6b15e] Mark CHECK constraints declared NOT VALID valid if creat
--->
- <para>
- If a <literal>CHECK</literal> constraint is declared <literal>NOT VALID</literal>
- in a table creation command, automatically mark it as valid
- (Amit Langote, Amul Sul)
- </para>
-
- <para>
- This is safe because the table has no existing rows. This matches
- the longstanding behavior of <literal>FOREIGN KEY</literal> constraints.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-25 [c94959d41] Fix DROP OPERATOR to reset oprcom/oprnegate links to the
--->
- <para>
- Fix <command>DROP OPERATOR</command> to clear
- <structname>pg_operator</structname>.<structfield>oprcom</structfield> and
- <structname>pg_operator</structname>.<structfield>oprnegate</structfield> links to
- the dropped operator (Roma Sokolov)
- </para>
-
- <para>
- Formerly such links were left as-is, which could pose a problem
- in the somewhat unlikely event that the dropped operator's
- <type>OID</type> was reused for another operator.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-07-11 [4d042999f] Print a given subplan only once in EXPLAIN.
--->
- <para>
- Do not show the same subplan twice in <command>EXPLAIN</command> output
- (Tom Lane)
- </para>
-
- <para>
- In certain cases, typically involving SubPlan nodes in index
- conditions, <command>EXPLAIN</command> would print data for the same
- subplan twice.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-16 [c34df8a00] Disallow creation of indexes on system columns (except f
--->
- <para>
- Disallow creation of indexes on system columns, except for
- <type>OID</type> columns (David Rowley)
- </para>
-
- <para>
- Such indexes were never considered supported, and would very
- possibly misbehave since the system might change the system-column
- fields of a tuple without updating indexes. However, previously
- there were no error checks to prevent them from being created.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Permissions Management</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-06 [1574783b4] Use GRANT system to manage access to sensitive functions
--->
- <para>
- Use the privilege system to manage access to sensitive functions
- (Stephen Frost)
- </para>
-
- <para>
- Formerly, many security-sensitive functions contained hard-wired
- checks that would throw an error if they were called by a
- non-superuser. This forced the use of superuser roles for
- some relatively pedestrian tasks. The hard-wired error checks
- are now gone in favor of making <application>initdb</application> revoke the
- default public <literal>EXECUTE</literal> privilege on these functions.
- This allows installations to choose to grant usage of such
- functions to trusted roles that do not need all superuser
- privileges.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [7a542700d] Create default roles
--->
- <para>
- Create some <link linkend="default-roles">built-in roles</link>
- that can be used to grant access to what were previously
- superuser-only functions (Stephen Frost)
- </para>
-
- <para>
- Currently the only such role is <literal>pg_signal_backend</literal>,
- but more are expected to be added in future.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-07 [bb140506d] Phrase full text search.
-2016-06-27 [028350f61] Make exact distance match for FTS phrase operator
-2016-06-27 [3dbbd0f02] Do not fallback to AND for FTS phrase operator.
-2016-06-27 [6734a1cac] Change predecence of phrase operator.
--->
- <para>
- Improve <link linkend="textsearch">full-text search</link> to support
- searching for phrases, that is, lexemes appearing adjacent to each
- other in a specific order, or with a specified distance between
- them (Teodor Sigaev, Oleg Bartunov, Dmitry Ivanov)
- </para>
-
- <para>
- A phrase-search query can be specified in <type>tsquery</type>
- input using the new operators <literal>&lt;-&gt;</literal> and
- <literal>&lt;<replaceable>N</replaceable>&gt;</literal>. The former means
- that the lexemes before and after it must appear adjacent to
- each other in that order. The latter means they must be exactly
- <replaceable>N</replaceable> lexemes apart.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-22 [6efbded6e] Allow omitting one or both boundaries in an array slice
--->
- <para>
- Allow omitting one or both boundaries in an array slice specifier,
- e.g. <literal>array_col[3:]</literal> (Yury Zhuravlev)
- </para>
-
- <para>
- Omitted boundaries are taken as the upper or lower limit of the
- corresponding array subscript. This allows simpler specification
- for many common use-cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-16 [a70e13a39] Be more careful about out-of-range dates and timestamps.
--->
- <para>
- Be more careful about out-of-range dates and timestamps (Vitaly
- Burovoy)
- </para>
-
- <para>
- This change prevents unexpected out-of-range errors for
- <type>timestamp with time zone</type> values very close to the
- implementation limits. Previously, the <quote>same</quote> value might
- be accepted or not depending on the <varname>timezone</varname> setting,
- meaning that a dump and reload could fail on a value that had been
- accepted when presented. Now the limits are enforced according
- to the equivalent <acronym>UTC</acronym> time, not local time, so as to
- be independent of <varname>timezone</varname>.
- </para>
-
- <para>
- Also, <productname>PostgreSQL</productname> is now more careful to detect
- overflow in operations that compute new date or timestamp values,
- such as <type>date</type> <literal>+</literal> <type>integer</type>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-30 [50861cd68] Improve portability of I/O behavior for the geometric ty
--->
- <para>
- For geometric data types, make sure <literal>infinity</literal> and
- <literal>NaN</literal> component values are treated consistently during
- input and output (Tom Lane)
- </para>
-
- <para>
- Such values will now always print the same as they would in
- a simple <type>float8</type> column, and be accepted the same way
- on input. Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-04 [d78a7d9c7] Improve support of Hunspell in ispell dictionary.
-2016-03-11 [8829af47e] Fix merge affixes for numeric ones
-2016-03-17 [f4ceed6ce] Improve support of Hunspell
--->
- <para>
- Upgrade
- the <link linkend="textsearch-ispell-dictionary"><literal>ispell</literal></link>
- dictionary type to handle modern <productname>Hunspell</productname> files and
- support more languages (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-30 [12c9a0400] Implement lookbehind constraints in our regular-expressi
--->
- <para>
- Implement look-behind constraints
- in <link linkend="functions-posix-regexp">regular expressions</link>
- (Tom Lane)
- </para>
-
- <para>
- A look-behind constraint is like a lookahead constraint in that it
- consumes no text; but it checks for existence (or nonexistence)
- of a match ending at the current point in the string, rather
- than one starting at the current point. Similar features exist
- in many other regular-expression engines.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-16 [b44d92b67] Sync regex code with Tcl 8.6.4.
--->
- <para>
- In regular expressions, if an apparent three-digit octal escape
- <literal>\</literal><replaceable>nnn</replaceable> would exceed 377 (255 decimal),
- assume it is a two-digit octal escape instead (Tom Lane)
- </para>
-
- <para>
- This makes the behavior match current <application>Tcl</application> releases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-07 [c5e86ea93] Add "xid <> xid" and "xid <> int4" operators.
--->
- <para>
- Add transaction ID operators <type>xid</type> <literal>&lt;&gt;</literal>
- <type>xid</type> and <type>xid</type> <literal>&lt;&gt;</literal> <type>int4</type>,
- for consistency with the corresponding equality operators
- (Michael Paquier)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-04-06 [0b62fd036] Add jsonb_insert
--->
- <para>
- Add <link
- linkend="functions-json-processing-table"><function>jsonb_insert()</function></link>
- function to insert a new element into a <type>jsonb</type> array,
- or a not-previously-existing key into a <type>jsonb</type> object
- (Dmitry Dolgov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-14 [7d9a4737c] Improve type numeric's calculations for ln(), log(), exp
-2016-05-05 [18a02ad2a] Fix corner-case loss of precision in numeric pow() calcu
--->
- <para>
- Improve the accuracy of the <function>ln()</function>, <function>log()</function>,
- <function>exp()</function>, and <function>pow()</function> functions for type
- <type>numeric</type> (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-05 [abb173392] Add scale(numeric)
--->
- <para>
- Add a <link
- linkend="functions-math-func-table"><function>scale(numeric)</function></link>
- function to extract the display scale of a <type>numeric</type> value
- (Marko Tiikkaja)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-22 [e1bd684a3] Add trigonometric functions that work in degrees.
--->
- <para>
- Add trigonometric functions that work in degrees (Dean Rasheed)
- </para>
-
- <para>
- For example, <link
- linkend="functions-math-trig-table"><function>sind()</function></link>
- measures its argument in degrees, whereas <function>sin()</function>
- measures in radians. These functions go to some lengths to
- deliver exact results for values where an exact result can be
- expected, for instance <literal>sind(30) = 0.5</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-22 [fd5200c3d] Improve cross-platform consistency of Inf/NaN handling i
--->
- <para>
- Ensure that trigonometric functions handle <literal>infinity</literal>
- and <literal>NaN</literal> inputs per the <acronym>POSIX</acronym> standard
- (Dean Rasheed)
- </para>
-
- <para>
- The <acronym>POSIX</acronym> standard says that these functions should
- return <literal>NaN</literal> for <literal>NaN</literal> input, and should throw
- an error for out-of-range inputs including <literal>infinity</literal>.
- Previously our behavior varied across platforms.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-29 [e511d878f] Allow to_timestamp(float8) to convert float infinity to
--->
- <para>
- Make <link
- linkend="functions-datetime-table"><function>to_timestamp(float8)</function></link>
- convert float <literal>infinity</literal> to
- timestamp <literal>infinity</literal> (Vitaly Burovoy)
- </para>
-
- <para>
- Formerly it just failed on an infinite input.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-11 [6943a946c] Tsvector editing functions
-2016-05-05 [0b9a23443] Rename tsvector delete() to ts_delete(), and filter() to
--->
- <para>
- Add new functions for <type>tsvector</type> data (Stas Kelvich)
- </para>
-
- <para>
- The new functions are <link
- linkend="textsearch-functions-table"><function>ts_delete()</function></link>,
- <function>ts_filter()</function>, <function>unnest()</function>,
- <function>tsvector_to_array()</function>, <function>array_to_tsvector()</function>,
- and a variant of <function>setweight()</function> that sets the weight
- only for specified lexeme(s).
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-17 [9acb9007d] Fix oversight in tsearch type check
--->
- <para>
- Allow <link linkend="textsearch-statistics"><function>ts_stat()</function></link>
- and <link linkend="textsearch-update-triggers"><function>tsvector_update_trigger()</function></link>
- to operate on values that are of types binary-compatible with the
- expected argument type, not just exactly that type; for example
- allow <type>citext</type> where <type>text</type> is expected (Teodor
- Sigaev)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-04 [6819514fc] Add num_nulls() and num_nonnulls() to count NULL argumen
--->
- <para>
- Add variadic functions <link
- linkend="functions-comparison-func-table"><function>num_nulls()</function></link>
- and <function>num_nonnulls()</function> that count the number of their
- arguments that are null or non-null (Marko Tiikkaja)
- </para>
-
- <para>
- An example usage is <literal>CHECK(num_nonnulls(a,b,c) = 1)</literal>
- which asserts that exactly one of a,b,c is not <literal>NULL</literal>.
- These functions can also be used to count the number of null or
- nonnull elements in an array.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-18 [3187d6de0] Introduce parse_ident()
--->
- <para>
- Add function <link
- linkend="functions-string-other"><function>parse_ident()</function></link>
- to split a qualified, possibly quoted <acronym>SQL</acronym> identifier
- into its parts (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-05 [28b3a3d41] to_number(): allow 'V' to divide by 10^(the number of d
--->
- <para>
- In <link
- linkend="functions-formatting-table"><function>to_number()</function></link>,
- interpret a <literal>V</literal> format code as dividing by 10 to the
- power of the number of digits following <literal>V</literal> (Bruce
- Momjian)
- </para>
-
- <para>
- This makes it operate in an inverse fashion to
- <function>to_char()</function>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-05 [ea0d494da] Make the to_reg*() functions accept text not cstring.
--->
- <para>
- Make the <link
- linkend="functions-info-catalog-table"><function>to_reg*()</function></link>
- functions accept type <type>text</type> not <type>cstring</type>
- (Petr Korobeinikov)
- </para>
-
- <para>
- This avoids the need to write an explicit cast in most cases
- where the argument is not a simple literal constant.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-20 [53874c522] Add pg_size_bytes() to parse human-readable size strings
--->
- <para>
- Add <link
- linkend="functions-admin-dbsize"><function>pg_size_bytes()</function></link>
- function to convert human-readable size strings to numbers (Pavel
- Stehule, Vitaly Burovoy, Dean Rasheed)
- </para>
-
- <para>
- This function converts strings like those produced by
- <function>pg_size_pretty()</function> into bytes. An example
- usage is <literal>SELECT oid::regclass FROM pg_class WHERE
- pg_total_relation_size(oid) &gt; pg_size_bytes('10 GB')</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-06 [8a1fab36a] pg_size_pretty: Format negative values similar to positi
--->
- <para>
- In <link
- linkend="functions-admin-dbsize"><function>pg_size_pretty()</function></link>,
- format negative numbers similarly to positive ones (Adrian
- Vondendriesch)
- </para>
-
- <para>
- Previously, negative numbers were never abbreviated, just printed
- in bytes.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-02 [10fb48d66] Add an optional missing_ok argument to SQL function curr
--->
- <para>
- Add an optional <replaceable>missing_ok</replaceable> argument to the <link
- linkend="functions-admin-set-table"><function>current_setting()</function></link>
- function (David Christensen)
- </para>
-
- <para>
- This allows avoiding an error for an unrecognized parameter
- name, instead returning a <literal>NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-07-26 [976b24fb4] Change various deparsing functions to return NULL for in
-2016-07-29 [3153b1a52] Eliminate a few more user-visible "cache lookup failed"
-2016-08-07 [8a8c6b538] Fix crash when pg_get_viewdef_name_ext() is passed a non
--->
- <para>
- Change various catalog-inspection functions to return
- <literal>NULL</literal> for invalid input (Michael Paquier)
- </para>
-
- <para>
- <link
- linkend="functions-info-catalog-table"><function>pg_get_viewdef()</function></link>
- now returns <literal>NULL</literal> if given an invalid view <type>OID</type>,
- and several similar functions likewise return <literal>NULL</literal> for
- bad input. Previously, such cases usually led to <quote>cache
- lookup failed</quote> errors, which are not meant to occur in
- user-facing cases.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-02 [dd5eb805d] Remove unused arguments from pg_replication_origin_xact_
--->
- <para>
- Fix <link
- linkend="pg-replication-origin-xact-reset"><function>pg_replication_origin_xact_reset()</function></link>
- to not have any arguments (Fujii Masao)
- </para>
-
- <para>
- The documentation said that it has no arguments, and the C code did
- not expect any arguments, but the entry in <structname>pg_proc</structname>
- mistakenly specified two arguments.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-08-21 [fcdfce682] Detect mismatched CONTINUE and EXIT statements at plpgsq
--->
- <para>
- In <link linkend="plpgsql">PL/pgSQL</link>, detect mismatched
- <command>CONTINUE</command> and <command>EXIT</command> statements while
- compiling a function, rather than at execution time
- (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [5c3c3cd0a] Enhanced custom error in PLPythonu
-2016-06-11 [020140d84] PL/Python: Rename new keyword arguments of plpy.error()
-2016-07-02 [3a4a33ad4] PL/Python: Report argument parsing errors using exceptio
--->
- <para>
- Extend <application>PL/Python</application>'s error-reporting and
- message-reporting functions to allow specifying additional message
- fields besides the primary error message (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-05 [1d2fe56e4] Fix PL/Python for recursion and interleaved set-returnin
--->
- <para>
- Allow PL/Python functions to call themselves recursively
- via <application>SPI</application>, and fix the behavior when multiple
- set-returning PL/Python functions are called within one query
- (Alexey Grishchenko, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-05 [8c75ad436] Fix memory leaks in PL/Python.
--->
- <para>
- Fix session-lifespan memory leaks in PL/Python (Heikki Linnakangas,
- Haribabu Kommi, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-02 [287822068] Convert PL/Tcl to use Tcl's "object" interfaces.
-2016-03-02 [e2609323e] Make PL/Tcl require Tcl 8.4 or later.
--->
- <para>
- Modernize <application>PL/Tcl</application> to use Tcl's <quote>object</quote>
- <acronym>API</acronym>s instead of simple strings (Jim Nasby, Karl
- Lehenbauer)
- </para>
-
- <para>
- This can improve performance substantially in some cases.
- Note that <application>PL/Tcl</application> now requires Tcl 8.4 or later.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-25 [fb8d2a7f5] In PL/Tcl, make database errors return additional info i
-2016-03-25 [cd37bb785] Improve PL/Tcl errorCode facility by providing decoded n
--->
- <para>
- In <application>PL/Tcl</application>, make database-reported errors return
- additional information in Tcl's <varname>errorCode</varname> global
- variable (Jim Nasby, Tom Lane)
- </para>
-
- <para>
- This feature follows the Tcl convention for returning auxiliary
- data about an error.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-02 [c8c7c93de] Fix PL/Tcl's encoding conversion logic.
--->
- <para>
- Fix <application>PL/Tcl</application> to perform encoding conversion between
- the database encoding and <literal>UTF-8</literal>, which is what Tcl
- expects (Tom Lane)
- </para>
-
- <para>
- Previously, strings were passed through without conversion,
- leading to misbehavior with non-<literal>ASCII</literal> characters when
- the database encoding was not <literal>UTF-8</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Interfaces</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-08-26 [e796d0aba] Add a nonlocalized version of the severity field to clie
--->
- <para>
- Add a nonlocalized version of
- the <link linkend="protocol-error-fields">severity field</link> in
- error and notice messages (Tom Lane)
- </para>
-
- <para>
- This change allows client code to determine severity of an error or
- notice without having to worry about localized variants of the
- severity strings.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-05 [0426f349e] Rearrange the handling of error context reports.
-This commit is also listed under psql and PL/pgSQL
--->
- <para>
- Introduce a feature in <application>libpq</application> whereby the
- <literal>CONTEXT</literal> field of messages can be suppressed, either
- always or only for non-error messages (Pavel Stehule)
- </para>
-
- <para>
- The default behavior of <link
- linkend="libpq-pqerrormessage"><function>PQerrorMessage()</function></link>
- is now to print <literal>CONTEXT</literal>
- only for errors. The new function <link
- linkend="libpq-pqseterrorcontextvisibility"><function>PQsetErrorContextVisibility()</function></link>
- can be used to adjust this.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-03 [e3161b231] Add libpq support for recreating an error message with d
--->
- <para>
- Add support in <application>libpq</application> for regenerating an error
- message with a different verbosity level (Alex Shulgin)
- </para>
-
- <para>
- This is done with the new function <link
- linkend="libpq-pqresultverboseerrormessage"><function>PQresultVerboseErrorMessage()</function></link>.
- This supports <application>psql</application>'s new <literal>\errverbose</literal>
- feature, and may be useful for other clients as well.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-27 [40cb21f70] Improve PQhost() to return useful data for default Unix-
--->
- <para>
- Improve <application>libpq</application>'s <link
- linkend="libpq-pqhost"><function>PQhost()</function></link> function to return
- useful data for default Unix-socket connections (Tom Lane)
- </para>
-
- <para>
- Previously it would return <literal>NULL</literal> if no explicit host
- specification had been given; now it returns the default socket
- directory path.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-16 [fc1ae7d2e] Change ecpg lexer to accept comments with line breaks in
--->
- <para>
- Fix <application>ecpg</application>'s lexer to handle line breaks within
- comments starting on preprocessor directive lines (Michael Meskes)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-09-14 [d02426029] Check existency of table/schema for -t/-n option (pg_dum
--->
- <para>
- Add a <option>--strict-names</option> option
- to <link linkend="app-pgdump"><application>pg_dump</application></link>
- and <link linkend="app-pgrestore"><application>pg_restore</application></link>
- (Pavel Stehule)
- </para>
-
- <para>
- This option causes the program to complain if there is no match
- for a <option>-t</option> or <option>-n</option> option, rather
- than silently doing nothing.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-06 [a9f0e8e5a] In pg_dump, use a bitmap to represent what to include
-2016-04-06 [d217b2c36] In pg_dump, split "dump" into "dump" and "dump_contains"
-2016-04-06 [23f34fa4b] In pg_dump, include pg_catalog and extension ACLs, if ch
-2016-05-06 [5d589993c] pg_dump performance and other fixes
-2016-05-06 [e1b120a8c] Only issue LOCK TABLE commands when necessary
--->
- <para>
- In <application>pg_dump</application>, dump locally-made changes of privilege
- assignments for system objects (Stephen Frost)
- </para>
-
- <para>
- While it has always been possible for a superuser to change
- the privilege assignments for built-in or extension-created
- objects, such changes were formerly lost in a dump and reload.
- Now, <application>pg_dump</application> recognizes and dumps such changes.
- (This works only when dumping from a 9.6 or later server, however.)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-08 [31eb14504] Allow pg_dump to dump non-extension members of an extens
--->
- <para>
- Allow <application>pg_dump</application> to dump non-extension-owned objects
- that are within an extension-owned schema
- (Mart&iacute;n Marqu&eacute;s)
- </para>
-
- <para>
- Previously such objects were ignored because they were mistakenly
- assumed to belong to the extension owning their schema.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-06 [3b3fcc4ee] pg_dump: Add table qualifications to some tags
--->
- <para>
- In <application>pg_dump</application> output, include the table name in object
- tags for object types that are only uniquely named per-table
- (for example, triggers) (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><xref linkend="app-psql"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-12-08 [d5563d7df] psql: Support multiple -c and -f options, and allow mixi
-this commit is also listed in the compatibility section
--->
- <para>
- Support multiple <option>-c</option> and <option>-f</option>
- command-line options (Pavel Stehule, Catalin Iacob)
- </para>
-
- <para>
- The specified operations are carried out in the order in which the
- options are given, and then <application>psql</application> terminates.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-08 [c09b18f21] Support \crosstabview in psql
--->
- <para>
- Add a <command>\crosstabview</command> command that prints the results of
- a query in a cross-tabulated display (Daniel V&eacute;rit&eacute;)
- </para>
-
- <para>
- In the crosstab display, data values from one query result column
- are placed in a grid whose column and row headers come from other
- query result columns.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-03 [3cc38ca7d] Add psql \errverbose command to see last server error at
--->
- <para>
- Add an <literal>\errverbose</literal> command that shows the last server
- error at full verbosity (Alex Shulgin)
- </para>
-
- <para>
- This is useful after getting an unexpected error &mdash; you
- no longer need to adjust the <varname>VERBOSITY</varname> variable and
- recreate the failure in order to see error fields that are not
- shown by default.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-03 [8eb6407aa] Add psql \ev and \sv commands for editing and showing vi
-2016-05-06 [9b66aa006] Fix psql's \ev and \sv commands so that they handle view
--->
- <para>
- Add <literal>\ev</literal> and <literal>\sv</literal> commands for editing and
- showing view definitions (Petr Korobeinikov)
- </para>
-
- <para>
- These are parallel to the existing <literal>\ef</literal> and
- <literal>\sf</literal> commands for functions.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-04 [2bbe9112a] Add a \gexec command to psql for evaluation of computed
--->
- <para>
- Add a <command>\gexec</command> command that executes a query and
- re-submits the result(s) as new queries (Corey Huinker)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-05 [2145a7660] psql: allow \pset C in setting the title, matches \C
--->
- <para>
- Allow <literal>\pset C <replaceable>string</replaceable></literal>
- to set the table title, for consistency with <literal>\C
- <replaceable>string</replaceable></literal> (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-11 [69ab7b9d6] psql: Don't automatically use expanded format when there
--->
- <para>
- In <literal>\pset expanded auto</literal> mode, do not use expanded
- format for query results with only one column (Andreas Karlsson,
- Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-21 [dea2b5960] Improve header output from psql's \watch command.
-2016-06-15 [9901d8ac2] Use strftime("%c") to format timestamps in psql's \watch
--->
- <para>
- Improve the headers output by the <command>\watch</command> command
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- Include the <command>\pset title</command> string if one has
- been set, and shorten the prefabricated part of the
- header to be <literal><replaceable>timestamp</replaceable> (every
- <replaceable>N</replaceable>s)</literal>. Also, the timestamp format now
- obeys <application>psql</application>'s locale environment.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-20 [d854118c8] Teach psql's tab completion to consider the entire input
--->
- <para>
- Improve tab-completion logic to consider the entire input query,
- not only the current line (Tom Lane)
- </para>
-
- <para>
- Previously, breaking a command into multiple lines defeated any
- tab completion rules that needed to see words on earlier lines.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-04 [158e3bc8e] Tab completion for CREATE SEQUENCE.
-2015-09-08 [3ae16798f] psql: Generic tab completion support for enum and bool G
-2015-09-09 [2f8880704] Improve tab-completion for GRANT and REVOKE.
-2015-10-01 [bf4817e4f] Fix incorrect tab-completion for GRANT and REVOKE
-2015-10-20 [7c0b49cd0] Tab complete CREATE EXTENSION .. VERSION.
-2015-12-25 [8014c44e8] Improve SECURITY LABEL tab completion
-2016-01-12 [bc56d5898] psql: Fix CREATE INDEX tab completion
-2016-01-12 [b1bfb28b5] psql: Improve CREATE INDEX CONCURRENTLY tab completion
-2016-01-16 [4189e3d65] psql: Add completion support for DROP INDEX CONCURRENTLY
-2016-01-20 [d0f2f53cd] psql: Add tab completion for COPY with query
-2016-01-23 [6ae4c8de0] psql: Improve completion of FDW DDL commands
-2016-01-26 [879d71393] Various fixes to REFRESH MATERIALIZED VIEW tab completio
-2016-02-01 [89611c4df] Various fixes to "ALTER ... SET/RESET" tab completions
--->
- <para>
- Numerous minor improvements in tab-completion behavior (Peter
- Eisentraut, Vik Fearing, Kevin Grittner, Kyotaro Horiguchi, Jeff
- Janes, Andreas Karlsson, Fujii Masao, Thomas Munro, Masahiko
- Sawada, Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-07 [275f05c99] Add psql PROMPT variable showing the pid of the connecte
--->
- <para>
- Add a <literal>PROMPT</literal> option <literal>%p</literal> to insert the
- process ID of the connected backend (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-05 [0426f349e] Rearrange the handling of error context reports.
-This commit is also listed under libpq and PL/pgSQL
--->
- <para>
- Introduce a feature whereby the <literal>CONTEXT</literal> field of
- messages can be suppressed, either always or only for non-error
- messages (Pavel Stehule)
- </para>
-
- <para>
- Printing <literal>CONTEXT</literal> only for errors is now the default
- behavior. This can be changed by setting the special variable
- <varname>SHOW_CONTEXT</varname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-07-11 [a670c24c3] Improve output of psql's \df+ command.
--->
- <para>
- Make <command>\df+</command> show function access privileges and
- parallel-safety attributes (Michael Paquier)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><xref linkend="pgbench"/></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-20 [68ab8e8ba] SQL commands in pgbench scripts are now ended by semicol
--->
- <para>
- SQL commands in <application>pgbench</application> scripts are now ended by
- semicolons, not newlines (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- This change allows SQL commands in scripts to span multiple lines.
- Existing custom scripts will need to be modified to add a semicolon
- at the end of each line that does not have one already. (Doing so
- does not break the script for use with older versions
- of <application>pgbench</application>.)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-01 [7e137f846] Extend pgbench's expression syntax to support a few buil
-2016-03-28 [86c43f4e2] pgbench: Support double constants and functions.
-2016-05-05 [7a622b273] Rename pgbench min/max to least/greatest, and fix handli
-2016-05-06 [951529948] Improve handling of numeric-valued variables in pgbench.
--->
- <para>
- Support floating-point arithmetic, as well as some <link
- linkend="pgbench-builtin-functions">built-in functions</link>, in
- expressions in backslash commands (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-29 [ad9566470] pgbench: Remove \setrandom.
--->
- <para>
- Replace <command>\setrandom</command> with built-in functions (Fabien
- Coelho)
- </para>
-
- <para>
- The new built-in functions include <link
- linkend="pgbench-functions"><function>random()</function></link>,
- <function>random_exponential()</function>, and
- <function>random_gaussian()</function>, which perform the same work as
- <command>\setrandom</command>, but are easier to use since they can be
- embedded in larger expressions. Since these additions have made
- <command>\setrandom</command> obsolete, remove it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-27 [8bea3d221] pgbench: improve multi-script support
-2016-03-03 [d561f1cae] pgbench: accept unambiguous builtin prefixes for -b
--->
- <para>
- Allow invocation of multiple copies of the built-in scripts,
- not only custom scripts (Fabien Coelho)
- </para>
-
- <para>
- This is done with the new <option>-b</option> switch, which works
- similarly to <option>-f</option> for custom scripts.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-19 [7bafffea6] pgbench: Allow changing weights for scripts
-2016-09-21 [970300faa] Print test parameters like "foo: 123", and results like
--->
- <para>
- Allow changing the selection probabilities (weights) for scripts
- (Fabien Coelho)
- </para>
-
- <para>
- When multiple scripts are specified, each <application>pgbench</application>
- transaction randomly chooses one to execute. Formerly this was
- always done with uniform probability, but now different selection
- probabilities can be specified for different scripts.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-01 [1d0c3b3f8] pgbench: allow per-script statistics
--->
- <para>
- Collect statistics for each script in a multi-script run (Fabien
- Coelho)
- </para>
-
- <para>
- This feature adds an intermediate level of detail to existing
- global and per-command statistics printouts.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-16 [1def9063c] pgbench progress with timestamp
--->
- <para>
- Add a <option>--progress-timestamp</option> option to report progress
- with Unix epoch timestamps, instead of time since the run started
- (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-03 [ba3deeefb] Lift the limitation that # of clients must be a multiple
--->
- <para>
- Allow the number of client connections (<option>-c</option>) to not
- be an exact multiple of the number of threads (<option>-j</option>)
- (Fabien Coelho)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-09 [accf7616f] pgbench: When -T is used, don't wait for transactions be
--->
- <para>
- When the <option>-T</option> option is used, stop promptly at the end
- of the specified time (Fabien Coelho)
- </para>
-
- <para>
- Previously, specifying a low transaction rate could cause
- <application>pgbench</application> to wait significantly longer than
- specified.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Applications</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-12-17 [66d947b9d] Adjust behavior of single-user -j mode for better initdb
--->
- <para>
- Improve error reporting during <application>initdb</application>'s
- post-bootstrap phase (Tom Lane)
- </para>
-
- <para>
- Previously, an error here led to reporting the entire input
- file as the <quote>failing query</quote>; now just the current
- query is reported. To get the desired behavior, queries in
- <application>initdb</application>'s input files must be separated by blank
- lines.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-17 [c4a8812cf] Use just one standalone-backend session for initdb's pos
-2016-08-30 [d9720e437] Fix initdb misbehavior when user mis-enters superuser pa
--->
- <para>
- Speed up <application>initdb</application> by using just one
- standalone-backend session for all the post-bootstrap steps
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-01 [e50cda784] Use pg_rewind when target timeline was switched
--->
- <para>
- Improve <link linkend="app-pgrewind"><application>pg_rewind</application></link>
- so that it can work when the target timeline changes (Alexander
- Korotkov)
- </para>
-
- <para>
- This allows, for example, rewinding a promoted standby back to
- some state of the old master's timeline.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-07-02 [726117243] Remove obsolete heap_formtuple/modifytuple/deformtuple f
--->
- <para>
- Remove obsolete
- <function>heap_formtuple</function>/<function>heap_modifytuple</function>/<function>heap_deformtuple</function>
- functions (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-08-27 [b9fe6cbc8] Add macros to make AllocSetContextCreate() calls simpler
--->
- <para>
- Add macros to make <function>AllocSetContextCreate()</function> calls simpler
- and safer (Tom Lane)
- </para>
-
- <para>
- Writing out the individual sizing parameters for a memory context
- is now deprecated in favor of using one of the new
- macros <symbol>ALLOCSET_DEFAULT_SIZES</symbol>,
- <symbol>ALLOCSET_SMALL_SIZES</symbol>,
- or <symbol>ALLOCSET_START_SMALL_SIZES</symbol>.
- Existing code continues to work, however.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-05 [de6fd1c89] Rely on inline functions even if that causes warnings in
--->
- <para>
- Unconditionally use <literal>static inline</literal> functions in header
- files (Andres Freund)
- </para>
-
- <para>
- This may result in warnings and/or wasted code space with very
- old compilers, but the notational improvement seems worth it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-29 [13d856e17] Make TAP tests work on Windows.
-2015-12-02 [1caef31d9] Refactor Perl test code
-2015-12-07 [9821492ee] Cleanup some problems in new Perl test code
-2016-03-03 [2c83f435a] Rework PostgresNode's psql method
-2016-02-26 [49148645f] Add a test framework for recovery
-2016-02-26 [74d58425c] Apply last revision of recovery patch
-2016-05-06 [6bd356c33] Add TAP tests for pg_dump
--->
- <para>
- Improve <application>TAP</application> testing infrastructure (Michael
- Paquier, Craig Ringer, &Aacute;lvaro Herrera, Stephen Frost)
- </para>
-
- <para>
- Notably, it is now possible to test recovery scenarios using
- this infrastructure.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-11 [aa65de042] When trace_lwlocks is used, identify individual lwlocks
--->
- <para>
- Make <varname>trace_lwlocks</varname> identify individual locks by name
- (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-19 [d37b816dc] Adopt a more compact, less error-prone notation for tab
-2016-01-04 [9b181b036] In psql's tab completion, change most TailMatches patter
-2016-01-05 [4f18010af] Convert psql's tab completion for backslash commands to
--->
- <para>
- Improve <application>psql</application>'s tab-completion code infrastructure
- (Thomas Munro, Michael Paquier)
- </para>
-
- <para>
- Tab-completion rules are now considerably easier to write, and
- more compact.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-05 [efa318bcf] Make pg_shseclabel available in early backend startup
--->
- <para>
- Nail the <structname>pg_shseclabel</structname> system catalog into cache,
- so that it is available for access during connection authentication
- (Adam Brightwell)
- </para>
-
- <para>
- The core code does not use this catalog for authentication,
- but extensions might wish to consult it.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-17 [65c5fcd35] Restructure index access method API to hide most of it a
-2016-01-21 [be44ed27b] Improve index AMs' opclass validation procedures.
-2016-08-13 [ed0097e4f] Add SQL-accessible functions for inspecting index AM pro
--->
- <para>
- Restructure <link linkend="indexam">index access
- method <acronym>API</acronym></link> to hide most of it at
- the <application>C</application> level (Alexander Korotkov, Andrew Gierth)
- </para>
-
- <para>
- This change modernizes the index <acronym>AM API</acronym> to look more
- like the designs we have adopted for foreign data wrappers and
- tablesample handlers. This simplifies the <application>C</application> code
- and makes it much more practical to define index access methods in
- installable extensions. A consequence is that most of the columns
- of the <structname>pg_am</structname> system catalog have disappeared.
- New <link linkend="functions-info-catalog-table">inspection
- functions</link> have been added to allow SQL queries to determine
- index AM properties that used to be discoverable
- from <structname>pg_am</structname>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-06 [6c268df12] Add new catalog called pg_init_privs
--->
- <para>
- Add <link
- linkend="catalog-pg-init-privs"><structname>pg_init_privs</structname></link>
- system catalog to hold original privileges
- of <application>initdb</application>-created and extension-created objects
- (Stephen Frost)
- </para>
-
- <para>
- This infrastructure allows <application>pg_dump</application> to dump changes
- that an installation may have made in privileges attached to
- system objects. Formerly, such changes would be lost in a dump
- and reload, but now they are preserved.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-04 [c1772ad92] Change the way that LWLocks for extensions are allocated
--->
- <para>
- Change the way that extensions allocate custom <literal>LWLocks</literal>
- (Amit Kapila, Robert Haas)
- </para>
-
- <para>
- The <function>RequestAddinLWLocks()</function> function is removed,
- and replaced by <function>RequestNamedLWLockTranche()</function>.
- This allows better identification of custom <literal>LWLocks</literal>,
- and is less error-prone.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-11 [38f8bdcac] Modify the isolation tester so that multiple sessions ca
--->
- <para>
- Improve the isolation tester to allow multiple sessions to wait
- concurrently, allowing testing of deadlock scenarios (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-12 [bcac23de7] Introduce extensible node types.
--->
- <para>
- Introduce extensible node types (KaiGai Kohei)
- </para>
-
- <para>
- This change allows <application>FDW</application>s or custom scan providers
- to store data in a plan tree in a more convenient format than
- was previously possible.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-08-11 [68fa28f77] Postpone extParam/allParam calculations until the very e
-2016-01-07 [c44d01383] Delay creation of subplan tlist until after create_plan(
-2016-02-18 [19a541143] Add an explicit representation of the output targetlist
-2016-03-07 [3fc6e2d7f] Make the upper part of the planner work by generating an
-2016-07-01 [5ce5e4a12] Set consider_parallel correctly for upper planner rels.
-2016-07-01 [9e703987a] Rethink the GetForeignUpperPaths API (again).
--->
- <para>
- Make the planner deal with post-scan/join query steps by generating
- and comparing <literal>Paths</literal>, replacing a lot of ad-hoc logic
- (Tom Lane)
- </para>
-
- <para>
- This change provides only marginal user-visible improvements today,
- but it enables future work on a lot of upper-planner improvements
- that were impractical to tackle using the old code structure.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-20 [a7de3dc5c] Support multi-stage aggregation.
-2016-06-22 [f8ace5477] Fix type-safety problem with parallel aggregate serial/d
-2016-06-26 [19e972d55] Rethink node-level representation of partial-aggregation
--->
- <para>
- Support partial aggregation (David Rowley, Simon Riggs)
- </para>
-
- <para>
- This change allows the computation of an aggregate function to be
- split into separate parts, for example so that parallel worker
- processes can cooperate on computing an aggregate. In future
- it might allow aggregation across local and remote data to occur
- partially on the remote end.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-09 [b6fb6471f] Add a generic command progress reporting facility.
--->
- <para>
- Add a generic command progress reporting facility (Vinayak Pokale,
- Rahila Syed, Amit Langote, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-18 [27199058d] Convert psql's flex lexer to be re-entrant, and make it
-2016-03-19 [0ea9efbe9] Split psql's lexer into two separate .l files for SQL an
-2016-03-20 [b6afae71a] Use %option bison-bridge in psql/pgbench lexers.
-2016-03-24 [588d963b0] Create src/fe_utils/, and move stuff into there from pg_
-2016-03-24 [d65bea26a] Move psql's print.c and mbprint.c into src/fe_utils.
-2016-03-24 [c1156411a] Move psql's psqlscan.l into src/fe_utils.
--->
- <para>
- Separate out <application>psql</application>'s <application>flex</application> lexer to
- make it usable by other client programs (Tom Lane, Kyotaro
- Horiguchi)
- </para>
-
- <para>
- This eliminates code duplication for programs that need to be able
- to parse SQL commands well enough to identify command boundaries.
- Doing that in full generality is more painful than one could
- wish, and up to now only <application>psql</application> has really gotten
- it right among our supported client programs.
- </para>
-
- <para>
- A new source-code subdirectory <filename>src/fe_utils/</filename> has
- been created to hold this and other code that is shared across
- our client programs. Formerly such sharing was accomplished by
- symbolic linking or copying source files at build time, which
- was ugly and required duplicate compilation.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-21 [98a64d0bd] Introduce WaitEventSet API.
--->
- <para>
- Introduce <literal>WaitEventSet</literal> <acronym>API</acronym> to allow
- efficient waiting for event sets that usually do not change from
- one wait to the next (Andres Freund, Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-01 [65578341a] Add Generic WAL interface
--->
- <para>
- Add a generic interface for writing <acronym>WAL</acronym> records
- (Alexander Korotkov, Petr Jel&iacute;nek, Markus Nullmeier)
- </para>
-
- <para>
- This change allows extensions to write <acronym>WAL</acronym> records for
- changes to pages using a standard layout. The problem of needing to
- replay <acronym>WAL</acronym> without access to the extension is solved by
- having generic replay code. This allows extensions to implement,
- for example, index access methods and have <acronym>WAL</acronym>
- support for them.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-06 [3fe3511d0] Generic Messages for Logical Decoding
--->
- <para>
- Support generic <acronym>WAL</acronym> messages for logical decoding
- (Petr Jel&iacute;nek, Andres Freund)
- </para>
-
- <para>
- This feature allows extensions to insert data into the
- <acronym>WAL</acronym> stream that can be read by logical-decoding
- plugins, but is not connected to physical data restoration.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-30 [ccd6eb49a] Introduce traversalValue for SP-GiST scan
-2016-03-30 [87545f541] Use traversalValue in SP-GiST range opclass.
--->
- <para>
- Allow SP-GiST operator classes to store an arbitrary
- <quote>traversal value</quote> while descending the index (Alexander
- Lebedev, Teodor Sigaev)
- </para>
-
- <para>
- This is somewhat like the <quote>reconstructed value</quote>, but it
- could be any arbitrary chunk of data, not necessarily of the same
- data type as the indexed column.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-04 [66229ac00] Introduce a LOG_SERVER_ONLY ereport level, which is neve
--->
- <para>
- Introduce a <literal>LOG_SERVER_ONLY</literal> message level for
- <function>ereport()</function> (David Steele)
- </para>
-
- <para>
- This level acts like <literal>LOG</literal> except that the message is
- never sent to the client. It is meant for use in auditing and
- similar applications.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-07-01 [548af97fc] Provide and use a makefile target to build all generated
--->
- <para>
- Provide a <filename>Makefile</filename> target to build all generated
- headers (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- <literal>submake-generated-headers</literal> can now be invoked to ensure
- that generated backend header files are up-to-date. This is
- useful in subdirectories that might be built <quote>standalone</quote>.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-09-15 [fcd93e4af] Support OpenSSL 1.1.0.
-2016-09-15 [9895818d5] Fix building with LibreSSL.
--->
- <para>
- Support OpenSSL 1.1.0 (Andreas Karlsson, Heikki Linnakangas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2016-03-11 [92f03fe76] Allow setting sample ratio for auto_explain
-2016-03-13 [7a8d87483] Rename auto_explain.sample_ratio to sample_rate
--->
- <para>
- Add configuration parameter <literal>auto_explain.sample_rate</literal> to
- allow <link linkend="auto-explain"><filename>contrib/auto_explain</filename></link>
- to capture just a configurable fraction of all queries (Craig
- Ringer, Julien Rouhaud)
- </para>
-
- <para>
- This allows reduction of overhead for heavy query traffic, while
- still getting useful information on average.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-01 [9ee014fc8] Bloom index contrib module
--->
- <para>
- Add <link linkend="bloom"><filename>contrib/bloom</filename></link> module that
- implements an index access method based on Bloom filtering (Teodor
- Sigaev, Alexander Korotkov)
- </para>
-
- <para>
- This is primarily a proof-of-concept for non-core index access
- methods, but it could be useful in its own right for queries that
- search many columns.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-18 [33bd250f6] Cube extension kNN support
-2015-12-28 [81ee726d8] Code and docs review for cube kNN support.
--->
- <para>
- In <link linkend="cube"><filename>contrib/cube</filename></link>, introduce
- distance operators for cubes, and support kNN-style searches in
- GiST indexes on cube columns (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-03 [41d2c081c] Make hstore_to_jsonb_loose match hstore_to_json_loose on
--->
- <para>
- Make <filename>contrib/hstore</filename>'s <link
- linkend="hstore-func-table"><function>hstore_to_jsonb_loose()</function></link>
- and <function>hstore_to_json_loose()</function> functions agree on what
- is a number (Tom Lane)
- </para>
-
- <para>
- Previously, <function>hstore_to_jsonb_loose()</function> would convert
- numeric-looking strings to <acronym>JSON</acronym> numbers, rather than
- strings, even if they did not exactly match the <acronym>JSON</acronym>
- syntax specification for numbers. This was inconsistent with
- <function>hstore_to_json_loose()</function>, so tighten the test to match
- the <acronym>JSON</acronym> syntax.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-21 [c6fbe6d6f] Add selectivity estimation functions for intarray operat
--->
- <para>
- Add selectivity estimation functions for
- <link linkend="intarray"><filename>contrib/intarray</filename></link> operators
- to improve plans for queries using those operators (Yury Zhuravlev,
- Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-25 [d6061f83a] Improve pageinspect module
--->
- <para>
- Make <link
- linkend="pageinspect"><filename>contrib/pageinspect</filename></link>'s
- <function>heap_page_items()</function> function show the raw data in each
- tuple, and add new functions <function>tuple_data_split()</function> and
- <function>heap_page_item_attrs()</function> for inspection of individual
- tuple fields (Nikolay Shaplov)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-09 [188f359d3] pgcrypto: support changing S2K iteration count
--->
- <para>
- Add an optional <literal>S2K</literal> iteration count parameter to
- <link linkend="pgcrypto"><filename>contrib/pgcrypto</filename></link>'s
- <function>pgp_sym_encrypt()</function> function (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-16 [f576b17cd] Add word_similarity to pg_trgm contrib module.
--->
- <para>
- Add support for <quote>word similarity</quote> to
- <link linkend="pgtrgm"><filename>contrib/pg_trgm</filename></link>
- (Alexander Korotkov, Artur Zakirov)
- </para>
-
- <para>
- These functions and operators measure the similarity between one
- string and the most similar single word of another string.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-16 [5871b8848] GUC variable pg_trgm.similarity_threshold insead of set_
-2016-06-20 [9c852566a] Fix comparison of similarity to threshold in GIST trigra
--->
- <para>
- Add configuration parameter
- <varname>pg_trgm.similarity_threshold</varname> for
- <filename>contrib/pg_trgm</filename>'s similarity threshold (Artur Zakirov)
- </para>
-
- <para>
- This threshold has always been configurable, but formerly it was
- controlled by special-purpose functions <function>set_limit()</function>
- and <function>show_limit()</function>. Those are now deprecated.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-07-20 [97f301464] This supports the triconsistent function for pg_trgm GIN
--->
- <para>
- Improve <filename>contrib/pg_trgm</filename>'s GIN operator class to
- speed up index searches in which both common and rare keys appear
- (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-25 [25bfa7efd] Improve the gin index scan performance in pg_trgm.
--->
- <para>
- Improve performance of similarity searches in
- <filename>contrib/pg_trgm</filename> GIN indexes (Christophe Fornaroli)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-08 [ba0a198fb] Add pg_visibility contrib module.
-2016-06-17 [71d05a2c7] pg_visibility: Add pg_truncate_visibility_map function.
--->
- <para>
- Add <link
- linkend="pgvisibility"><filename>contrib/pg_visibility</filename></link> module
- to allow examining table visibility maps (Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-09-07 [49124613f] contrib/sslinfo: add ssl_extension_info SRF
--->
- <para>
- Add <link linkend="sslinfo"><function>ssl_extension_info()</function></link>
- function to <filename>contrib/sslinfo</filename>, to print information
- about <acronym>SSL</acronym> extensions present in the <literal>X509</literal>
- certificate used for the current connection (Dmitry Voronin)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="postgres-fdw"><filename>postgres_fdw</filename></link></title>
-
- <itemizedlist>
-
- <listitem>
-<!--
-2015-11-03 [d89494166] Allow postgres_fdw to ship extension funcs/operators for
--->
- <para>
- Allow extension-provided operators and functions to be sent for
- remote execution, if the extension is whitelisted in the foreign
- server's options (Paul Ramsey)
- </para>
-
- <para>
- Users can enable this feature when the extension is known to exist
- in a compatible version in the remote database. It allows more
- efficient execution of queries involving extension operators.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-03 [f18c944b6] postgres_fdw: Add ORDER BY to some remote SQL queries.
-2015-12-22 [ccd8f9792] postgres_fdw: Consider requesting sorted data so we can
--->
- <para>
- Consider performing sorts on the remote server (Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-09 [e4106b252] postgres_fdw: Push down joins to remote servers.
-2016-03-09 [aa09cd242] postgres_fdw: Consider foreign joining and foreign sorti
--->
- <para>
- Consider performing joins on the remote server (Shigeru Hanada,
- Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-18 [0bf3ae88a] Directly modify foreign tables.
--->
- <para>
- When feasible, perform <command>UPDATE</command> or <command>DELETE</command>
- entirely on the remote server (Etsuro Fujita)
- </para>
-
- <para>
- Formerly, remote updates involved sending a <command>SELECT FOR UPDATE</command>
- command and then updating or deleting the selected rows one-by-one.
- While that is still necessary if the operation requires any local
- processing, it can now be done remotely if all elements of the
- query are safe to send to the remote server.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-02-03 [dc203dc3a] postgres_fdw: Allow fetch_size to be set per-table or pe
--->
- <para>
- Allow the fetch size to be set as a server or table option
- (Corey Huinker)
- </para>
-
- <para>
- Formerly, <filename>postgres_fdw</filename> always fetched 100 rows at
- a time from remote queries; now that behavior is configurable.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-01-28 [96198d94c] Avoid multiple foreign server connections when all use s
--->
- <para>
- Use a single foreign-server connection for local user IDs that
- all map to the same remote user (Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-21 [f039eaac7] Allow queries submitted by postgres_fdw to be canceled.
-2016-05-16 [1b812afb0] Fix multiple problems in postgres_fdw query cancellation
--->
- <para>
- Transmit query cancellation requests to the remote server
- (Michael Paquier, Etsuro Fujita)
- </para>
-
- <para>
- Previously, a local query cancellation request did not cause an
- already-sent remote query to terminate early.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- </sect2>
-
- </sect1>
diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml
deleted file mode 100644
index d55209d85b1..00000000000
--- a/doc/src/sgml/release-old.sgml
+++ /dev/null
@@ -1,6557 +0,0 @@
-<!-- doc/src/sgml/release-old.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-7-3-21">
- <title>Release 7.3.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2008-01-07</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.20,
- including fixes for significant security issues.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname> release
- in the 7.3.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.21</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent functions in indexes from executing with the privileges of
- the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
- </para>
-
- <para>
- Functions used in index expressions and partial-index
- predicates are evaluated whenever a new table entry is made. It has
- long been understood that this poses a risk of trojan-horse code
- execution if one modifies a table owned by an untrustworthy user.
- (Note that triggers, defaults, check constraints, etc. pose the
- same type of risk.) But functions in indexes pose extra danger
- because they will be executed by routine maintenance operations
- such as <command>VACUUM FULL</command>, which are commonly performed
- automatically under a superuser account. For example, a nefarious user
- can execute code with superuser privileges by setting up a
- trojan-horse index definition and waiting for the next routine vacuum.
- The fix arranges for standard maintenance operations
- (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
- and <command>CLUSTER</command>) to execute as the table owner rather than
- the calling user, using the same privilege-switching mechanism already
- used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
- this security measure, execution of <command>SET SESSION
- AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
- <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
-
- <para>
- The fix that appeared for this in 7.3.20 was incomplete, as it plugged
- the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
- CVE-2007-3278)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential crash in <function>translate()</function> when using a multibyte
- database encoding (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
- NULL rowid as a category in its own right, rather than crashing (Joe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require a specific version of <productname>Autoconf</productname> to be used
- when re-generating the <command>configure</command> script (Peter)
- </para>
-
- <para>
- This affects developers and packagers only. The change was made
- to prevent accidental use of untested combinations of
- <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
- You can remove the version check if you really want to use a
- different <productname>Autoconf</productname> version, but it's
- your responsibility whether the result works or not.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-20">
- <title>Release 7.3.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-09-17</para>
- </formalpara>
-
- <para>
- This release contains fixes from 7.3.19.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.20</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent index corruption when a transaction inserts rows and
- then aborts close to the end of a concurrent <command>VACUUM</command>
- on the same table (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when <varname>log_min_error_statement</varname> logging runs out
- of memory (Tom)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require non-superusers who use <filename>/contrib/dblink</filename> to use only
- password authentication, as a security measure (Joe)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-19">
- <title>Release 7.3.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-04-23</para>
- </formalpara>
-
- <para>
- This release contains fixes from 7.3.18,
- including a security fix.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.19</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support explicit placement of the temporary-table schema within
- <varname>search_path</varname>, and disable searching it for functions
- and operators (Tom)
- </para>
- <para>
- This is needed to allow a security-definer function to set a
- truly secure value of <varname>search_path</varname>. Without it,
- an unprivileged SQL user can use temporary objects to execute code
- with the privileges of the security-definer function (CVE-2007-2138).
- See <command>CREATE FUNCTION</command> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
- <command>UPDATE</command> chains (Tom, Pavan Deolasee)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-18">
- <title>Release 7.3.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.17, including
- a security fix.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.18</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Remove security vulnerability that allowed connected users
- to read backend memory (Tom)
- </para>
- <para>
- The vulnerability involves changing the
- data type of a table column used in a SQL function (CVE-2007-0555).
- This error can easily be exploited to cause a backend crash, and in
- principle might be used to read database content that the user
- should not be able to access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare bug wherein btree index page splits could fail
- due to choosing an infeasible split point (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten security of multi-byte character processing for UTF8 sequences
- over three bytes long (Tom)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-17">
- <title>Release 7.3.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2007-01-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.16.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.17</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <function>to_number()</function> and <function>to_char(numeric)</function>
- are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for
- new <application>initdb</application> installs (Tom)
- </para>
-
- <para>
- This is because <varname>lc_numeric</varname> can potentially
- change the output of these functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve index usage of regular expressions that use parentheses (Tom)
- </para>
-
- <para>
- This improves <application>psql</application> <literal>\d</literal> performance also.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-16">
- <title>Release 7.3.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-10-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.15.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.16</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix corner cases in pattern matching for
- <application>psql</application>'s <literal>\d</literal> commands</para></listitem>
-<listitem><para>Fix index-corrupting bugs in /contrib/ltree
- (Teodor)</para></listitem>
-<listitem><para>Back-port 7.4 spinlock code to improve performance and support
-64-bit architectures better</para> </listitem>
-<listitem><para>Fix SSL-related memory leak in libpq</para> </listitem>
-<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Adjust regression tests for recent changes in US DST laws
-</para> </listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-15">
- <title>Release 7.3.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-05-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.14,
- including patches for extremely serious security issues.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.15</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
-
- <para>
- Full security against the SQL-injection attacks described in
- CVE-2006-2313 and CVE-2006-2314 might require changes in application
- code. If you have applications that embed untrustworthy strings
- into SQL commands, you should examine them as soon as possible to
- ensure that they are using recommended escaping techniques. In
- most cases, applications should be using subroutines provided by
- libraries or drivers (such as <application>libpq</application>'s
- <function>PQescapeStringConn()</function>) to perform string escaping,
- rather than relying on <foreignphrase>ad hoc</foreignphrase> code to do it.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change the server to reject invalidly-encoded multibyte
-characters in all cases (Tatsuo, Tom)</para>
-<para>While <productname>PostgreSQL</productname> has been moving in this direction for
-some time, the checks are now applied uniformly to all encodings and all
-textual input, and are now always errors not merely warnings. This change
-defends against SQL-injection attacks of the type described in CVE-2006-2313.
-</para></listitem>
-
-<listitem><para>Reject unsafe uses of <literal>\'</literal> in string literals</para>
-<para>As a server-side defense against SQL-injection attacks of the type
-described in CVE-2006-2314, the server now only accepts <literal>''</literal> and not
-<literal>\'</literal> as a representation of ASCII single quote in SQL string
-literals. By default, <literal>\'</literal> is rejected only when
-<varname>client_encoding</varname> is set to a client-only encoding (SJIS, BIG5, GBK,
-GB18030, or UHC), which is the scenario in which SQL injection is possible.
-A new configuration parameter <varname>backslash_quote</varname> is available to
-adjust this behavior when needed. Note that full security against
-CVE-2006-2314 might require client-side changes; the purpose of
-<varname>backslash_quote</varname> is in part to make it obvious that insecure
-clients are insecure.
-</para></listitem>
-
-<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be
-aware of encoding considerations</para>
-<para>This fixes <application>libpq</application>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314.
-Applications that use multiple <productname>PostgreSQL</productname> connections
-concurrently should migrate to <function>PQescapeStringConn()</function> and
-<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly
-for the settings in use in each database connection. Applications that
-do string escaping <quote>by hand</quote> should be modified to rely on library
-routines instead.
-</para></listitem>
-
-<listitem><para>Fix some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</function>, <function>alt_to_iso</function>,
-<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>,
-<function>mic_to_euc_tw</function> were all broken to varying
-extents.
-</para></listitem>
-
-<listitem><para>Clean up stray remaining uses of <literal>\'</literal> in strings
-(Bruce, Jan)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-14">
- <title>Release 7.3.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-02-14</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.13.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.14</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.13,
- see <xref linkend="release-7-3-13"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix potential crash in <command>SET
-SESSION AUTHORIZATION</command> (CVE-2006-0553)</para>
-<para>An unprivileged user could crash the server process, resulting in
-momentary denial of service to other users, if the server has been compiled
-with Asserts enabled (which is not the default).
-Thanks to Akio Ishida for reporting this problem.
-</para></listitem>
-
-<listitem><para>Fix bug with row visibility logic in self-inserted
-rows (Tom)</para>
-<para>Under rare circumstances a row inserted by the current command
-could be seen as already valid, when it should not be. Repairs bug
-created in 7.3.11 release.
-</para></listitem>
-
-<listitem><para>Fix race condition that could lead to <quote>file already
-exists</quote> errors during pg_clog file creation
-(Tom)</para></listitem>
-
-<listitem><para>Fix to allow restoring dumps that have cross-schema
-references to custom operators (Tom)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</function>
-and <function>isinf</function> during configure (Tom)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-13">
- <title>Release 7.3.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2006-01-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.12.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.13</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.10,
- see <xref linkend="release-7-3-10"/>.
- Also, you might need to <command>REINDEX</command> indexes on textual
- columns after updating, if you are affected by the locale or
- <application>plperl</application> issues described below.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix character string comparison for locales that consider
-different character combinations as equal, such as Hungarian (Tom)</para>
-<para>This might require <command>REINDEX</command> to fix existing indexes on
-textual columns.</para></listitem>
-
-<listitem><para>Set locale environment variables during postmaster startup
-to ensure that <application>plperl</application> won't change the locale later</para>
-<para>This fixes a problem that occurred if the <application>postmaster</application> was
-started with environment variables specifying a different locale than what
-<application>initdb</application> had been told. Under these conditions, any use of
-<application>plperl</application> was likely to lead to corrupt indexes. You might need
-<command>REINDEX</command> to fix existing indexes on
-textual columns if this has happened to you.</para></listitem>
-
-<listitem><para>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> gen_salt,
-which caused it not to use all available salt space for MD5 and
-XDES algorithms (Marko Kreen, Solar Designer)</para>
-<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
-
-<listitem><para>Fix <filename>/contrib/dblink</filename> to throw an error,
-rather than crashing, when the number of columns specified is different from
-what's actually returned by the query (Joe)</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-12">
- <title>Release 7.3.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-12-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.11.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.12</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.10,
- see <xref linkend="release-7-3-10"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix race condition in transaction log management</para>
-<para>There was a narrow window in which an I/O operation could be initiated
-for the wrong page, leading to an Assert failure or data
-corruption.</para>
-</listitem>
-
-<listitem><para><filename>/contrib/ltree</filename> fixes (Teodor)</para></listitem>
-
-<listitem><para>Fix longstanding planning error for outer joins</para>
-<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
-only supported with merge-joinable join conditions</quote>.</para></listitem>
-
-<listitem><para>Prevent core dump in <application>pg_autovacuum</application> when a
-table has been dropped</para></listitem>
-
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-11">
- <title>Release 7.3.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-10-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.10.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.11</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- if you are upgrading from a version earlier than 7.3.10,
- see <xref linkend="release-7-3-10"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix error that allowed <command>VACUUM</command> to remove
-<literal>ctid</literal> chains too soon, and add more checking in code that follows
-<literal>ctid</literal> links</para>
-<para>This fixes a long-standing problem that could cause crashes in very rare
-circumstances.</para></listitem>
-<listitem><para>Fix <type>CHAR()</type> to properly pad spaces to the specified
-length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
-<para>In prior releases, the padding of <type>CHAR()</type> was incorrect
-because it only padded to the specified number of bytes without
-considering how many characters were stored.</para></listitem>
-<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
-a...</literal> with GiST index on column <literal>a</literal></para></listitem>
-<listitem><para>Improve checking for partially-written WAL
-pages</para></listitem>
-<listitem><para>Improve robustness of signal handling when SSL is
-enabled</para></listitem>
-<listitem><para>Various memory leakage fixes</para></listitem>
-<listitem><para>Various portability improvements</para></listitem>
-<listitem><para>Fix PL/pgSQL to handle <literal>var := var</literal> correctly when
-the variable is of pass-by-reference type</para></listitem>
-</itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-7-3-10">
- <title>Release 7.3.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-05-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.9, including several
- security-related issues.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.10</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X. However,
- it is one possible way of handling a significant security problem
- that has been found in the initial contents of 7.3.X system
- catalogs. A dump/initdb/reload sequence using 7.3.10's initdb will
- automatically correct this problem.
- </para>
-
- <para>
- The security problem is that the built-in character set encoding
- conversion functions can be invoked from SQL commands by unprivileged
- users, but the functions were not designed for such use and are not
- secure against malicious choices of arguments. The fix involves changing
- the declared parameter list of these functions so that they can no longer
- be invoked from SQL commands. (This does not affect their normal use
- by the encoding conversion machinery.)
- It is strongly recommended that all installations repair this error,
- either by initdb or by following the manual repair procedure given
- below. The error at least allows unprivileged database users to crash
- their server process, and might allow unprivileged users to gain the
- privileges of a database superuser.
- </para>
-
- <para>
- If you wish not to do an initdb, perform the following procedure instead.
- As the database superuser, do:
-
-<programlisting>
-BEGIN;
-UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
-WHERE pronamespace = 11 AND pronargs = 5
- AND proargtypes[2] = 'cstring'::regtype;
--- The command should report having updated 90 rows;
--- if not, rollback and investigate instead of committing!
-COMMIT;
-</programlisting>
- </para>
-
- <para>
- The above procedure must be carried out in <emphasis>each</emphasis> database
- of an installation, including <literal>template1</literal>, and ideally
- including <literal>template0</literal> as well. If you do not fix the
- template databases then any subsequently created databases will contain
- the same error. <literal>template1</literal> can be fixed in the same way
- as any other database, but fixing <literal>template0</literal> requires
- additional steps. First, from any database issue:
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-</programlisting>
- Next connect to <literal>template0</literal> and perform the above repair
- procedure. Finally, do:
-<programlisting>
--- re-freeze template0:
-VACUUM FREEZE;
--- and protect it against future alterations:
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change encoding function signature to prevent
-misuse</para></listitem>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</type> values</para>
-<para>
-The comparison code was wrong in the case where the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-NOTE: if you have an index on a <type>TIME WITH TIME ZONE</type> column,
-it will need to be <command>REINDEX</command>ed after installing this update, because
-the fix corrects the sort order of column values.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for
-<type>TIME WITH TIME ZONE</type> values</para></listitem>
-<listitem><para>Fix mis-display of negative fractional seconds in
-<type>INTERVAL</type> values</para>
-<para>
-This error only occurred when the
-<literal>--enable-integer-datetimes</literal> configuration switch had been used.
-</para></listitem>
-<listitem><para>Additional buffer overrun checks in plpgsql
-(Neil)</para></listitem>
-<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</literal>
-correctly (Neil)</para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</function> from dumping core for
-month-related formats</para></listitem>
-<listitem><para>Fix <filename>contrib/pgcrypto</filename> for newer OpenSSL builds
-(Marko Kreen)</para></listitem>
-<listitem><para>Still more 64-bit fixes for
-<filename>contrib/intagg</filename></para></listitem>
-<listitem><para>Prevent incorrect optimization of functions returning
-<type>RECORD</type></para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-9">
- <title>Release 7.3.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.8, including several
- security-related issues.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.9</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</command> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</command> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Check that creator of an aggregate function has the right to
-execute the specified transition functions</para>
-<para>
-This oversight made it possible to bypass denial of EXECUTE
-permission on a function.</para></listitem>
-<listitem><para>Fix security and 64-bit issues in
-contrib/intagg</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input. This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
-<listitem><para>Fix display of negative intervals in SQL and GERMAN
-datestyles</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-8">
- <title>Release 7.3.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-10-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.7.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.8</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible failure to update hint bits on disk</para>
-<para>
-Under rare circumstances this oversight could lead to
-<quote>could not access transaction status</quote> failures, which qualifies
-it as a potential-data-loss bug.
-</para></listitem>
-<listitem><para>Ensure that hashed outer join does not miss tuples</para>
-<para>
-Very large left joins using a hash join plan could fail to output unmatched
-left-side rows given just the right data distribution.
-</para></listitem>
-<listitem><para>Disallow running pg_ctl as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
-<para>
-This has been reported as a security issue, though it's hardly worthy of
-concern since there is no reason for non-developers to use this script anyway.
-</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-7">
- <title>Release 7.3.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-08-16</para>
- </formalpara>
-
- <para>
- This release contains one critical fix over 7.3.6, and some minor items.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.7</title>
-
- <para>
- A dump/restore is not required for those running 7.3.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible loss of committed transactions during crash</para>
-<para>
-Due to insufficient interlocking between transaction commit and checkpointing,
-it was possible for transactions committed just before the most recent
-checkpoint to be lost, in whole or in part, following a database crash and
-restart. This is a serious bug that has existed
-since <productname>PostgreSQL</productname> 7.1.
-</para></listitem>
-<listitem><para>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
-<listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-6">
- <title>Release 7.3.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-03-02</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.3.5.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.6</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running 7.3.*.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Revert erroneous changes in rule permissions checking</para>
-<para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
-turns out to have disabled rule-related permissions checks in many
-not-so-corner cases. This would for example allow users to insert into views
-they weren't supposed to have permission to insert into. We have therefore
-reverted the 7.3.3 patch. The original bug will be fixed in 8.0.
-</para></listitem>
-<listitem><para>Repair incorrect order of operations in
-GetNewTransactionId()</para>
-<para>
-This bug could result in failure under out-of-disk-space conditions, including
-inability to restart even after disk space is freed.
-</para></listitem>
-<listitem><para>Ensure configure selects -fno-strict-aliasing even when
-an external value for CFLAGS is supplied</para>
-<para>
-On some platforms, building with -fstrict-aliasing causes bugs.
-</para></listitem>
-<listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
-<para>
-This bug prevented proper restoration from archive files exceeding 4 GB.
-</para></listitem>
-<listitem><para>Make contrib/dblink not assume that local and remote type OIDs
-match (Joe)</para></listitem>
-<listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
-<listitem><para>Don't crash when a rowtype argument to a plpgsql function is
-NULL</para></listitem>
-<listitem><para>Avoid generating invalid character encoding sequences in
-corner cases when planning LIKE operations</para></listitem>
-<listitem><para>Ensure text_position() cannot scan past end of source string
-in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
-<listitem><para>Fix index optimization and selectivity estimates for LIKE
-operations on bytea columns (Joe)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-5">
- <title>Release 7.3.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-12-03</para>
- </formalpara>
-
- <para>
- This has a variety of fixes from 7.3.4.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.5</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running 7.3.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
-<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
-<listitem><para>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
-<listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
-<listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
-<listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
-<listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
-<listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
-<listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
-<listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
-<listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
-<listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
-<listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
-<listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
-<listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
-<listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
-<listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
-(prevents possible SQL-injection attacks)</para></listitem>
-<listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
-<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-4">
- <title>Release 7.3.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-07-24</para>
- </formalpara>
-
- <para>
- This has a variety of fixes from 7.3.3.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.4</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running 7.3.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
-<listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
-<listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
-<listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
-<listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
-<listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
-<listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
-<listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
-<listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
-</itemizedlist>
- </sect2>
- </sect1>
-
-
-<sect1 id="release-7-3-3">
- <title>Release 7.3.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.3.2.
- </para>
-
- <sect2>
- <title>Migration to Version 7.3.3</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.3.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
-<listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
-<listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
-<listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
-<listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
-<listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
-<listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
-<listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
-<listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
-<listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
-<listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
-<type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
-<listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
- not applied unless you <application>initdb</application>)</para></listitem>
-<listitem><para>Fix <application>pg_proc</application> entry for
- <type>timestampt_izone</type> (fix is not applied unless you
- <application>initdb</application>)</para></listitem>
-<listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
-<listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
-<listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
-<listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
- synonym for <command>TEMPORARY</command></para></listitem>
-<listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
-<listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
-<listitem><para>Fix incorrect time-qual check in row fetch for
- <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
-<listitem><para>Foreign-key clauses were parsed but ignored in
- <command>ALTER TABLE ADD COLUMN</command></para></listitem>
-<listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
-<listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
-<listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
-<listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
-<listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
-<listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
-<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
-<listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
-<listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
-<listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
-<listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
-<listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
-<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
-<listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
-<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
-<listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
-<listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
-<listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
-<listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
-<listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
-<listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
-<listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
-<listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
-<listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
-<listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
-<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
-<listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
-<listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
-<listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
-<listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
-<listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
-<listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>Allow qualified type names in <command>CREATE CAST</command>
- and <command> DROP CAST</command></para></listitem>
-<listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
- be written <function>SETOF _type</function></para></listitem>
-<listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
-<listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
-<listitem><para><application>pg_dump</application> failed to handle error return
- from <function>lo_read</function> (Oleg Drokin)</para></listitem>
-<listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
-<listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
-<listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
-<listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
-<listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
-<listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
-<listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
-<listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
-<listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
-<listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
-<listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
-<listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3-2">
- <title>Release 7.3.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-02-04</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.3.1.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.2</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.3.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
-<listitem><para>Fix <application>pg_dump</application> core dump when dumping views having comments</para></listitem>
-<listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
-<listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
-<listitem><para>Increase default value of max_fsm_relations</para></listitem>
-<listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
-<listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
-<listitem><para>Fix problems with loading <application>pg_dump</application> files containing contrib/lo usage</para></listitem>
-<listitem><para>Fix problem with all-numeric user names</para></listitem>
-<listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
-<listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
-<listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
-<listitem><para>Work with bison 1.875</para></listitem>
-<listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
-<listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
-<listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
-<listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
-<listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
-<listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
-<listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
-<listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
-<listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
-<listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
-<listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
-<listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
-<listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
-<listitem><para>Update my2pg, ora2pg</para></listitem>
-<listitem><para>Translation updates</para></listitem>
-<listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
-<listitem><para>fastpath code now checks for privilege to call function</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3-1">
- <title>Release 7.3.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-12-18</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.3.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.3.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.3. However, it should be noted that the main
- <productname>PostgreSQL</productname> interface library, libpq,
- has a new major version number for this release, which might require
- recompilation of client code in certain cases.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
-<listitem><para>Allow <application>pg_dump</application> to work with pre-7.2 servers (Philip)</para></listitem>
-<listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
-<listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
-<listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
-<listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
-<listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
-<listitem><para>Optimizer fixes (Tom)</para></listitem>
-<listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
-<listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
-<listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
-<listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
-<listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
-<listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
-<listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
-<listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3">
- <title>Release 7.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-11-27</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>Schemas</term>
- <listitem>
- <para>
- Schemas allow users to create objects in separate namespaces,
- so two people or applications can have tables with the same
- name. There is also a public schema for shared tables.
- Table/index creation can be restricted by removing privileges
- on the public schema.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Drop Column</term>
- <listitem>
- <para>
- <productname>PostgreSQL</productname> now supports the
- <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Table Functions</term>
- <listitem>
- <para>
- Functions returning multiple rows and/or multiple columns are
- now much easier to use than before. You can call such a
- <quote>table function</quote> in the <literal>SELECT</literal>
- <literal>FROM</literal> clause, treating its output like a
- table. Also, <application>PL/pgSQL</application> functions can
- now return sets.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Prepared Queries</term>
- <listitem>
- <para>
- <productname>PostgreSQL</productname> now supports prepared
- queries, for improved performance.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Dependency Tracking</term>
- <listitem>
- <para>
- <productname>PostgreSQL</productname> now records object
- dependencies, which allows improvements in many areas.
- <command>DROP</command> statements now take either
- <literal>CASCADE</literal> or <literal>RESTRICT</literal> to control whether
- dependent objects are also dropped.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Privileges</term>
- <listitem>
- <para>
- Functions and procedural languages now have privileges, and
- functions can be defined to run with the privileges of their
- creator.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Internationalization</term>
- <listitem>
- <para>
- Both multibyte and locale support are now always enabled.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Logging</term>
- <listitem>
- <para>
- A variety of logging options have been enhanced.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Interfaces</term>
- <listitem>
- <para>
- A large number of interfaces have been moved to <ulink
- url="http://gborg.postgresql.org">http://gborg.postgresql.org</ulink>
- where they can be developed and released independently.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Functions/Identifiers</term>
- <listitem>
- <para>
- By default, functions can now take up to 32 parameters, and
- identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</literal>
- is now deprecated: there are specific <quote>pseudo-datatypes</quote>
- to represent each of the former meanings of <literal>OPAQUE</literal>
- in function argument and result types.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect2>
-
- <sect2>
- <title>Migration to Version 7.3</title>
-
- <para>
- A dump/restore using <application>pg_dump</application> is required for those
- wishing to migrate data from any previous release. If your
- application examines the system catalogs, additional changes will
- be required due to the introduction of schemas in 7.3; for more
- information, see: <ulink
- url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></ulink>.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Pre-6.3 clients are no longer supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>pg_hba.conf</filename> now has a column for the user
- name and additional features. Existing files need to be
- adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Several <filename>postgresql.conf</filename> logging parameters
- have been renamed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>LIMIT #,#</literal> has been disabled; use
- <literal>LIMIT # OFFSET #</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>INSERT</command> statements with column lists must
- specify a value for each specified column. For example,
- <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
- is now invalid. It's still allowed to supply fewer columns than
- expected if the <command>INSERT</command> does not have a column list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <type>serial</type> columns are no longer automatically
- <literal>UNIQUE</literal>; thus, an index will not automatically be
- created.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A <command>SET</command> command inside an aborted transaction
- is now rolled back.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <command>COPY</command> no longer considers missing trailing
- columns to be null. All columns need to be specified.
- (However, one can achieve a similar effect by specifying a
- column list in the <command>COPY</command> command.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The data type <type>timestamp</type> is now equivalent to
- <type>timestamp without time zone</type>, instead of
- <type>timestamp with time zone</type>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Pre-7.3 databases loaded into 7.3 will not have the new object
- dependencies for <type>serial</type> columns, unique
- constraints, and foreign keys. See the directory
- <filename>contrib/adddepend/</filename> for a detailed
- description and a script that will add such dependencies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- An empty string (<literal>''</literal>) is no longer allowed as
- the input into an integer field. Formerly, it was silently
- interpreted as 0.
- </para>
- </listitem>
-
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <sect3>
- <title>Server Operation</title>
-<itemizedlist>
-<listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
-<listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
-<listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
-<listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Performance</title>
-<itemizedlist>
-<listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
-<listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
-<listitem><para>Improve caching of index information (Tom)</para></listitem>
-<listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
-<listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
-<listitem><para>Hash function improvements (Neil)</para></listitem>
-<listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
-<listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
-<listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
-<listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
-<listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
-<listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
-<listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
-<listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
-<listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
-<listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
-<listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
-<listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Privileges</title>
-<itemizedlist>
-<listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
-<listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
-<listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
-<listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
-<listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server Configuration</title>
-<itemizedlist>
-<listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
-<listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
-<listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
-<listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
-<listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
-<listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
-<listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
-<listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
-<listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
-<listitem><para>SSL improvements (Bear Giles)</para></listitem>
-<listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
-<listitem><para>Allow statistics collector to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
-<listitem><para>Add log_duration parameter (Bruce)</para></listitem>
-<listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
-<listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
-<listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Queries</title>
-<itemizedlist>
-<listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
-<listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
-<listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
-<listitem><para>UNION fixes for merging &gt;= 3 columns of different lengths (Tom)</para></listitem>
-<listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
-<listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
-<listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)</para></listitem>
-<listitem><para>Fix for join aliases (Tom)</para></listitem>
-<listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
-<listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
-<listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
-<listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
-<listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
-<listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
-<listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
-<listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
-<listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
-<listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-<itemizedlist>
-<listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
-<listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
-<listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
-<listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
-<listitem><para>Create schema for temporary tables (Tom)</para></listitem>
-<listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
-<listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
-<listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
-<listitem><para>Make rule names unique only per table (Tom)</para></listitem>
-<listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
-<listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
-<listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
-<listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
-<listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
-<listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
-<listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
-<listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
-<listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
-<listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
-<listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
-<listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
-<listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
-<listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
-<listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
-<listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
-<listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
-<listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
-<listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
-<listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
-<listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
-<listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-<itemizedlist>
-<listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
-<listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
-<listitem><para>Make <application>pg_dump</application> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
-<listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
-<listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
-<listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
-<listitem><para>Restrict database comment changes to the current database</para></listitem>
-<listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
-<listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
-<listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
-<listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
-<listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
-<listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
-<listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
-<listitem><para>Fix <application>pg_dump</application> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
-<listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
-<listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
-<listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
-<listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
-<listitem><para>Have SHOW output a query result (Joe)</para></listitem>
-<listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
-<listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
-<listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
-<listitem><para>Add smart quoting, portability improvements to <application>pg_dump</application> output (Peter)</para></listitem>
-<listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
-<listitem><para>Enable large file support, &gt;2G for <application>pg_dump</application> (Peter, Philip Warner, Bruce)</para></listitem>
-<listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
-<listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
-<listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
-<listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
-<listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
-<listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
-<listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
-<listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Data Types and Functions</title>
-<itemizedlist>
-<listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
-<listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
-<listitem><para>Fix for array slice extraction (Tom)</para></listitem>
-<listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
-<listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
-<listitem><para>Add domain support (Rod)</para></listitem>
-<listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
-<listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
-<listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
-<listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
-<listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
-<listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
-<listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
-<listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
-<listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
-<listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
-<listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
-<listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
-<listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
-<listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
-<listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
-<listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
-<listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
-<listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
-<listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
-<listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
-<listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
-<listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
-<listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
-<listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
-<listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
-<listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
-<listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
-<listitem><para>Add current_database() (Rod)</para></listitem>
-<listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
-<listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
-<listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
-<listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
-<listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
-<listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Internationalization</title>
-<itemizedlist>
-<listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
-<listitem><para>Enable locale support by default (Peter)</para></listitem>
-<listitem><para>Add locale variables (Peter)</para></listitem>
-<listitem><para>Escape byes &gt;= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
-<listitem><para>Add locale awareness to regular expression character classes</para></listitem>
-<listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
-<listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
-<listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
-<listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
-<listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
-<listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
-<listitem><para>New and updated translations</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server-side Languages</title>
-<itemizedlist>
-<listitem><para>Allow recursive SQL function (Peter)</para></listitem>
-<listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
-<listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
-<listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
-<listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
-<listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
-<listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>psql</title>
-<itemizedlist>
-<listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
-<listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
-<listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
-<listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
-<listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
-<listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
-<listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
-<listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
-<listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
-<listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>libpq</title>
-<itemizedlist>
-<listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
-<listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
-<listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
-<listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
-<listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
-<listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
-<listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
-<listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>JDBC</title>
-<itemizedlist>
-<listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
-<listitem><para>Add JDBC 3 support (Barry)</para></listitem>
-<listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
-<listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
-<listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
-<listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
-<listitem><para>Add query cancel capability</para></listitem>
-<listitem><para>Add refresh row (Dave)</para></listitem>
-<listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
-<listitem><para>Add support for prepared statements (Barry)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Miscellaneous Interfaces</title>
-<itemizedlist>
-<listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
-<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
-<listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
-<listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
-<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
-<listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-<itemizedlist>
-<listitem><para>Fix for parallel make (Peter)</para></listitem>
-<listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
-<listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
-<listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
-<listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
-<listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
-<listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
-<listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
-<listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
-<listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
-<listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
-<listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
-<listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
-<listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
-<listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
-<listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
-<listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
-<listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
-<listitem><para>Bison &gt;= 1.50 now required for developer builds</para></listitem>
-<listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
-<listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
-<listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
-<listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
-<listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
-<listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
-<listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
-<listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
-<listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
-<listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
-<listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
-<listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
-<listitem><para>Add Posix semaphore support (Tom)</para></listitem>
-<listitem><para>Document need for reindex (Bruce)</para></listitem>
-<listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
-<listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
-<listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
-<listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
-<listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
-<listitem><para>Remove unused system table columns (Peter)</para></listitem>
-<listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
-<listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
-<listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
-<listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
-<listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
-<listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
-<listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-<itemizedlist>
-<listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
-<listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
-<listitem><para>Upgrade /contrib/mysql</para></listitem>
-<listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
-<listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
-<listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
-<listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
-<listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
-<listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
-<listitem><para>Update /contrib/dblink (Joe)</para></listitem>
-<listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
-<listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
-<listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
-<listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
-<listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
-<listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
-<listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
-<listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
-<listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
-<listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
-<listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
-</itemizedlist>
- </sect3>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-8">
- <title>Release 7.2.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-05-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.2.7, including one
- security-related issue.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.8</title>
-
- <para>
- A dump/restore is not required for those running 7.2.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for
-<type>TIME WITH TIME ZONE</type> values</para></listitem>
-<listitem><para>Additional buffer overrun checks in plpgsql
-(Neil)</para></listitem>
-<listitem><para>Fix pg_dump to dump index names and trigger names containing
-<literal>%</literal> correctly (Neil)</para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</function> from dumping core for
-month-related formats</para></listitem>
-<listitem><para>Fix <filename>contrib/pgcrypto</filename> for newer OpenSSL builds
-(Marko Kreen)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-7">
- <title>Release 7.2.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2005-01-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.2.6, including several
- security-related issues.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.7</title>
-
- <para>
- A dump/restore is not required for those running 7.2.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</command> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</command> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input. This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Fix display of negative intervals in SQL and GERMAN
-datestyles</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-6">
- <title>Release 7.2.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-10-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.2.5.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.2.6</title>
-
- <para>
- A dump/restore is not required for those running 7.2.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible failure to update hint bits on disk</para>
-<para>
-Under rare circumstances this oversight could lead to
-<quote>could not access transaction status</quote> failures, which qualifies
-it as a potential-data-loss bug.
-</para></listitem>
-<listitem><para>Ensure that hashed outer join does not miss tuples</para>
-<para>
-Very large left joins using a hash join plan could fail to output unmatched
-left-side rows given just the right data distribution.
-</para></listitem>
-<listitem><para>Disallow running pg_ctl as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
-<para>
-This has been reported as a security issue, though it's hardly worthy of
-concern since there is no reason for non-developers to use this script anyway.
-</para></listitem>
-<listitem><para>Update to newer versions of Bison</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-5">
- <title>Release 7.2.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2004-08-16</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 7.2.4.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.2.5</title>
-
- <para>
- A dump/restore is not required for those running 7.2.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible loss of committed transactions during crash</para>
-<para>
-Due to insufficient interlocking between transaction commit and checkpointing,
-it was possible for transactions committed just before the most recent
-checkpoint to be lost, in whole or in part, following a database crash and
-restart. This is a serious bug that has existed
-since <productname>PostgreSQL</productname> 7.1.
-</para></listitem>
-<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
-<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
-<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
-<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
-<listitem><para>Repair memory leaks in pg_dump</para></listitem>
-<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-<sect1 id="release-7-2-4">
- <title>Release 7.2.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2003-01-30</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.2.3,
- including fixes to prevent possible data loss.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.4</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.2.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
-<listitem><para>Prevent VACUUM from being called inside a function (Bruce)</para></listitem>
-<listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
-<listitem><para>Avoid integer overflow during large hash joins</para></listitem>
-<listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
-<listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
-<listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil)</para></listitem>
-<listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-3">
- <title>Release 7.2.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-10-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.2.2,
- including fixes to prevent possible data loss.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.3</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.2.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
-<listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
-<listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
-<listitem><para>Fix possible hang during server shutdown</para></listitem>
-<listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
-<listitem><para>Fix <application>pg_dump</application> to properly dump FULL JOIN USING (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-2">
- <title>Release 7.2.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-08-23</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.2.1.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.2</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.2.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
-<listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
-<listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes &gt; 0x7f (Tatsuo)</para></listitem>
-<listitem><para>Fix for psql and <application>pg_dump</application> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
-<listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
-<listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
-<listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
-<listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
-<listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
-<listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
-<listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
-<listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
-<listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-1">
- <title>Release 7.2.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-03-21</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes for version 7.2.
- </para>
-
- <sect2>
- <title>Migration to Version 7.2.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those
- running version 7.2.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
-<listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-<listitem><para>Cash I/O improvements (Tom)</para></listitem>
-<listitem><para>New Russian FAQ</para></listitem>
-<listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
-<listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
-<listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
-<listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
-<listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
-<listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
-<listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
-<listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
-<listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
-<listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
-<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2">
- <title>Release 7.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2002-02-04</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- This release improves <productname>PostgreSQL</productname> for use in
- high-volume applications.
- </para>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>VACUUM</term>
- <listitem>
- <para>
- Vacuuming no longer locks tables, thus allowing normal user
- access during the vacuum. A new <command>VACUUM FULL</command>
- command does old-style vacuum by locking the table and
- shrinking the on-disk copy of the table.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Transactions</term>
- <listitem>
- <para>
- There is no longer a problem with installations that exceed
- four billion transactions.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>OIDs</term>
- <listitem>
- <para>
- OIDs are now optional. Users can now create tables without
- OIDs for cases where OID usage is excessive.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Optimizer</term>
- <listitem>
- <para>
- The system now computes histogram column statistics during
- <command>ANALYZE</command>, allowing much better optimizer choices.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Security</term>
- <listitem>
- <para>
- A new MD5 encryption option allows more secure storage and
- transfer of passwords. A new Unix-domain socket
- authentication option is available on Linux and BSD systems.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Statistics</term>
- <listitem>
- <para>
- Administrators can use the new table access statistics module
- to get fine-grained information about table and index usage.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Internationalization</term>
- <listitem>
- <para>
- Program and library messages can now be displayed in several
- languages.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect2>
-
- <sect2>
- <title>Migration to Version 7.2</title>
-
- <para>
- A dump/restore using <command>pg_dump</command> is required for
- those wishing to migrate data from any previous release.
- </para>
-
- <para>
- Observe the following incompatibilities:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- The semantics of the <command>VACUUM</command> command have
- changed in this release. You might wish to update your
- maintenance procedures accordingly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In this release, comparisons using <literal>= NULL</literal>
- will always return false (or NULL, more precisely). Previous
- releases automatically transformed this syntax to <literal>IS
- NULL</literal>. The old behavior can be re-enabled using a
- <filename>postgresql.conf</filename> parameter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <filename>pg_hba.conf</filename> and <filename>pg_ident.conf</filename>
- configuration is now only reloaded after receiving a
- <systemitem>SIGHUP</systemitem> signal, not with each connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The function <filename>octet_length()</filename> now returns the uncompressed data length.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The date/time value <literal>'current'</literal> is no longer
- available. You will need to rewrite your applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <literal>timestamp()</literal>, <literal>time()</literal>,
- and <literal>interval()</literal> functions are no longer
- available. Instead of <literal>timestamp()</literal>, use
- <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
- in the next release. You should change your queries to use
- separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
- 20</literal>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <sect3>
- <title>Server Operation</title>
-<itemizedlist>
-<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
-<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
-<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
-<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
-<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
-<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
-<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
-<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
-<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
-<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
-<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
-<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
-<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
-<listitem><para>Long value compression improvement (Tom)</para></listitem>
-<listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
-<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
-<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
-<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
-<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
-<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Performance</title>
-<itemizedlist>
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
-<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
-<listitem><para>Cache improvements (Tom)</para></listitem>
-<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
-<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
-<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
-<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
-<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
-<listitem><para>B-tree splits more efficient (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Privileges</title>
-<itemizedlist>
-<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
-<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
-<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
-<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
-<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
-<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
-<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
-<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Client Authentication</title>
-<itemizedlist>
-<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
-<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
-<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
-<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
-<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
-<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Server Configuration</title>
-<itemizedlist>
-<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
-<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
-<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
-<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
-<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
-<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Queries</title>
-<itemizedlist>
-<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
-<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
-<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
-<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
-<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
-<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
-<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
-<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
-<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Schema Manipulation</title>
-<itemizedlist>
-<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
-<listitem><para>Allow temporary sequences (Bruce)</para></listitem>
-<listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
-<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
-<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
-<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
-<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
-<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>Allow column renaming in views</para></listitem>
-<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
-<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
-<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
-<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
-<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
-<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
-<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Utility Commands</title>
-<itemizedlist>
-<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
-<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
-<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
-<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
-<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
-<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
-<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
-<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
-<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
-<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Data Types and Functions</title>
-<itemizedlist>
-<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
-<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
-<listitem><para>New function bit_length() (Peter E)</para></listitem>
-<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
-<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
-<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
-<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
-<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
-<listitem><para>INET, CIDR operators &lt;&lt; and &lt;&lt;= indexable (Alex Pilosov)</para></listitem>
-<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
-<listitem><para>Bytea comparison improvements, now supports =, &lt;&gt;, &gt;, &gt;=, &lt;, and &lt;=</para></listitem>
-<listitem><para>Bytea now supports B-tree indexes</para></listitem>
-<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
-<listitem><para>Bytea now supports concatenation</para></listitem>
-<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
-<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
-<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
-<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
-<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
-<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
-<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
-<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
-<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
-<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
-<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
-<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
-<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
-<listitem><para>Correct description of translate() function (Bruce)</para></listitem>
-<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
-<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
-<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
-<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
-<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
-<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Internationalization</title>
-<itemizedlist>
-<listitem><para>National language support in psql, <application>pg_dump</application>, libpq, and server (Peter E)</para></listitem>
-<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
-<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
-<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
-<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
-<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
-<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
-<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title><application>PL/pgSQL</application></title>
-<itemizedlist>
-<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
-<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
-<listitem><para>Can now return open cursors (Jan)</para></listitem>
-<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
-<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
-<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
-<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
-<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
-<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
-<listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
-<listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>PL/Perl</title>
-<itemizedlist>
-<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
-<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>PL/Tcl</title>
-<itemizedlist>
-<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
-<listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>PL/Python</title>
-<itemizedlist>
-<listitem><para>...is new (Andrew Bosma)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title><application>psql</application></title>
-<itemizedlist>
-<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Read password from /dev/tty if possible</para></listitem>
-<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
-<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title><application>libpq</application></title>
-<itemizedlist>
-<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
-<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>JDBC</title>
-<itemizedlist>
-<listitem><para>Return OID of INSERT (Ken K)</para></listitem>
-<listitem><para>Handle more data types (Ken K)</para></listitem>
-<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
-<listitem><para>Handle NULL variables (Ken K)</para></listitem>
-<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
-<listitem><para>Improved Druid support</para></listitem>
-<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
-<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
-<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
-<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
-<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
-<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
-<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
-<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
-<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
-<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
-<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
-<listitem><para>Array fixes (Greg Zoller)</para></listitem>
-<listitem><para>Serialize addition </para></listitem>
-<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
-<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
-<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
-<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
-<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
-<listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
-<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
-<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
-<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
-<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
-<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
-<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
-<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>ODBC</title>
-<itemizedlist>
-<listitem><para>Remove query size limit (Hiroshi)</para></listitem>
-<listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
-<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
-<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
-<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
-<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
-<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
-<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
-<listitem><para>MD5 password encryption support (Bruce)</para></listitem>
-<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title><application>ECPG</application></title>
-<itemizedlist>
-<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
-<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
-<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
-<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
-<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
-<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
-<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
-<listitem><para>ECPGfree_auto_mem fixed</para></listitem>
-<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
-<listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Misc. Interfaces</title>
-<itemizedlist>
-<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
-<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
-<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
-<listitem><para>Prevent output of default index op class in <application>pg_dump</application> (Tom)</para></listitem>
-<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Build and Install</title>
-<itemizedlist>
-<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
-<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
-<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
-<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
-<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
-<listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
-<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
-<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
-<listitem><para>Fix parallel make (Peter E)</para></listitem>
-<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
-<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
-<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-<itemizedlist>
-<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
-<listitem><para>New GUC hooks (Tom)</para></listitem>
-<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
-<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
-<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
-<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
-<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
-<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
-<listitem><para>Dynahash portability improvements (Tom)</para></listitem>
-<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
-<listitem><para>Improve signal handling logic (Tom)</para></listitem>
-</itemizedlist>
- </sect3>
-
- <sect3>
- <title>Contrib</title>
-<itemizedlist>
-<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
-<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
-<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
-<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
-<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
-<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
-<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
-<listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
-<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
-</itemizedlist>
- </sect3>
- </sect2>
-</sect1>
-
-
- <sect1 id="release-7-1-3">
- <title>Release 7.1.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2001-08-15</para>
- </formalpara>
-
- <sect2>
- <title>Migration to Version 7.1.3</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.1.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Remove unused WAL segments of large transactions (Tom)
-Multiaction rule fix (Tom)
-PL/pgSQL memory allocation fix (Jan)
-VACUUM buffer fix (Tom)
-Regression test fixes (Tom)
-pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
-Fix subselects with DISTINCT ON or LIMIT (Tom)
-BeOS fix
-Disable COPY TO/FROM a view (Tom)
-Cygwin build (Jason Tishler)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1-2">
- <title>Release 7.1.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2001-05-11</para>
- </formalpara>
-
- <para>
- This has one fix from 7.1.1.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.1.2</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.1.X.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Fix PL/pgSQL SELECTs when returning no rows
-Fix for psql backslash core dump
-Referential integrity privilege fix
-Optimizer fixes
-pg_dump cleanups
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1-1">
- <title>Release 7.1.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2001-05-05</para>
- </formalpara>
-
- <para>
- This has a variety of fixes from 7.1.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.1.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.1.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Fix for numeric MODULO operator (Tom)
-pg_dump fixes (Philip)
-pg_dump can dump 7.0 databases (Philip)
-readline 4.2 fixes (Peter E)
-JOIN fixes (Tom)
-AIX, MSWIN, VAX, N32K fixes (Tom)
-Multibytes fixes (Tom)
-Unicode fixes (Tatsuo)
-Optimizer improvements (Tom)
-Fix for whole rows in functions (Tom)
-Fix for pg_ctl and option strings with spaces (Peter E)
-ODBC fixes (Hiroshi)
-EXTRACT can now take string argument (Thomas)
-Python fixes (Darcy)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1">
- <title>Release 7.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2001-04-13</para>
- </formalpara>
-
- <para>
- This release focuses on removing limitations that have existed in the
- <productname>PostgreSQL</productname> code for many years.
- </para>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>
- Write-ahead Log (WAL)
- </term>
- <listitem>
- <para>
-To maintain database consistency in case of an operating system crash,
-previous releases of <productname>PostgreSQL</productname> have forced
-all data modifications to disk before each transaction commit. With
-WAL, only one log file must be flushed to disk, greatly improving
-performance. If you have been using -F in previous releases to
-disable disk flushes, you might want to consider discontinuing its use.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- TOAST
- </term>
- <listitem>
- <para>
- TOAST - Previous releases had a compiled-in row length limit,
-typically 8k - 32k. This limit made storage of long text fields
-difficult. With TOAST, long rows of any length can be stored with good
-performance.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Outer Joins
- </term>
- <listitem>
- <para>
-We now support outer joins. The UNION/NOT IN
-workaround for outer joins is no longer required. We use the SQL92
-outer join syntax.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Function Manager
- </term>
- <listitem>
- <para>
-The previous C function manager did not
-handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
-function manager does. You can continue using your old custom
-functions, but you might want to rewrite them in the future to use the new
-function manager call interface.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Complex Queries
- </term>
- <listitem>
- <para>
-A large number of complex queries that were
-unsupported in previous releases now work. Many combinations of views,
-aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
-now work properly. Inherited tables are now accessed by default.
-Subqueries in FROM are now supported.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <sect2>
- <title>Migration to Version 7.1</title>
-
- <para>
- A dump/restore using pg_dump is required for those wishing to migrate
- data from any previous release.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Many multibyte/Unicode/locale fixes (Tatsuo and others)
-More reliable ALTER TABLE RENAME (Tom)
-Kerberos V fixes (David Wragg)
-Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
-Prompt username/password on standard error (Bruce)
-Large objects inv_read/inv_write fixes (Tom)
-Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
- Daniel Baldoni)
-Prevent query expressions from leaking memory (Tom)
-Allow UPDATE of arrays elements (Tom)
-Wake up lock waiters during cancel (Hiroshi)
-Fix rare cursor crash when using hash join (Tom)
-Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
-Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
-Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
-Fix PL/Perl (Alex Kapranoff)
-Disallow LOCK on views (Mark Hollomon)
-Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
-Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
-Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
-Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
-Fix rare failure with TRUNCATE command (Tom)
-Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
- DISTINCT, ORDER BY, SELECT...INTO (Tom)
-Fix parser failures during aborted transactions (Tom)
-Allow temporary relations to properly clean up indexes (Bruce)
-Fix VACUUM problem with moving rows in same page (Tom)
-Modify pg_dump to better handle user-defined items in template1 (Philip)
-Allow LIMIT in VIEW (Tom)
-Require cursor FETCH to honor LIMIT (Tom)
-Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
-Allow ORDER BY, LIMIT in subqueries (Tom)
-Allow UNION in CREATE RULE (Tom)
-Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
-Store initdb collation in pg_control so collation cannot be changed (Tom)
-Fix INSERT...SELECT with rules (Tom)
-Fix FOR UPDATE inside views and subselects (Tom)
-Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
-Fix lpad() and rpad() to handle length less than input string (Tom)
-Fix use of NOTIFY in some rules (Tom)
-Overhaul btree code (Tom)
-Fix NOT NULL use in PL/pgSQL variables (Tom)
-Overhaul GIST code (Oleg)
-Fix CLUSTER to preserve constraints and column default (Tom)
-Improved deadlock detection handling (Tom)
-Allow multiple SERIAL columns in a table (Tom)
-Prevent occasional index corruption (Vadim)
-
-Enhancements
-------------
-Add OUTER JOINs (Tom)
-Function manager overhaul (Tom)
-Allow ALTER TABLE RENAME on indexes (Tom)
-Improve CLUSTER (Tom)
-Improve ps status display for more platforms (Peter E, Marc)
-Improve CREATE FUNCTION failure message (Ross)
-JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
- Gunnar)
-Grand Unified Configuration scheme/GUC. Many options can now be set in
- data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
-Improved handling of file descriptor cache (Tom)
-New warning code about auto-created table alias entries (Bruce)
-Overhaul initdb process (Tom, Peter E)
-Overhaul of inherited tables; inherited tables now accessed by default;
- new ONLY key word prevents it (Chris Bitmead, Tom)
-ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
- Michael Fork)
-Allow renaming of temp tables (Tom)
-Overhaul memory manager contexts (Tom)
-pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
-Overhaul pg_dump (Philip Warner)
-Allow pg_hba.conf secondary password file to specify only username (Peter E)
-Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
-New memory leak checker (Karel)
-New SET SESSION CHARACTERISTICS (Thomas)
-Allow nested block comments (Thomas)
-Add WITHOUT TIME ZONE type qualifier (Thomas)
-New ALTER TABLE ADD CONSTRAINT (Stephan)
-Use NUMERIC accumulators for INTEGER aggregates (Tom)
-Overhaul aggregate code (Tom)
-New VARIANCE and STDDEV() aggregates
-Improve dependency ordering of pg_dump (Philip)
-New pg_restore command (Philip)
-New pg_dump tar output option (Philip)
-New pg_dump of large objects (Philip)
-New ESCAPE option to LIKE (Thomas)
-New case-insensitive LIKE - ILIKE (Thomas)
-Allow functional indexes to use binary-compatible type (Tom)
-Allow SQL functions to be used in more contexts (Tom)
-New pg_config utility (Peter E)
-New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
- (Jan)
-New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
-New quote_identifiers() and quote_literal() functions (Jan)
-New ALTER TABLE table OWNER TO user command (Mark Hollomon)
-Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
-Update PyGreSQL to version 3.1 (D'Arcy)
-Store tables as files named by OID (Vadim)
-New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
-Require DROP VIEW to remove views, no DROP TABLE (Mark)
-Allow DROP VIEW view1, view2 (Mark)
-Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
-Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
-New /contrib/pgcrypto hashing functions (Marko Kreen)
-New pg_dumpall --globals-only option (Peter E)
-New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
-New AT TIME ZONE syntax (Thomas)
-Allow location of Unix domain socket to be configurable (David J. MacKenzie)
-Allow postmaster to listen on a specific IP address (David J. MacKenzie)
-Allow socket path name to be specified in hostname by using leading slash
- (David J. MacKenzie)
-Allow CREATE DATABASE to specify template database (Tom)
-New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
-New /contrib/rserv replication toolkit (Vadim)
-New file format for COPY BINARY (Tom)
-New /contrib/oid2name to map numeric files to table names (B Palmer)
-New "idle in transaction" ps status message (Marc)
-Update to pgaccess 0.98.7 (Constantin Teodorescu)
-pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
-Add rudimentary dependency checking to pg_dump (Philip)
-
-Types
------
-Fix INET/CIDR type ordering and add new functions (Tom)
-Make OID behave as an unsigned type (Tom)
-Allow BIGINT as synonym for INT8 (Peter E)
-New int2 and int8 comparison operators (Tom)
-New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
-CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
-New GIST seg/cube examples (Gene Selkov)
-Improved round(numeric) handling (Tom)
-Fix CIDR output formatting (Tom)
-New CIDR abbrev() function (Tom)
-
-Performance
------------
-Write-Ahead Log (WAL) to provide crash recovery with less performance
- overhead (Vadim)
-ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
-Reduced file seeks (Denis Perchine)
-Improve BTREE code for duplicate keys (Tom)
-Store all large objects in a single table (Denis Perchine, Tom)
-Improve memory allocation performance (Karel, Tom)
-
-Source Code
------------
-New function manager call conventions (Tom)
-SGI portability fixes (David Kaelbling)
-New configure --enable-syslog option (Peter E)
-New BSDI README (Bruce)
-configure script moved to top level, not /src (Peter E)
-Makefile/configuration/compilation overhaul (Peter E)
-New configure --with-python option (Peter E)
-Solaris cleanups (Peter E)
-Overhaul /contrib Makefiles (Karel)
-New OpenSSL configuration option (Magnus, Peter E)
-AIX fixes (Andreas)
-QNX fixes (Maurizio)
-New heap_open(), heap_openr() API (Tom)
-Remove colon and semi-colon operators (Thomas)
-New pg_class.relkind value for views (Mark Hollomon)
-Rename ichar() to chr() (Karel)
-New documentation for btrim(), ascii(), chr(), repeat() (Karel)
-Fixes for NT/Cygwin (Pete Forman)
-AIX port fixes (Andreas)
-New BeOS port (David Reid, Cyril Velter)
-Add proofreader's changes to docs (Addison-Wesley, Bruce)
-New Alpha spinlock code (Adriaan Joubert, Compaq)
-UnixWare port overhaul (Peter E)
-New macOS (Darwin) port (Peter Bierman, Bruce Hartzler)
-New FreeBSD Alpha port (Alfred)
-Overhaul shared memory segments (Tom)
-Add IBM S/390 support (Neale Ferguson)
-Moved macmanuf to /contrib (Larry Rosenman)
-Syslog improvements (Larry Rosenman)
-New template0 database that contains no user additions (Tom)
-New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
-Allow NetBSD's libedit instead of readline (Peter)
-Improved assembly language source code format (Bruce)
-New contrib/pg_logger
-New --template option to createdb
-New contrib/pg_control utility (Oliver)
-New FreeBSD tools ipc_check, start-scripts/freebsd
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-3">
- <title>Release 7.0.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2000-11-11</para>
- </formalpara>
-
- <para>
- This has a variety of fixes from 7.0.2.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.0.3</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.0.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Jdbc fixes (Peter)
-Large object fix (Tom)
-Fix lean in COPY WITH OIDS leak (Tom)
-Fix backwards-index-scan (Tom)
-Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
-Add --enable-syslog to configure (Marc)
-Fix abort transaction at backend exit in rare cases (Tom)
-Fix for psql \l+ when multibyte enabled (Tatsuo)
-Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
-Make vacuum always flush buffers (Tom)
-Fix to allow cancel while waiting for a lock (Hiroshi)
-Fix for memory allocation problem in user authentication code (Tom)
-Remove bogus use of int4out() (Tom)
-Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
-Fix for failure of triggers on heap open in certain cases (Jeroen van
- Vianen)
-Fix for erroneous selectivity of not-equals (Tom)
-Fix for erroneous use of strcmp() (Tom)
-Fix for bug where storage manager accesses items beyond end of file
- (Tom)
-Fix to include kernel errno message in all smgr elog messages (Tom)
-Fix for '.' not in PATH at build time (SL Baur)
-Fix for out-of-file-descriptors error (Tom)
-Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
-Fix for subselect in targetlist of Append node (Tom)
-Fix for mergejoin plans (Tom)
-Fix TRUNCATE failure on relations with indexes (Tom)
-Avoid database-wide restart on write error (Hiroshi)
-Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
-Fix VACUUM problem with moving chain of update row versions when source
- and destination of a row version lie on the same page (Tom)
-Fix user.c CommandCounterIncrement (Tom)
-Fix for AM/PM boundary problem in to_char() (Karel Zak)
-Fix TIME aggregate handling (Tom)
-Fix to_char() to avoid coredump on NULL input (Tom)
-Buffer fix (Tom)
-Fix for inserting/copying longer multibyte strings into char() data
- types (Tatsuo)
-Fix for crash of backend, on abort (Tom)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-2">
- <title>Release 7.0.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2000-06-05</para>
- </formalpara>
-
- <para>
- This is a repackaging of 7.0.1 with added documentation.
- </para>
-
-
- <sect2>
- <title>Migration to Version 7.0.2</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Added documentation to tarball.
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-1">
- <title>Release 7.0.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2000-06-01</para>
- </formalpara>
-
- <para>
- This is a cleanup release for 7.0.
- </para>
-
- <sect2>
- <title>Migration to Version 7.0.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 7.0.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Fix many CLUSTER failures (Tom)
-Allow ALTER TABLE RENAME works on indexes (Tom)
-Fix plpgsql to handle datetime-&gt;timestamp and timespan-&gt;interval (Bruce)
-New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
-Fix the off by one errors in ResultSet from 6.5.3, and more.
-jdbc ResultSet fixes (Joseph Shraibman)
-optimizer tunings (Tom)
-Fix create user for pgaccess
-Fix for UNLISTEN failure
-IRIX fixes (David Kaelbling)
-QNX fixes (Andreas Kardos)
-Reduce COPY IN lock level (Tom)
-Change libpqeasy to use PQconnectdb() style parameters (Bruce)
-Fix pg_dump to handle OID indexes (Tom)
-Fix small memory leak (Tom)
-Solaris fix for createdb/dropdb (Tatsuo)
-Fix for non-blocking connections (Alfred Perlstein)
-Fix improper recovery after RENAME TABLE failures (Tom)
-Copy pg_ident.conf.sample into /lib directory in install (Bruce)
-Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
-Fix too long syslog message (Tatsuo)
-Fix problem with quoted indexes that are too long (Tom)
-JDBC ResultSet.getTimestamp() fix (Gregory Krasnow &amp; Floyd Marinescu)
-ecpg changes (Michael)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-7-0">
- <title>Release 7.0</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2000-05-08</para>
- </formalpara>
-
- <para>
- This release contains improvements in many areas, demonstrating
- the continued growth of <productname>PostgreSQL</productname>.
- There are more improvements and fixes in 7.0 than in any previous
- release. The developers have confidence that this is the best
- release yet; we do our best to put out only solid releases, and
- this one is no exception.
- </para>
-
- <para>
- Major changes in this release:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>
- Foreign Keys
- </term>
- <listitem>
- <para>
- Foreign keys are now implemented, with the exception of PARTIAL MATCH
- foreign keys. Many users have been asking for this feature, and we are
- pleased to offer it.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Optimizer Overhaul
- </term>
- <listitem>
- <para>
- Continuing on work started a year ago, the optimizer has been
- improved, allowing better query plan selection and faster performance
- with less memory usage.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Updated <application>psql</application>
- </term>
- <listitem>
- <para>
- <application>psql</application>, our interactive terminal monitor, has been
- updated with a variety of new features. See the <application>psql</application> manual page for details.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Join Syntax
- </term>
- <listitem>
- <para>
- SQL92 join syntax is now supported, though only as
- <literal>INNER JOIN</literal> for this release. <literal>JOIN</literal>,
- <literal>NATURAL JOIN</literal>, <literal>JOIN</literal>/<literal>USING</literal>,
- and <literal>JOIN</literal>/<literal>ON</literal> are available, as are
- column correlation names.
- </para>
- </listitem>
-
- </varlistentry>
- </variablelist>
-
- <sect2>
- <title>Migration to Version 7.0</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>
- is required for those wishing to migrate data from any
- previous release of <productname>PostgreSQL</productname>.
- For those upgrading from 6.5.*, you can instead use
- <application>pg_upgrade</application> to upgrade to this
- release; however, a full dump/reload installation is always the
- most robust method for upgrades.
- </para>
-
- <para>
- Interface and compatibility issues to consider for the new
- release include:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- The date/time types <type>datetime</type> and
- <type>timespan</type> have been superseded by the
- SQL92-defined types <type>timestamp</type> and
- <type>interval</type>. Although there has been some effort to
- ease the transition by allowing
- <productname>PostgreSQL</productname> to recognize
- the deprecated type names and translate them to the new type
- names, this mechanism cannot be completely transparent to
- your existing application.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The optimizer has been substantially improved in the area of
- query cost estimation. In some cases, this will result in
- decreased query times as the optimizer makes a better choice
- for the preferred plan. However, in a small number of cases,
- usually involving pathological distributions of data, your
- query times might go up. If you are dealing with large amounts
- of data, you might want to check your queries to verify
- performance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
- interfaces have been upgraded and extended.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The string function <function>CHAR_LENGTH</function> is now a
- native function. Previous versions translated this into a call
- to <function>LENGTH</function>, which could result in
- ambiguity with other types implementing
- <function>LENGTH</function> such as the geometric types.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Prevent function calls exceeding maximum number of arguments (Tom)
-Improve CASE construct (Tom)
-Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
-Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
-Fix GROUP BY scan bug (Tom)
-Improvements in SQL grammar processing (Tom)
-Fix for views involved in INSERT ... SELECT ... (Tom)
-Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
-Fix for subselects in INSERT ... SELECT (Tom)
-Prevent INSERT ... SELECT ... ORDER BY (Tom)
-Fixes for relations greater than 2GB, including vacuum
-Improve propagating system table changes to other backends (Tom)
-Improve propagating user table changes to other backends (Tom)
-Fix handling of temp tables in complex situations (Bruce, Tom)
-Allow table locking at table open, improving concurrent reliability (Tom)
-Properly quote sequence names in pg_dump (Ross J. Reedstrom)
-Prevent DROP DATABASE while others accessing
-Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
-Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
-Fix pg_upgrade so it works for MVCC (Tom)
-Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) &gt; 1) (Tom)
-Fix for "f1 datetime DEFAULT 'now'" (Tom)
-Fix problems with CURRENT_DATE used in DEFAULT (Tom)
-Allow comment-only lines, and ;;; lines too. (Tom)
-Improve recovery after failed disk writes, disk full (Hiroshi)
-Fix cases where table is mentioned in FROM but not joined (Tom)
-Allow HAVING clause without aggregate functions (Tom)
-Fix for "--" comment and no trailing newline, as seen in perl interface
-Improve pg_dump failure error reports (Bruce)
-Allow sorts and hashes to exceed 2GB file sizes (Tom)
-Fix for pg_dump dumping of inherited rules (Tom)
-Fix for NULL handling comparisons (Tom)
-Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
-Fix for dbname with dash
-Prevent DROP INDEX from interfering with other backends (Tom)
-Fix file descriptor leak in verify_password()
-Fix for "Unable to identify an operator =$" problem
-Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
-Fix for recursive exit call (Massimo)
-Fix for extra-long timezones (Jeroen van Vianen)
-Make pg_dump preserve primary key information (Peter E)
-Prevent databases with single quotes (Peter E)
-Prevent DROP DATABASE inside transaction (Peter E)
-ecpg memory leak fixes (Stephen Birch)
-Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
-Y2K timestamp fix (Massimo)
-Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
-Fix for views with tables/columns containing spaces (Tom)
-Prevent privileges on indexes (Peter E)
-Fix for spinlock stuck problem when error is generated (Hiroshi)
-Fix ipcclean on Linux
-Fix handling of NULL constraint conditions (Tom)
-Fix memory leak in odbc driver (Nick Gorham)
-Fix for privilege check on UNION tables (Tom)
-Fix to allow SELECT 'a' LIKE 'a' (Tom)
-Fix for SELECT 1 + NULL (Tom)
-Fixes to CHAR
-Fix log() on numeric type (Tom)
-Deprecate ':' and ';' operators
-Allow vacuum of temporary tables
-Disallow inherited columns with the same name as new columns
-Recover or force failure when disk space is exhausted (Hiroshi)
-Fix INSERT INTO ... SELECT with AS columns matching result columns
-Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
-Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
-Fix UNION with LIMIT
-Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
-Fix CREATE TABLE test(col char(2) DEFAULT user)
-Fix mismatched types in CREATE TABLE ... DEFAULT
-Fix SELECT * FROM pg_class where oid in (0,-1)
-Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
-Prevent user who can create databases can modifying pg_database table (Peter E)
-Fix btree to give a useful elog when key &gt; 1/2 (page - overhead) (Tom)
-Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
-
-Enhancements
-------------
-New CLI interface include file sqlcli.h, based on SQL3/SQL98
-Remove all limits on query length, row length limit still exists (Tom)
-Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
-Add TRUNCATE command to quickly truncate relation (Mike Mascari)
-Fix to give super user and createdb user proper update catalog rights (Peter E)
-Allow ecpg bool variables to have NULL values (Christof)
-Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
-Allow ^C to cancel COPY command (Massimo)
-Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
-Function name overloading for dynamically-loaded C functions (Frankpitt)
-Add CmdTuples() to libpq++(Vince)
-New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
-Allow CREATE FUNCTION/WITH clause to be used for all language types
-configure --enable-debug adds -g (Peter E)
-configure --disable-debug removes -g (Peter E)
-Allow more complex default expressions (Tom)
-First real FOREIGN KEY constraint trigger functionality (Jan)
-Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
-Add FOREIGN KEY ... MATCH &lt;unspecified&gt; referential actions (Don Baccus)
-Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
-Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
-Change pgeasy connectdb() parameter ordering (Bruce)
-Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
-Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
-libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
-Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
-Make USING in COPY optional (Bruce)
-Allow subselects in the target list (Tom)
-Allow subselects on the left side of comparison operators (Tom)
-New parallel regression test (Jan)
-Change backend-side COPY to write files with permissions 644 not 666 (Tom)
-Force permissions on PGDATA directory to be secure, even if it exists (Tom)
-Added psql LASTOID variable to return last inserted oid (Peter E)
-Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
-Add privilege check for vacuum (Peter E)
-New libpq functions to allow asynchronous connections: PQconnectStart(),
- PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
- PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
-New libpq PQsetenv() function (Ewan Mellor)
-create/alter user extension (Peter E)
-New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
-New scripts for create/drop user/db (Peter E)
-Major psql overhaul (Peter E)
-Add const to libpq interface (Peter E)
-New libpq function PQoidValue (Peter E)
-Show specific non-aggregate causing problem with GROUP BY (Tom)
-Make changes to pg_shadow recreate pg_pwd file (Peter E)
-Add aggregate(DISTINCT ...) (Tom)
-Allow flag to control COPY input/output of NULLs (Peter E)
-Make postgres user have a password by default (Peter E)
-Add CREATE/ALTER/DROP GROUP (Peter E)
-All administration scripts now support --long options (Peter E, Karel)
-Vacuumdb script now supports --all option (Peter E)
-ecpg new portable FETCH syntax
-Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
- and EXEC SQL ENDIF directives
-Add pg_ctl script to control backend start-up (Tatsuo)
-Add postmaster.opts.default file to store start-up flags (Tatsuo)
-Allow --with-mb=SQL_ASCII
-Increase maximum number of index keys to 16 (Bruce)
-Increase maximum number of function arguments to 16 (Bruce)
-Allow configuration of maximum number of index keys and arguments (Bruce)
-Allow unprivileged users to change their passwords (Peter E)
-Password authentication enabled; required for new users (Peter E)
-Disallow dropping a user who owns a database (Peter E)
-Change initdb option --with-mb to --enable-multibyte
-Add option for initdb to prompts for superuser password (Peter E)
-Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
-Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
-New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
-libpq non-blocking mode (Alfred Perlstein)
-Improve conversion of types in casts that don't specify a length
-New plperl internal programming language (Mark Hollomon)
-Allow COPY IN to read file that do not end with a newline (Tom)
-Indicate when long identifiers are truncated (Tom)
-Allow aggregates to use type equivalency (Peter E)
-Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
- conversion functions (Karel Zak &lt;zakkr@zf.jcu.cz&gt;)
-Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
-Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
-Add NUMERIC and int8 types to ODBC
-Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
-Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
-Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
-Enable backward sequential scan even after reaching EOF (Hiroshi)
-Add btree indexing of boolean values, &gt;= and &lt;= (Don Baccus)
-Print current line number when COPY FROM fails (Massimo)
-Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
-Add DEC as synonym for DECIMAL (Thomas)
-Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
-Implement SQL92 column aliases (aka correlation names) (Thomas)
-Implement SQL92 join syntax (Thomas)
-Make INTERVAL reserved word allowed as a column identifier (Thomas)
-Implement REINDEX command (Hiroshi)
-Accept ALL in aggregate function SUM(ALL col) (Tom)
-Prevent GROUP BY from using column aliases (Tom)
-New psql \encoding option (Tatsuo)
-Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
-Allow negation of a negative number in all cases
-Add ecpg descriptors (Christof, Michael)
-Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
-Allow casts with length, like foo::char(8)
-New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
-Add support for SJIS user defined characters (Tatsuo)
-Larger views/rules supported
-Make libpq's PQconndefaults() thread-safe (Tom)
-Disable // as comment to be ANSI conforming, should use -- (Tom)
-Allow column aliases on views CREATE VIEW name (collist)
-Fixes for views with subqueries (Tom)
-Allow UPDATE table SET fld = (SELECT ...) (Tom)
-SET command options no longer require quotes
-Update pgaccess to 0.98.6
-New SET SEED command
-New pg_options.sample file
-New SET FSYNC command (Massimo)
-Allow pg_descriptions when creating tables
-Allow pg_descriptions when creating types, columns, and functions
-Allow psql \copy to allow delimiters (Peter E)
-Allow psql to print nulls as distinct from "" [null] (Peter E)
-
-Types
------
-Many array fixes (Tom)
-Allow bare column names to be subscripted as arrays (Tom)
-Improve type casting of int and float constants (Tom)
-Cleanups for int8 inputs, range checking, and type conversion (Tom)
-Fix for SELECT timespan('21:11:26'::time) (Tom)
-netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
-Add btree index on NUMERIC (Jan)
-Perl fix for large objects containing NUL characters (Douglas Thomson)
-ODBC fix for large objects (free)
-Fix indexing of cidr data type
-Fix for Ethernet MAC addresses (macaddr type) comparisons
-Fix for date/time types when overflows happened in computations (Tom)
-Allow array on int8 (Peter E)
-Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
-Allow NUMERIC arrays
-Fix bugs in NUMERIC ceil() and floor() functions (Tom)
-Make char_length()/octet_length including trailing blanks (Tom)
-Made abstime/reltime use int4 instead of time_t (Peter E)
-New lztext data type for compressed text fields
-Revise code to handle coercion of int and float constants (Tom)
-Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
-NUMERIC now accepts scientific notation (Tom)
-NUMERIC to int4 rounds (Tom)
-Convert float4/8 to NUMERIC properly (Tom)
-Allow type conversion with NUMERIC (Thomas)
-Make ISO date style (2000-02-16 09:33) the default (Thomas)
-Add NATIONAL CHAR [ VARYING ] (Thomas)
-Allow NUMERIC round and trunc to accept negative scales (Tom)
-New TIME WITH TIME ZONE type (Thomas)
-Add MAX()/MIN() on time type (Thomas)
-Add abs(), mod(), fac() for int8 (Thomas)
-Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
-Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
-Add exp() and ln() for NUMERIC type
-Rename NUMERIC power() to pow() (Thomas)
-Improved TRANSLATE() function (Edwin Ramirez, Tom)
-Allow X=-Y operators (Tom)
-Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
-Allow LOCALE to use indexes in regular expression searches (Tom)
-Allow creation of functional indexes to use default types
-
-Performance
------------
-Prevent exponential space consumption with many AND's and OR's (Tom)
-Collect attribute selectivity values for system columns (Tom)
-Reduce memory usage of aggregates (Tom)
-Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
-Fix r-tree index optimizer selectivity (Thomas)
-Improve optimizer selectivity computations and functions (Tom)
-Optimize btree searching for cases where many equal keys exist (Tom)
-Enable fast LIKE index processing only if index present (Tom)
-Re-use free space on index pages with duplicates (Tom)
-Improve hash join processing (Tom)
-Prevent descending sort if result is already sorted(Hiroshi)
-Allow commuting of index scan query qualifications (Tom)
-Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
-Allocate large memory requests in fix-sized chunks for performance (Tom)
-Fix vacuum's performance by reducing memory allocation requests (Tom)
-Implement constant-expression simplification (Bernard Frankpitt, Tom)
-Use secondary columns to be used to determine start of index scan (Hiroshi)
-Prevent quadruple use of disk space when doing internal sorting (Tom)
-Faster sorting by calling fewer functions (Tom)
-Create system indexes to match all system caches (Bruce, Hiroshi)
-Make system caches use system indexes (Bruce)
-Make all system indexes unique (Bruce)
-Improve pg_statistic management for VACUUM speed improvement (Tom)
-Flush backend cache less frequently (Tom, Hiroshi)
-COPY now reuses previous memory allocation, improving performance (Tom)
-Improve optimization cost estimation (Tom)
-Improve optimizer estimate of range queries x &gt; lowbound AND x &lt; highbound (Tom)
-Use DNF instead of CNF where appropriate (Tom, Taral)
-Further cleanup for OR-of-AND WHERE-clauses (Tom)
-Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
-Smarter optimizer computations for random index page access (Tom)
-New SET variable to control optimizer costs (Tom)
-Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
-Reduce optimizer internal housekeeping of join paths for speedup (Tom)
-Major subquery speedup (Tom)
-Fewer fsync writes when fsync is not disabled (Tom)
-Improved LIKE optimizer estimates (Tom)
-Prevent fsync in SELECT-only queries (Vadim)
-Make index creation use psort code, because it is now faster (Tom)
-Allow creation of sort temp tables &gt; 1 Gig
-
-Source Tree Changes
--------------------
-Fix for linux PPC compile
-New generic expression-tree-walker subroutine (Tom)
-Change form() to varargform() to prevent portability problems
-Improved range checking for large integers on Alphas
-Clean up #include in /include directory (Bruce)
-Add scripts for checking includes (Bruce)
-Remove un-needed #include's from *.c files (Bruce)
-Change #include's to use &lt;&gt; and "" as appropriate (Bruce)
-Enable Windows compilation of libpq
-Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
-Overhaul of optimizer data structures (Tom)
-Fix to cygipc library (Yutaka Tanida)
-Allow pgsql to work on newer Cygwin snapshots (Dan)
-New catalog version number (Tom)
-Add Linux ARM
-Rename heap_replace to heap_update
-Update for QNX (Dr. Andreas Kardos)
-New platform-specific regression handling (Tom)
-Rename oid8 -&gt; oidvector and int28 -&gt; int2vector (Bruce)
-Included all yacc and lex files into the distribution (Peter E.)
-Remove lextest, no longer needed (Peter E)
-Fix for libpq and psql on Windows (Magnus)
-Internally change datetime and timespan into timestamp and interval (Thomas)
-Fix for plpgsql on BSD/OS
-Add SQL_ASCII test case to the regression test (Tatsuo)
-configure --with-mb now deprecated (Tatsuo)
-NT fixes
-NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
-Fixes for Alpha compiles
-New multibyte encodings
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-6-5-3">
- <title>Release 6.5.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1999-10-13</para>
- </formalpara>
-
- <para>
- This is basically a cleanup release for 6.5.2. We have added a new
- <application>PgAccess</application> that was missing in 6.5.2, and installed an NT-specific fix.
- </para>
-
-
- <sect2>
- <title>Migration to Version 6.5.3</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 6.5.*.
- </para>
- </sect2>
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Updated version of pgaccess 0.98
-NT-specific patch
-Fix dumping rules on inherited tables
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
- <sect1 id="release-6-5-2">
- <title>Release 6.5.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1999-09-15</para>
- </formalpara>
-
- <para>
- This is basically a cleanup release for 6.5.1. We have fixed a variety of
- problems reported by 6.5.1 users.
- </para>
-
-
- <sect2>
- <title>Migration to Version 6.5.2</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 6.5.*.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-subselect+CASE fixes(Tom)
-Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
-Fixes for CASE in WHERE join clauses(Tom)
-Fix BTScan abort(Tom)
-Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
-Improve it so that it checks for multicolumn constraints(Thomas)
-Fix for Windows making problem with MB enabled(Hiroki Kataoka)
-Allow BSD yacc and bison to compile pl code(Bruce)
-Fix SET NAMES working
-int8 fixes(Thomas)
-Fix vacuum's memory consumption(Hiroshi,Tatsuo)
-Reduce the total memory consumption of vacuum(Tom)
-Fix for timestamp(datetime)
-Rule deparsing bugfixes(Tom)
-Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
-This is to re-use space on index pages freed by vacuum(Vadim)
-document -x for pg_dump(Bruce)
-Fix for unary operators in rule deparser(Tom)
-Comment out FileUnlink of excess segments during mdtruncate()(Tom)
-IRIX linking fix from Yu Cao &gt;yucao@falcon.kla-tencor.com&lt;
-Repair logic error in LIKE: should not return LIKE_ABORT
- when reach end of pattern before end of text(Tom)
-Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
-Updated version of pgaccess 0.98
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-6-5-1">
- <title>Release 6.5.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1999-07-15</para>
- </formalpara>
-
- <para>
- This is basically a cleanup release for 6.5. We have fixed a variety of
- problems reported by 6.5 users.
- </para>
-
- <sect2>
- <title>Migration to Version 6.5.1</title>
-
- <para>
- A dump/restore is <emphasis>not</emphasis> required for those running
- 6.5.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Add NT README file
-Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
-Remove QUERY_LIMIT, use SELECT...LIMIT
-Fix for EXPLAIN on inheritance(Tom)
-Patch to allow vacuum on multisegment tables(Hiroshi)
-R-Tree optimizer selectivity fix(Tom)
-ACL file descriptor leak fix(Atsushi Ogawa)
-New expression subtree code(Tom)
-Avoid disk writes for read-only transactions(Vadim)
-Fix for removal of temp tables if last transaction was aborted(Bruce)
-Fix to prevent too large row from being created(Bruce)
-plpgsql fixes
-Allow port numbers 32k - 64k(Bruce)
-Add ^ precedence(Bruce)
-Rename sort files called pg_temp to pg_sorttemp(Bruce)
-Fix for microseconds in time values(Tom)
-Tutorial source cleanup
-New linux_m68k port
-Fix for sorting of NULL's in some cases(Tom)
-Shared library dependencies fixed (Tom)
-Fixed glitches affecting GROUP BY in subselects(Tom)
-Fix some compiler warnings (Tomoaki Nishiyama)
-Add Win1250 (Czech) support (Pavel Behal)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-6-5">
- <title>Release 6.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1999-06-09</para>
- </formalpara>
-
- <para>
- This release marks a major step in the development team's mastery of the source
- code we inherited from Berkeley. You will see we are now easily adding
- major features, thanks to the increasing size and experience of our
- world-wide development team.
- </para>
-
- <para>
- Here is a brief summary of the more notable changes:
-
- <variablelist>
- <varlistentry>
- <term>
- Multiversion concurrency control(MVCC)
- </term>
- <listitem>
- <para>
- This removes our old table-level locking, and replaces it with
- a locking system that is superior to most commercial database
- systems. In a traditional system, each row that is modified
- is locked until committed, preventing reads by other users.
- MVCC uses the natural multiversion nature of
- <productname>PostgreSQL</productname> to allow readers to
- continue reading consistent data during writer activity.
- Writers continue to use the compact pg_log transaction system.
- This is all performed without having to allocate a lock for
- every row like traditional database systems. So, basically,
- we no longer are restricted by simple table-level locking; we
- have something better than row-level locking.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Hot backups from <application>pg_dump</application>
- </term>
- <listitem>
- <para>
- <application>pg_dump</application> takes advantage of the new
- MVCC features to give a consistent database dump/backup while
- the database stays online and available for queries.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Numeric data type
- </term>
- <listitem>
- <para>
- We now have a true numeric data type, with
- user-specified precision.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Temporary tables
- </term>
- <listitem>
- <para>
- Temporary tables are guaranteed to have unique names
- within a database session, and are destroyed on session exit.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- New SQL features
- </term>
- <listitem>
- <para>
- We now have CASE, INTERSECT, and EXCEPT statement
- support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
- SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Speedups
- </term>
- <listitem>
- <para>
- We continue to speed up <productname>PostgreSQL</productname>,
- thanks to the variety of talents within our team. We have
- sped up memory allocation, optimization, table joins, and row
- transfer routines.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Ports
- </term>
- <listitem>
- <para>
- We continue to expand our port list, this time including
- <systemitem class="osname">Windows NT</systemitem>/<systemitem>ix86</systemitem> and <systemitem class="osname">NetBSD</systemitem>/<systemitem>arm32</systemitem>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Interfaces
- </term>
- <listitem>
- <para>
- Most interfaces have new versions, and existing functionality
- has been improved.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- Documentation
- </term>
- <listitem>
- <para>
- New and updated material is present throughout the
- documentation. New <acronym>FAQ</acronym>s have been
- contributed for <systemitem class="osname">SGI</systemitem> and <systemitem class="osname">AIX</systemitem> platforms.
- The <citetitle>Tutorial</citetitle> has introductory information
- on <acronym>SQL</acronym> from Stefan Simkovics.
- For the <citetitle>User's Guide</citetitle>, there are
- reference pages covering the postmaster and more utility
- programs, and a new appendix
- contains details on date/time behavior.
- The <citetitle>Administrator's Guide</citetitle> has a new
- chapter on troubleshooting from Tom Lane.
- And the <citetitle>Programmer's Guide</citetitle> has a
- description of query processing, also from Stefan, and details
- on obtaining the <productname>PostgreSQL</productname> source
- tree via anonymous <productname>CVS</productname> and
- <productname>CVSup</productname>.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
-
- <sect2>
- <title>Migration to Version 6.5</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>
- is required for those wishing to migrate data from any
- previous release of <productname>PostgreSQL</productname>.
- <application>pg_upgrade</application> can <emphasis>not</emphasis>
- be used to upgrade to this release because the on-disk structure
- of the tables has changed compared to previous releases.
- </para>
-
- <para>
- The new Multiversion Concurrency Control (MVCC) features can
- give somewhat different behaviors in multiuser
- environments. <emphasis>Read and understand the following section
- to ensure that your existing applications will give you the
- behavior you need.</emphasis>
- </para>
-
- <sect3>
- <title>Multiversion Concurrency Control</title>
-
- <para>
- Because readers in 6.5 don't lock data, regardless of transaction
- isolation level, data read by one transaction can be overwritten by
- another. In other words, if a row is returned by
- <command>SELECT</command> it doesn't mean that this row really exists
- at the time it is returned (i.e. sometime after the statement or
- transaction began) nor that the row is protected from being deleted or
- updated by concurrent transactions before the current transaction does
- a commit or rollback.
- </para>
-
- <para>
- To ensure the actual existence of a row and protect it against
- concurrent updates one must use <command>SELECT FOR UPDATE</command> or
- an appropriate <command>LOCK TABLE</command> statement. This should be
- taken into account when porting applications from previous releases of
- <productname>PostgreSQL</productname> and other environments.
- </para>
-
- <para>
- Keep the above in mind if you are using
- <filename>contrib/refint.*</filename> triggers for
- referential integrity. Additional techniques are required now. One way is
- to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
- command if a transaction is going to update/delete a primary key and
- use <command>LOCK parent_table IN SHARE MODE</command> command if a
- transaction is going to update/insert a foreign key.
-
- <note>
- <para>
- Note that if you run a transaction in SERIALIZABLE mode then you must
- execute the <command>LOCK</command> commands above before execution of any
- <acronym>DML</acronym> statement
- (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
- transaction.
- </para>
- </note>
- </para>
-
- <para>
- These inconveniences will disappear in the future
- when the ability to read dirty
- (uncommitted) data (regardless of isolation level) and true referential
- integrity will be implemented.
- </para>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Fix text&lt;-&gt;float8 and text&lt;-&gt;float4 conversion functions(Thomas)
-Fix for creating tables with mixed-case constraints(Billy)
-Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
-Fix bug in pg_dump -z
-Memory overrun cleanups(Tatsuo)
-Fix for lo_import crash(Tatsuo)
-Adjust handling of data type names to suppress double quotes(Thomas)
-Use type coercion for matching columns and DEFAULT(Thomas)
-Fix deadlock so it only checks once after one second of sleep(Bruce)
-Fixes for aggregates and PL/pgSQL(Hiroshi)
-Fix for subquery crash(Vadim)
-Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
-Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
-Fix for pg_dump -d or -D and quote special characters in INSERT
-Repair serious problems with dynahash(Tom)
-Fix INET/CIDR portability problems
-Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
-Fix executor so mergejoin of different column types works(Tom)
-Fix for Alpha OR selectivity bug
-Fix OR index selectivity problem(Bruce)
-Fix so \d shows proper length for char()/varchar()(Ryan)
-Fix tutorial code(Clark)
-Improve destroyuser checking(Oliver)
-Fix for Kerberos(Rodney McDuff)
-Fix for dropping database while dirty buffers(Bruce)
-Fix so sequence nextval() can be case-sensitive(Bruce)
-Fix !!= operator
-Drop buffers before destroying database files(Bruce)
-Fix case where executor evaluates functions twice(Tatsuo)
-Allow sequence nextval actions to be case-sensitive(Bruce)
-Fix optimizer indexing not working for negative numbers(Bruce)
-Fix for memory leak in executor with fjIsNull
-Fix for aggregate memory leaks(Erik Riedel)
-Allow user name containing a dash to grant privileges
-Cleanup of NULL in inet types
-Clean up system table bugs(Tom)
-Fix problems of PAGER and \? command(Masaaki Sakaida)
-Reduce default multisegment file size limit to 1GB(Peter)
-Fix for dumping of CREATE OPERATOR(Tom)
-Fix for backward scanning of cursors(Hiroshi Inoue)
-Fix for COPY FROM STDIN when using \i(Tom)
-Fix for subselect is compared inside an expression(Jan)
-Fix handling of error reporting while returning rows(Tom)
-Fix problems with reference to array types(Tom,Jan)
-Prevent UPDATE SET oid(Jan)
-Fix pg_dump so -t option can handle case-sensitive tablenames
-Fixes for GROUP BY in special cases(Tom, Jan)
-Fix for memory leak in failed queries(Tom)
-DEFAULT now supports mixed-case identifiers(Tom)
-Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
-Disable use of pg_dump with both -o and -d options(Bruce)
-Allow pg_dump to properly dump group privileges(Bruce)
-Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
-Fix for computations in views(Jan)
-Fix for aggregates on array indexes(Tom)
-Fix for DEFAULT handles single quotes in value requiring too many quotes
-Fix security problem with non-super users importing/exporting large objects(Tom)
-Rollback of transaction that creates table cleaned up properly(Tom)
-Fix to allow long table and column names to generate proper serial names(Tom)
-
-Enhancements
-------------
-Add "vacuumdb" utility
-Speed up libpq by allocating memory better(Tom)
-EXPLAIN all indexes used(Tom)
-Implement CASE, COALESCE, NULLIF expression(Thomas)
-New pg_dump table output format(Constantin)
-Add string min()/max() functions(Thomas)
-Extend new type coercion techniques to aggregates(Thomas)
-New moddatetime contrib(Terry)
-Update to pgaccess 0.96(Constantin)
-Add routines for single-byte "char" type(Thomas)
-Improved substr() function(Thomas)
-Improved multibyte handling(Tatsuo)
-Multiversion concurrency control/MVCC(Vadim)
-New Serialized mode(Vadim)
-Fix for tables over 2gigs(Peter)
-New SET TRANSACTION ISOLATION LEVEL(Vadim)
-New LOCK TABLE IN ... MODE(Vadim)
-Update ODBC driver(Byron)
-New NUMERIC data type(Jan)
-New SELECT FOR UPDATE(Vadim)
-Handle "NaN" and "Infinity" for input values(Jan)
-Improved date/year handling(Thomas)
-Improved handling of backend connections(Magnus)
-New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
-New TCL_ARRAYS option(Massimo)
-New INTERSECT and EXCEPT(Stefan)
-New pg_index.indisprimary for primary key tracking(D'Arcy)
-New pg_dump option to allow dropping of tables before creation(Brook)
-Speedup of row output routines(Tom)
-New READ COMMITTED isolation level(Vadim)
-New TEMP tables/indexes(Bruce)
-Prevent sorting if result is already sorted(Jan)
-New memory allocation optimization(Jan)
-Allow psql to do \p\g(Bruce)
-Allow multiple rule actions(Jan)
-Added LIMIT/OFFSET functionality(Jan)
-Improve optimizer when joining a large number of tables(Bruce)
-New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
-New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
-Improved int8 support(Ryan Bradetich, Thomas, Tom)
-New routines to convert between int8 and text/varchar types(Thomas)
-New bushy plans, where meta-tables are joined(Bruce)
-Enable right-hand queries by default(Bruce)
-Allow reliable maximum number of backends to be set at configure time
- (--with-maxbackends and postmaster switch (-N backends))(Tom)
-GEQO default now 10 tables because of optimizer speedups(Tom)
-Allow NULL=Var for MS-SQL portability(Michael, Bruce)
-Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
-Allow psql \d on a view show query(Ryan)
-Speedup for LIKE(Bruce)
-Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
-JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
-Make % operator have precedence like /(Bruce)
-Add new postgres -O option to allow system table structure changes(Bruce)
-Update contrib/pginterface/findoidjoins script(Tom)
-Major speedup in vacuum of deleted rows with indexes(Vadim)
-Allow non-SQL functions to run different versions based on arguments(Tom)
-Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
-Add version number in start-up banners for psql(Masaaki Sakaida)
-New contrib/vacuumlo removes large objects not referenced(Peter)
-New initialization for table sizes so non-vacuumed tables perform better(Tom)
-Improve error messages when a connection is rejected(Tom)
-Support for arrays of char() and varchar() fields(Massimo)
-Overhaul of hash code to increase reliability and performance(Tom)
-Update to PyGreSQL 2.4(D'Arcy)
-Changed debug options so -d4 and -d5 produce different node displays(Jan)
-New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
-Better optimization statistics for system table access(Tom)
-Better handling of non-default block sizes(Massimo)
-Improve GEQO optimizer memory consumption(Tom)
-UNION now supports ORDER BY of columns not in target list(Jan)
-Major libpq++ improvements(Vince Vielhaber)
-pg_dump now uses -z(ACL's) as default(Bruce)
-backend cache, memory speedups(Tom)
-have pg_dump do everything in one snapshot transaction(Vadim)
-fix for large object memory leakage, fix for pg_dumping(Tom)
-INET type now respects netmask for comparisons
-Make VACUUM ANALYZE only use a readlock(Vadim)
-Allow VIEWs on UNIONS(Jan)
-pg_dump now can generate consistent snapshots on active databases(Vadim)
-
-Source Tree Changes
--------------------
-Improve port matching(Tom)
-Portability fixes for SunOS
-Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
-New port to Cobalt Qube(Mips) running Linux(Tatsuo)
-Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
-Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
-Port to NetBSD/macppc(Toshimi Aoki)
-Fix for tcl/tk configuration(Vince)
-Removed CURRENT key word for rule queries(Jan)
-NT dynamic loading now works(Daniel Horak)
-Add ARM32 support(Andrew McMurry)
-Better support for HP-UX 11 and UnixWare
-Improve file handling to be more uniform, prevent file descriptor leak(Tom)
-New install commands for plpgsql(Jan)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-
-<sect1 id="release-6-4-2">
-<title>Release 6.4.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-12-20</para>
- </formalpara>
-
-<para>
-The 6.4.1 release was improperly packaged. This also has one additional
-bug fix.
-</para>
-
-
-<sect2>
-<title>Migration to Version 6.4.2</title>
-
-<para>
-A dump/restore is <emphasis>not</emphasis> required for those running
-6.4.*.
-</para>
-</sect2>
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Fix for datetime constant problem on some platforms(Thomas)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-
-
-<sect1 id="release-6-4-1">
-<title>Release 6.4.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-12-18</para>
- </formalpara>
-
-<para>
-This is basically a cleanup release for 6.4. We have fixed a variety of
-problems reported by 6.4 users.
-</para>
-
-
-<sect2>
-<title>Migration to Version 6.4.1</title>
-
-<para>
-A dump/restore is <emphasis>not</emphasis> required for those running
-6.4.
-</para>
-</sect2>
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Add pg_dump -N flag to force double quotes around identifiers. This is
- the default(Thomas)
-Fix for NOT in where clause causing crash(Bruce)
-EXPLAIN VERBOSE coredump fix(Vadim)
-Fix shared-library problems on Linux
-Fix test for table existence to allow mixed-case and whitespace in
- the table name(Thomas)
-Fix a couple of pg_dump bugs
-Configure matches template/.similar entries better(Tom)
-Change builtin function names from SPI_* to spi_*
-OR WHERE clause fix(Vadim)
-Fixes for mixed-case table names(Billy)
-contrib/linux/postgres.init.csh/sh fix(Thomas)
-libpq memory overrun fix
-SunOS fixes(Tom)
-Change exp() behavior to generate error on underflow(Thomas)
-pg_dump fixes for memory leak, inheritance constraints, layout change
-update pgaccess to 0.93
-Fix prototype for 64-bit platforms
-Multibyte fixes(Tatsuo)
-New ecpg man page
-Fix memory overruns(Tatsuo)
-Fix for lo_import() crash(Bruce)
-Better search for install program(Tom)
-Timezone fixes(Tom)
-HP-UX fixes(Tom)
-Use implicit type coercion for matching DEFAULT values(Thomas)
-Add routines to help with single-byte (internal) character type(Thomas)
-Compilation of libpq for Windows fixes(Magnus)
-Upgrade to PyGreSQL 2.2(D'Arcy)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-
-
-<sect1 id="release-6-4">
-<title>Release 6.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-10-30</para>
- </formalpara>
-
-<para>
-There are <emphasis>many</emphasis> new features and improvements in this release.
-Thanks to our developers and maintainers, nearly every aspect of the system
-has received some attention since the previous release.
-Here is a brief, incomplete summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Views and rules are now functional thanks to extensive new code in the
-rewrite rules system from Jan Wieck. He also wrote a chapter on it
-for the <citetitle>Programmer's Guide</citetitle>.
-</para>
-</listitem>
-<listitem>
-<para>
-Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
-original <application>PL/pgTCL</application> procedural language he contributed last release.
-</para>
-</listitem>
-
-<listitem>
-<para>
-We have optional multiple-byte character set support from Tatsuo Ishii
-to complement our existing locale support.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Client/server communications has been cleaned up, with better support for
-asynchronous messages and interrupts thanks to Tom Lane.
-</para>
-</listitem>
-
-<listitem>
-<para>
-The parser will now perform automatic type coercion to match arguments
-to available operators and functions, and to match columns and expressions
-with target columns. This uses a generic mechanism which supports
-the type extensibility features of <productname>PostgreSQL</productname>.
-There is a new chapter in the <citetitle>User's Guide</citetitle>
-which covers this topic.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Three new data types have been added.
-Two types, <type>inet</type> and <type>cidr</type>, support various forms
-of IP network, subnet, and machine addressing. There is now an 8-byte integer
-type available on some platforms. See the chapter on data types
-in the <citetitle>User's Guide</citetitle> for details.
-A fourth type, <type>serial</type>, is now supported by the parser as an
-amalgam of the <type>int4</type> type, a sequence, and a unique index.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Several more <acronym>SQL92</acronym>-compatible syntax features have been
-added, including <command>INSERT DEFAULT VALUES</command>
-</para>
-</listitem>
-
-<listitem>
-<para>
-The automatic configuration and installation system has received some
-attention, and should be more robust for more platforms than it has ever
-been.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-
-<sect2>
-<title>Migration to Version 6.4</title>
-
-<para>
-A dump/restore using <application>pg_dump</application>
-or <application>pg_dumpall</application>
-is required for those wishing to migrate data from any
-previous release of <productname>PostgreSQL</productname>.
-</para>
-</sect2>
-
- <sect2>
-<title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
-Remove char2-16 data types, use char/varchar(Darren)
-Pqfn not handles a NOTICE message(Anders)
-Reduced busywaiting overhead for spinlocks with many backends (dg)
-Stuck spinlock detection (dg)
-Fix up "ISO-style" timespan decoding and encoding(Thomas)
-Fix problem with table drop after rollback of transaction(Vadim)
-Change error message and remove non-functional update message(Vadim)
-Fix for COPY array checking
-Fix for SELECT 1 UNION SELECT NULL
-Fix for buffer leaks in large object calls(Pascal)
-Change owner from oid to int4 type(Bruce)
-Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
-Fix for shared invalidation cache overflow(Massimo)
-Prevent file descriptor leaks in failed COPY's(Bruce)
-Fix memory leak in libpgtcl's pg_select(Constantin)
-Fix problems with username/passwords over 8 characters(Tom)
-Fix problems with handling of asynchronous NOTIFY in backend(Tom)
-Fix of many bad system table entries(Tom)
-
-Enhancements
-------------
-Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
-Show the index used in an EXPLAIN(Zeugswetter)
-EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
-Multibyte awareness of many data types and functions, via configure(Tatsuo)
-New configure --with-mb option(Tatsuo)
-New initdb --pgencoding option(Tatsuo)
-New createdb -E multibyte option(Tatsuo)
-Select version(); now returns PostgreSQL version(Jeroen)
-libpq now allows asynchronous clients(Tom)
-Allow cancel from client of backend query(Tom)
-psql now cancels query with Control-C(Tom)
-libpq users need not issue dummy queries to get NOTIFY messages(Tom)
-NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
-PGresult struct now includes associated error message, if any(Tom)
-Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
-Add routines to convert between varchar and bpchar(Thomas)
-Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
-Add bit flags to support timezonehour and minute in data retrieval(Thomas)
-Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
-Fixes for unary minus parsing with leading spaces(Thomas)
-Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
-Check for and properly ignore FOREIGN KEY column constraints(Thomas)
-Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
-Enable HAVING clause but no fixes elsewhere yet.
-Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
-Save string type if specified for DEFAULT clause handling(Thomas)
-Coerce operations involving different data types(Thomas)
-Allow some index use for columns of different types(Thomas)
-Add capabilities for automatic type conversion(Thomas)
-Cleanups for large objects, so file is truncated on open(Peter)
-Readline cleanups(Tom)
-Allow psql \f \ to make spaces as delimiter(Bruce)
-Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
-Msql compatibility library in /contrib(Aldrin)
-Remove the requirement that ORDER/GROUP BY clause identifiers be
-included in the target list(David)
-Convert columns to match columns in UNION clauses(Thomas)
-Remove fork()/exec() and only do fork()(Bruce)
-Jdbc cleanups(Peter)
-Show backend status on ps command line(only works on some platforms)(Bruce)
-Pg_hba.conf now has a sameuser option in the database field
-Make lo_unlink take oid param, not int4
-New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
-Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
-libpgtcl cleanups(Tom)
-Add -error option to libpgtcl's pg_result command(Tom)
-New locale patch, see docs/README/locale(Oleg)
-Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
-New contrib/lo code for large object orphan removal(Peter)
-New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
-feature, see /doc/README.mb(Tatsuo)
-contrib/noupdate code to revoke update permission on a column
-libpq can now be compiled on Windows(Magnus)
-Add PQsetdbLogin() in libpq
-New 8-byte integer type, checked by configure for OS support(Thomas)
-Better support for quoted table/column names(Thomas)
-Surround table and column names with double-quotes in pg_dump(Thomas)
-PQreset() now works with passwords(Tom)
-Handle case of GROUP BY target list column number out of range(David)
-Allow UNION in subselects
-Add auto-size to screen to \d? commands(Bruce)
-Use UNION to show all \d? results in one query(Bruce)
-Add \d? field search feature(Bruce)
-Pg_dump issues fewer \connect requests(Tom)
-Make pg_dump -z flag work better, document it in manual page(Tom)
-Add HAVING clause with full support for subselects and unions(Stephan)
-Full text indexing routines in contrib/fulltextindex(Maarten)
-Transaction ids now stored in shared memory(Vadim)
-New PGCLIENTENCODING when issuing COPY command(Tatsuo)
-Support for SQL92 syntax "SET NAMES"(Tatsuo)
-Support for LATIN2-5(Tatsuo)
-Add UNICODE regression test case(Tatsuo)
-Lock manager cleanup, new locking modes for LLL(Vadim)
-Allow index use with OR clauses(Bruce)
-Allows "SELECT NULL ORDER BY 1;"
-Explain VERBOSE prints the plan, and now pretty-prints the plan to
-the postmaster log file(Bruce)
-Add indexes display to \d command(Bruce)
-Allow GROUP BY on functions(David)
-New pg_class.relkind for large objects(Bruce)
-New way to send libpq NOTICE messages to a different location(Tom)
-New \w write command to psql(Bruce)
-New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
-Allow binary-compatible indexes to be considered when checking for valid
-Indexes for restriction clauses containing a constant(Thomas)
-New ISBN/ISSN code in /contrib/isbn_issn
-Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
-New rewrite system fixes many problems with rules and views(Jan)
- * Rules on relations work
- * Event qualifications on insert/update/delete work
- * New OLD variable to reference CURRENT, CURRENT will be remove in future
- * Update rules can reference NEW and OLD in rule qualifications/actions
- * Insert/update/delete rules on views work
- * Multiple rule actions are now supported, surrounded by parentheses
- * Regular users can create views/rules on tables they have RULE permits
- * Rules and views inherit the privileges of the creator
- * No rules at the column level
- * No UPDATE NEW/OLD rules
- * New pg_tables, pg_indexes, pg_rules and pg_views system views
- * Only a single action on SELECT rules
- * Total rewrite overhaul, perhaps for 6.5
- * handle subselects
- * handle aggregates on views
- * handle insert into select from view works
-System indexes are now multikey(Bruce)
-Oidint2, oidint4, and oidname types are removed(Bruce)
-Use system cache for more system table lookups(Bruce)
-New backend programming language PL/pgSQL in backend/pl(Jan)
-New SERIAL data type, auto-creates sequence/index(Thomas)
-Enable assert checking without a recompile(Massimo)
-User lock enhancements(Massimo)
-New setval() command to set sequence value(Massimo)
-Auto-remove unix socket file on start-up if no postmaster running(Massimo)
-Conditional trace package(Massimo)
-New UNLISTEN command(Massimo)
-psql and libpq now compile under Windows using win32.mak(Magnus)
-Lo_read no longer stores trailing NULL(Bruce)
-Identifiers are now truncated to 31 characters internally(Bruce)
-Createuser options now available on the command line
-Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
-Prevent file descriptor leaf from failed COPY(Bruce)
-New pg_upgrade command(Bruce)
-Updated /contrib directories(Massimo)
-New CREATE TABLE DEFAULT VALUES statement available(Thomas)
-New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
-New DECLARE and FETCH feature(Thomas)
-libpq's internal structures now not exported(Tom)
-Allow up to 8 key indexes(Bruce)
-Remove ARCHIVE key word, that is no longer used(Thomas)
-pg_dump -n flag to suppress quotes around identifiers
-disable system columns for views(Jan)
-new INET and CIDR types for network addresses(TomH, Paul)
-no more double quotes in psql output
-pg_dump now dumps views(Terry)
-new SET QUERY_LIMIT(Tatsuo,Jan)
-
-Source Tree Changes
--------------------
-/contrib cleanup(Jun)
-Inline some small functions called for every row(Bruce)
-Alpha/linux fixes
-HP-UX cleanups(Tom)
-Multibyte regression tests(Soonmyung.)
-Remove --disabled options from configure
-Define PGDOC to use POSTGRESDIR by default
-Make regression optional
-Remove extra braces code to pgindent(Bruce)
-Add bsdi shared library support(Bruce)
-New --without-CXX support configure option(Brook)
-New FAQ_CVS
-Update backend flowchart in tools/backend(Bruce)
-Change atttypmod from int16 to int32(Bruce, Tom)
-Getrusage() fix for platforms that do not have it(Tom)
-Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
-NS32K platform fixes(Phil Nelson, John Buller)
-SCO 7/UnixWare 2.x fixes(Billy,others)
-Sparc/Solaris 2.5 fixes(Ryan)
-Pgbuiltin.3 is obsolete, move to doc files(Thomas)
-Even more documentation(Thomas)
-Nextstep support(Jacek)
-Aix support(David)
-pginterface manual page(Bruce)
-shared libraries all have version numbers
-merged all OS-specific shared library defines into one file
-smarter TCL/TK configuration checking(Billy)
-smarter perl configuration(Brook)
-configure uses supplied install-sh if no install script found(Tom)
-new Makefile.shlib for shared library configuration(Tom)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-3-2">
-<title>Release 6.3.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-04-07</para>
- </formalpara>
-
-<para>
-This is a bug-fix release for 6.3.x.
-Refer to the release notes for version 6.3 for a more complete summary of new features.
-</para>
-<para>
-Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Repairs automatic configuration support for some platforms, including Linux,
-from breakage inadvertently introduced in version 6.3.1.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-A dump/restore is NOT required for those running 6.3 or 6.3.1. A
-<literal>make distclean</literal>, <literal>make</literal>, and <literal>make install</literal> is all that is required.
-This last step should be performed while the postmaster is not running.
-You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
-</para>
-<para>
-For upgrades from pre-6.3 installations,
-refer to the installation and migration instructions for version 6.3.
-</para>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
-Manual page improvements(Bruce)
-BETWEEN and LIKE fix(Thomas)
-fix for psql \connect used by pg_dump(Oliver Elphick)
-New odbc driver
-pgaccess, version 0.86
-qsort removed, now uses libc version, cleanups(Jeroen)
-fix for buffer over-runs detected(Maurice Gittens)
-fix for buffer overrun in libpgtcl(Randy Kunkee)
-fix for UNION with DISTINCT or ORDER BY(Bruce)
-gettimeofday configure check(Doug Winterburn)
-Fix "indexes not used" bug(Vadim)
-docs additions(Thomas)
-Fix for backend memory leak(Bruce)
-libreadline cleanup(Erwan MAS)
-Remove DISTDIR(Bruce)
-Makefile dependency cleanup(Jeroen van Vianen)
-ASSERT fixes(Bruce)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-6-3-1">
- <title>Release 6.3.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-03-23</para>
- </formalpara>
-
- <para>
- Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Additional support for multibyte character sets.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Repair byte ordering for mixed-endian clients and servers.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Minor updates to allowed SQL syntax.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Improvements to the configuration autodetection for installation.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-A dump/restore is NOT required for those running 6.3. A
-<literal>make distclean</literal>, <literal>make</literal>, and <literal>make install</literal> is all that is required.
-This last step should be performed while the postmaster is not running.
-You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
-</para>
-<para>
-For upgrades from pre-6.3 installations,
-refer to the installation and migration instructions for version 6.3.
-</para>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-ecpg cleanup/fixes, now version 1.1(Michael Meskes)
-pg_user cleanup(Bruce)
-large object fix for pg_dump and tclsh (alvin)
-LIKE fix for multiple adjacent underscores
-fix for redefining builtin functions(Thomas)
-ultrix4 cleanup
-upgrade to pg_access 0.83
-updated CLUSTER manual page
-multibyte character set support, see doc/README.mb(Tatsuo)
-configure --with-pgport fix
-pg_ident fix
-big-endian fix for backend communications(Kataoka)
-SUBSTR() and substring() fix(Jan)
-several jdbc fixes(Peter)
-libpgtcl improvements, see libptcl/README(Randy Kunkee)
-Fix for "Datasize = 0" error(Vadim)
-Prevent \do from wrapping(Bruce)
-Remove duplicate Russian character set entries
-Sunos4 cleanup
-Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
-CREATE SEQUENCE options to allow a negative integer(Thomas)
-Add "PASSWORD" as an allowed column identifier(Thomas)
-Add checks for UNION target fields(Bruce)
-Fix Alpha port(Dwayne Bailey)
-Fix for text arrays containing quotes(Doug Gibson)
-Solaris compile fix(Albert Chin-A-Young)
-Better identify tcl and tk libs and includes(Bruce)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="release-6-3">
- <title>Release 6.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1998-03-01</para>
- </formalpara>
-
- <para>
- There are <emphasis>many</emphasis> new features and improvements in this release.
- Here is a brief, incomplete summary:
-
- <itemizedlist>
- <listitem>
- <para>
- Many new SQL features, including
- full <acronym>SQL92</acronym> subselect capability
- (everything is here but target-list subselects).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for client-side environment variables to specify time zone and date style.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Socket interface for client/server connection. This is the default now
- so you might need to start <application>postmaster</application> with the
- <option>-i</option> flag.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better password authorization mechanisms. Default table privileges have changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Old-style <firstterm>time travel</firstterm>
- has been removed. Performance has been improved.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <note>
- <para>
- Bruce Momjian wrote the following notes to introduce the new release.
- </para>
- </note>
-
- <para>
- There are some general 6.3 issues that I want to mention. These are
- only the big items that cannot be described in one sentence. A review
- of the detailed changes list is still needed.
- </para>
- <para>
- First, we now have subselects. Now that we have them, I would like to
- mention that without subselects, SQL is a very limited language.
- Subselects are a major feature, and you should review your code for
- places where subselects provide a better solution for your queries. I
- think you will find that there are more uses for subselects than you might
- think. Vadim has put us on the big SQL map with subselects, and fully
- functional ones too. The only thing you cannot do with subselects is to
- use them in the target list.
- </para>
- <para>
- Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
- enable connections from other machines, you have to use the new
- postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
- reason, the format of <filename>pg_hba.conf</filename> has changed.
- </para>
- <para>
- Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
- <type>text</type>. Specifically, the <type>text</type> and <type>varchar()</type> have a penalty for access to
- any columns after the first column of this type. <type>char()</type> used to also
- have this access penalty, but it no longer does. This might suggest that
- you redesign some of your tables, especially if you have short character
- columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
- changes make 6.3 even faster than earlier releases.
- </para>
- <para>
- We now have passwords definable independent of any Unix file. There are
- new SQL USER commands.
- See the <citetitle>Administrator's Guide</citetitle> for more
- information. There is a new table, pg_shadow, which is used to store
- user information and user passwords, and it by default only SELECT-able
- by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
- SELECT-able by PUBLIC. You should keep using pg_user in your
- application without changes.
- </para>
- <para>
- User-created tables now no longer have SELECT privilege to PUBLIC by
- default. This was done because the ANSI standard requires it. You can
- of course GRANT any privileges you want after the table is created.
- System tables continue to be SELECT-able by PUBLIC.
- </para>
- <para>
- We also have real deadlock detection code. No more sixty-second
- timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
- should be less resource starvation during heavy use.
- </para>
- <para>
- Many complaints have been made about inadequate documentation in previous
- releases. Thomas has put much effort into many new manuals for this
- release. Check out the doc/ directory.
- </para>
- <para>
- For performance reasons, time travel is gone, but can be implemented
- using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
- \d command for types, operators, etc. Also, views have their own
- privileges now, not based on the underlying tables, so privileges on
- them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
- ways to talk to <productname>PostgreSQL</productname>.
- </para>
- <para>
- This is the first release that really required an explanation for
- existing users. In many ways, this was necessary because the new
- release removes many limitations, and the work-arounds people were using
- are no longer needed.
- </para>
-
- <sect2>
- <title>Migration to Version 6.3</title>
-
- <para>
- A dump/restore using <application>pg_dump</application>
- or <application>pg_dumpall</application>
- is required for those wishing to migrate data from any
- previous release of <productname>PostgreSQL</productname>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Fix binary cursors broken by MOVE implementation(Vadim)
-Fix for tcl library crash(Jan)
-Fix for array handling, from Gerhard Hintermayer
-Fix acl error, and remove duplicate pqtrace(Bruce)
-Fix psql \e for empty file(Bruce)
-Fix for textcat on varchar() fields(Bruce)
-Fix for DBT Sendproc (Zeugswetter Andres)
-Fix vacuum analyze syntax problem(Bruce)
-Fix for international identifiers(Tatsuo)
-Fix aggregates on inherited tables(Bruce)
-Fix substr() for out-of-bounds data
-Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
-Fix notty output to show status result. -q option still turns it off(Bruce)
-Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
-Fix cluster(Bruce)
-Fix for PQtrace start/stop several times(Bruce)
-Fix a variety of locking problems like newer lock waiters getting
- lock before older waiters, and having readlock people not share
- locks if a writer is waiting for a lock, and waiting writers not
- getting priority over waiting readers(Bruce)
-Fix crashes in psql when executing queries from external files(James)
-Fix problem with multiple order by columns, with the first one having
- NULL values(Jeroen)
-Use correct hash table support functions for float8 and int4(Thomas)
-Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
-Change precedence for boolean operators to match expected behavior(Thomas)
-Generate elog(ERROR) on over-large integer(Bruce)
-Allow multiple-argument functions in constraint clauses(Thomas)
-Check boolean input literals for 'true','false','yes','no','1','0'
- and throw elog(ERROR) if unrecognized(Thomas)
-Major large objects fix
-Fix for GROUP BY showing duplicates(Vadim)
-Fix for index scans in MergeJoin(Vadim)
-
-Enhancements
-------------
-Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
-New User Manual(Thomas, others)
-Speedup by inlining some frequently-called functions
-Real deadlock detection, no more timeouts(Bruce)
-Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
- CURRENT_USER(Thomas)
-Modify constraint syntax to be SQL92-compliant(Thomas)
-Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
-Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
-Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
-Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
-Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
-Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
-Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
-Allow SQL92 delimited identifiers(Thomas)
-Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
-Support SQL92 syntax for type coercion of literal strings
- (e.g. "DATETIME 'now'")(Thomas)
-Add conversions for int2, int4, and OID types to and from text(Thomas)
-Use shared lock when building indexes(Vadim)
-Free memory allocated for a user query inside transaction block after
- this query is done, was turned off in &lt;= 6.2.1(Vadim)
-New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
-New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
-Rename pg_dump -H option to -h(Bruce)
-Add Java support for passwords, European dates(Peter)
-Use indexes for LIKE and ~, !~ operations(Bruce)
-Add hash functions for datetime and timespan(Thomas)
-Time Travel removed(Vadim, Bruce)
-Add paging for \d and \z, and fix \i(Bruce)
-Add Unix domain socket support to backend and to frontend library(Goran)
-Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
-Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
-Augment support for SQL92 SET TIME ZONE...(Thomas)
-SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
-Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
-Enable SET TIME ZONE using TZ environment variable(Thomas)
-Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
-Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
- frontend library initialization environment variables(Thomas)
-Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
-Add pg_description table for info on tables, columns, operators, types, and
- aggregates(Bruce)
-Increase 16 char limit on system table/index names to 32 characters(Bruce)
-Rename system indexes(Bruce)
-Add 'GERMAN' option to SET DATESTYLE(Thomas)
-Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
-Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
-Validate numeric input more carefully for delta times(Thomas)
-Implement day of year as possible input to date_part()(Thomas)
-Define timespan_finite() and text_timespan() functions(Thomas)
-Remove archive stuff(Bruce)
-Allow for a pg_password authentication database that is separate from
- the system password file(Todd)
-Dump ACLs, GRANT, REVOKE privileges(Matt)
-Define text, varchar, and bpchar string length functions(Thomas)
-Fix Query handling for inheritance, and cost computations(Bruce)
-Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
-Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
-Implement UNIONs for SELECT(Bruce)
-Add UNION, GROUP, DISTINCT to INSERT(Bruce)
-varchar() stores only necessary bytes on disk(Bruce)
-Fix for BLOBs(Peter)
-Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
-Remove unused "option" from PQconnectdb()
-New LOCK command and lock manual page describing deadlocks(Bruce)
-Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
-Enhance psql \z to show sequences(Bruce)
-Show NOT NULL and DEFAULT in psql \d table(Bruce)
-New psql .psqlrc file start-up(Andrew)
-Modify sample start-up script in contrib/linux to show syslog(Thomas)
-New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
-Unix system time conversions with date/time types in contrib/unixdate(Thomas)
-Update of contrib stuff(Massimo)
-Add Unix socket support to DBD::Pg(Goran)
-New python interface (PyGreSQL 2.0)(D'Arcy)
-New frontend/backend protocol has a version number, network byte order(Phil)
-Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
-CHAR() now faster access than VARCHAR() or TEXT
-ecpg embedded SQL preprocessor
-Reduce system column overhead(Vadmin)
-Remove pg_time table(Vadim)
-Add pg_type attribute to identify types that need length (bpchar, varchar)
-Add report of offending line when COPY command fails
-Allow VIEW privileges to be set separately from the underlying tables.
- For security, use GRANT/REVOKE on views as appropriate(Jan)
-Tables now have no default GRANT SELECT TO PUBLIC. You must
- explicitly grant such privileges.
-Clean up tutorial examples(Darren)
-
-Source Tree Changes
--------------------
-Add new html development tools, and flow chart in /tools/backend
-Fix for SCO compiles
-Stratus computer port Robert Gillies
-Added support for shlib for BSD44_derived &amp; i386_solaris
-Make configure more automated(Brook)
-Add script to check regression test results
-Break parser functions into smaller files, group together(Bruce)
-Rename heap_create to heap_create_and_catalog, rename heap_creatr
- to heap_create()(Bruce)
-Sparc/Linux patch for locking(TomS)
-Remove PORTNAME and reorganize port-specific stuff(Marc)
-Add optimizer README file(Bruce)
-Remove some recursion in optimizer and clean up some code there(Bruce)
-Fix for NetBSD locking(Henry)
-Fix for libptcl make(Tatsuo)
-AIX patch(Darren)
-Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
- function calls to istrue() or isfalse() to allow optimization(Thomas)
-Various fixes NetBSD/Sparc related(TomH)
-Alpha linux locking(Travis,Ryan)
-Change elog(WARN) to elog(ERROR)(Bruce)
-FAQ for FreeBSD(Marc)
-Bring in the PostODBC source tree as part of our standard distribution(Marc)
-A minor patch for HP/UX 10 vs 9(Stan)
-New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
-UnixWare patches(Billy)
-New i386 'lock' for spinlock asm(Billy)
-Support for multiplexed backends is removed
-Start an OpenBSD port
-Start an AUX port
-Start a Cygnus port
-Add string functions to regression suite(Thomas)
-Expand a few function names formerly truncated to 16 characters(Thomas)
-Remove un-needed malloc() calls and replace with palloc()(Bruce)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-2-1">
-<title>Release 6.2.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1997-10-17</para>
- </formalpara>
-
-<para>
-6.2.1 is a bug-fix and usability release on 6.2.
-</para>
-<para>
-Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Allow strings to span lines, per <acronym>SQL92</acronym>.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Include example trigger function for inserting user names on table updates.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-This is a minor bug-fix release on 6.2.
-For upgrades from pre-6.2 systems, a full dump/reload is required.
-Refer to the 6.2 release notes for instructions.
-</para>
-
-<sect2>
-<title>Migration from version 6.2 to version 6.2.1</title>
-
-<para>
-This is a minor bug-fix release. A dump/reload is not required from version 6.2,
-but is required from any release prior to 6.2.
-</para>
-<para>
-In upgrading from version 6.2, if you choose to dump/reload you will find that
-avg(money) is now calculated correctly. All other bug fixes take effect
-upon updating the executables.
-</para>
-<para>
-Another way to avoid dump/reload is to use the following SQL command
-from <command>psql</command> to update the existing system table:
-
-<programlisting>
-update pg_aggregate set aggfinalfn = 'cash_div_flt8'
- where aggname = 'avg' and aggbasetype = 790;
-</programlisting>
-</para>
-<para>
-This will need to be done to every existing database, including template1.
-</para>
-</sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Allow TIME and TYPE column names(Thomas)
-Allow larger range of true/false as boolean values(Thomas)
-Support output of "now" and "current"(Thomas)
-Handle DEFAULT with INSERT of NULL properly(Vadim)
-Fix for relation reference counts problem in buffer manager(Vadim)
-Allow strings to span lines, like ANSI(Thomas)
-Fix for backward cursor with ORDER BY(Vadim)
-Fix avg(cash) computation(Thomas)
-Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
-Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
-Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-<sect1 id="release-6-2">
-<title>Release 6.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1997-10-02</para>
- </formalpara>
-
-<para>
-A dump/restore is required for those wishing to migrate data from
-previous releases of <productname>PostgreSQL</productname>.
-</para>
-
-<sect2>
-<title>Migration from version 6.1 to version 6.2</title>
-
-<para>
-This migration requires a complete dump of the 6.1 database and a
-restore of the database in 6.2.
-</para>
-<para>
-Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
-to dump the 6.1 database.
-</para>
-</sect2>
-
-<sect2>
-<title>Migration from version 1.<replaceable>x</replaceable> to version 6.2</title>
-
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
-Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
- from Solaris(Diab Jerius)
-Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
-Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
-Catch non-functional delete attempts(Vadim)
-Change time function names to be more consistent(Michael Reifenberg)
-Check for zero divides(Michael Reifenberg)
-Fix very old bug which made rows changed/inserted by a command
- visible to the command itself (so we had multiple update of
- updated rows, etc.)(Vadim)
-Fix for SELECT null, 'fail' FROM pg_am (Patrick)
-SELECT NULL as EMPTY_FIELD now allowed(Patrick)
-Remove un-needed signal stuff from contrib/pginterface
-Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
-Fix time_cmp function (Vadim)
-Fix handling of functions with non-attribute first argument in
- WHERE clauses (Vadim)
-Fix GROUP BY when order of entries is different from order
- in target list (Vadim)
-Fix pg_dump for aggregates without sfunc1 (Vadim)
-
-Enhancements
-------------
-Default genetic optimizer GEQO parameter is now 8(Bruce)
-Allow use parameters in target list having aggregates in functions(Vadim)
-Added JDBC driver as an interface(Adrian &amp; Peter)
-pg_password utility
-Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
-Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
-SPI (Server Programming Interface) allows execution of queries inside
- C-functions (Vadim)
-NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
-Include reserved words for string handling, outer joins, and unions(Thomas)
-Implement extended comments ("/* ... */") using exclusive states(Thomas)
-Add "//" single-line comments(Bruce)
-Remove some restrictions on characters in operator names(Thomas)
-DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim &amp; Thomas)
-Add text concatenation operator and function (SQL92)(Thomas)
-Support WITH TIME ZONE syntax (SQL92)(Thomas)
-Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
-Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
- and CHARACTER VARYING (SQL92)(Thomas)
-Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
-Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
-Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
-Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
-Add more reserved words, mostly for SQL92 compliance(Thomas)
-Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
-Add center() routines for lseg, path, polygon(Thomas)
-Add distance() routines for circle-polygon, polygon-polygon(Thomas)
-Check explicitly for points and polygons contained within polygons
- using an axis-crossing algorithm(Thomas)
-Add routine to convert circle-box(Thomas)
-Merge conflicting operators for different geometric data types(Thomas)
-Replace distance operator "&lt;===&gt;" with "&lt;-&gt;"(Thomas)
-Replace "above" operator "!^" with "&gt;^" and "below" operator "!|" with "&lt;^"(Thomas)
-Add routines for text trimming on both ends, substring, and string position(Thomas)
-Added conversion routines circle(box) and poly(circle)(Thomas)
-Allow internal sorts to be stored in memory rather than in files(Bruce &amp; Vadim)
-Allow functions and operators on internally-identical types to succeed(Bruce)
-Speed up backend start-up after profiling analysis(Bruce)
-Inline frequently called functions for performance(Bruce)
-Reduce open() calls(Bruce)
-psql: Add PAGER for \h and \?,\C fix
-Fix for psql pager when no tty(Bruce)
-New entab utility(Bruce)
-General trigger functions for referential integrity (Vadim)
-General trigger functions for time travel (Vadim)
-General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
-MOVE implementation (Vadim)
-
-Source Tree Changes
--------------------
-HP-UX 10 patches (Vladimir Turin)
-Added SCO support, (Daniel Harris)
-MkLinux patches (Tatsuo Ishii)
-Change geometric box terminology from "length" to "width"(Thomas)
-Deprecate temporary unstored slope fields in geometric code(Thomas)
-Remove restart instructions from INSTALL(Bruce)
-Look in /usr/ucb first for install(Bruce)
-Fix c++ copy example code(Thomas)
-Add -o to psql manual page(Bruce)
-Prevent relname unallocated string length from being copied into database(Bruce)
-Cleanup for NAMEDATALEN use(Bruce)
-Fix pg_proc names over 15 chars in output(Bruce)
-Add strNcpy() function(Bruce)
-remove some (void) casts that are unnecessary(Bruce)
-new interfaces directory(Marc)
-Replace fopen() calls with calls to fd.c functions(Bruce)
-Make functions static where possible(Bruce)
-enclose unused functions in #ifdef NOT_USED(Bruce)
-Remove call to difftime() in timestamp support to fix SunOS(Bruce &amp; Thomas)
-Changes for Digital Unix
-Portability fix for pg_dumpall(Bruce)
-Rename pg_attribute.attnvals to attdispersion(Bruce)
-"intro/unix" manual page now "pgintro"(Bruce)
-"built-in" manual page now "pgbuiltin"(Bruce)
-"drop" manual page now "drop_table"(Bruce)
-Add "create_trigger", "drop_trigger" manual pages(Thomas)
-Add constraints regression test(Vadim &amp; Thomas)
-Add comments syntax regression test(Thomas)
-Add PGINDENT and support program(Bruce)
-Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
-Files moved to /src/tools directory(Bruce)
-SPI and Trigger programming guides (Vadim &amp; D'Arcy)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-1-1">
-<title>Release 6.1.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1997-07-22</para>
- </formalpara>
-
-<sect2>
-<title>Migration from version 6.1 to version 6.1.1</title>
-
-<para>
-This is a minor bug-fix release. A dump/reload is not required from version 6.1,
-but is required from any release prior to 6.1.
-Refer to the release notes for 6.1 for more details.
-</para>
-</sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-fix for SET with options (Thomas)
-allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
-new psql \connect option allows changing usernames without changing databases
-fix for initdb --debug option(Yoshihiko Ichikawa))
-lextest cleanup(Bruce)
-hash fixes(Vadim)
-fix date/time month boundary arithmetic(Thomas)
-fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
-timestamp overhauled to use standard functions(Thomas)
-other code cleanup in date/time routines(Thomas)
-psql's \d now case-insensitive(Bruce)
-psql's backslash commands can now have trailing semicolon(Bruce)
-fix memory leak in psql when using \g(Bruce)
-major fix for endian handling of communication to server(Thomas, Tatsuo)
-Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
-allow underscores in usernames(Bruce)
-pg_dumpall now returns proper status, portability fix(Bruce)
-</programlisting>
- </para>
- </sect2>
- </sect1>
-
-<sect1 id="release-6-1">
-<title>Release 6.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1997-06-08</para>
- </formalpara>
-
-<para>
- The regression tests have been adapted and extensively modified for the
- 6.1 release of <productname>PostgreSQL</productname>.
-</para>
-
-<para>
- Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
- the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
- have had their output formats made consistent across the data types.
- The polygon output in misc.out has only been spot-checked for correctness
- relative to the original regression output.
-</para>
-
-<para>
- <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
-optimizer which uses <firstterm>genetic</firstterm>
- algorithms. These algorithms introduce a random behavior in the ordering
- of query results when the query contains multiple qualifiers or multiple
- tables (giving the optimizer a choice on order of evaluation). Several
- regression tests have been modified to explicitly order the results, and
- hence are insensitive to optimizer choices. A few regression tests are
- for data types which are inherently unordered (e.g. points and time
- intervals) and tests involving those types are explicitly bracketed with
- <command>set geqo to 'off'</command> and <command>reset geqo</command>.
-</para>
-
-<para>
- The interpretation of array specifiers (the curly braces around atomic
- values) appears to have changed sometime after the original regression
- tests were generated. The current <filename>./expected/*.out</filename> files reflect this
- new interpretation, which might not be correct!
-</para>
-
-<para>
- The float8 regression test fails on at least some platforms. This is due
- to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
- mechanisms used for overflow and underflow conditions.
-</para>
-
-<para>
- The <quote>random</quote> results in the random test should cause the
- <quote>random</quote> test to be <quote>failed</quote>, since the
- regression tests are evaluated using a simple diff. However,
- <quote>random</quote> does not seem to produce random results on my test
- machine (Linux/<application>gcc</application>/i686).
-</para>
-
-<sect2>
-<title>Migration to Version 6.1</title>
-
-<para>
-This migration requires a complete dump of the 6.0 database and a
-restore of the database in 6.1.
-</para>
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-packet length checking in library routines
-lock manager priority patch
-check for under/over flow of float8(Bruce)
-multitable join fix(Vadim)
-SIGPIPE crash fix(Darren)
-large object fixes(Sven)
-allow btree indexes to handle NULLs(Vadim)
-timezone fixes(D'Arcy)
-select SUM(x) can return NULL on no rows(Thomas)
-internal optimizer, executor bug fixes(Vadim)
-fix problem where inner loop in &lt; or &lt;= has no rows(Vadim)
-prevent re-commuting join index clauses(Vadim)
-fix join clauses for multiple tables(Vadim)
-fix hash, hashjoin for arrays(Vadim)
-fix btree for abstime type(Vadim)
-large object fixes(Raymond)
-fix buffer leak in hash indexes (Vadim)
-fix rtree for use in inner scan (Vadim)
-fix gist for use in inner scan, cleanups (Vadim, Andrea)
-avoid unnecessary local buffers allocation (Vadim, Massimo)
-fix local buffers leak in transaction aborts (Vadim)
-fix file manager memory leaks, cleanups (Vadim, Massimo)
-fix storage manager memory leaks (Vadim)
-fix btree duplicates handling (Vadim)
-fix deleted rows reincarnation caused by vacuum (Vadim)
-fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
-many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
-
-Enhancements
-------------
-attribute optimization statistics(Bruce)
-much faster new btree bulk load code(Paul)
-BTREE UNIQUE added to bulk load code(Vadim)
-new lock debug code(Massimo)
-massive changes to libpg++(Leo)
-new GEQO optimizer speeds table multitable optimization(Martin)
-new WARN message for non-unique insert into unique key(Marc)
-update x=-3, no spaces, now valid(Bruce)
-remove case-sensitive identifier handling(Bruce,Thomas,Dan)
-debug backend now pretty-prints tree(Darren)
-new Oracle character functions(Edmund)
-new plaintext password functions(Dan)
-no such class or insufficient privilege changed to distinct messages(Dan)
-new ANSI timestamp function(Dan)
-new ANSI Time and Date types (Thomas)
-move large chunks of data in backend(Martin)
-multicolumn btree indexes(Vadim)
-new SET var TO value command(Martin)
-update transaction status on reads(Dan)
-new locale settings for character types(Oleg)
-new SEQUENCE serial number generator(Vadim)
-GROUP BY function now possible(Vadim)
-re-organize regression test(Thomas,Marc)
-new optimizer operation weights(Vadim)
-new psql \z grant/permit option(Marc)
-new MONEY data type(D'Arcy,Thomas)
-tcp socket communication speed improved(Vadim)
-new VACUUM option for attribute statistics, and for certain columns (Vadim)
-many geometric type improvements(Thomas,Keith)
-additional regression tests(Thomas)
-new datestyle variable(Thomas,Vadim,Martin)
-more comparison operators for sorting types(Thomas)
-new conversion functions(Thomas)
-new more compact btree format(Vadim)
-allow pg_dumpall to preserve database ownership(Bruce)
-new SET GEQO=# and R_PLANS variable(Vadim)
-old (!GEQO) optimizer can use right-sided plans (Vadim)
-typechecking improvement in SQL parser(Bruce)
-new SET, SHOW, RESET commands(Thomas,Vadim)
-new \connect database USER option
-new destroydb -i option (Igor)
-new \dt and \di psql commands (Darren)
-SELECT "\n" now escapes newline (A. Duursma)
-new geometry conversion functions from old format (Thomas)
-
-Source tree changes
--------------------
-new configuration script(Marc)
-readline configuration option added(Marc)
-OS-specific configuration options removed(Marc)
-new OS-specific template files(Marc)
-no more need to edit Makefile.global(Marc)
-re-arrange include files(Marc)
-nextstep patches (Gregor Hoffleit)
-removed Windows-specific code(Bruce)
-removed postmaster -e option, now only postgres -e option (Bruce)
-merge duplicate library code in front/backends(Martin)
-now works with eBones, international Kerberos(Jun)
-more shared library support
-c++ include file cleanup(Bruce)
-warn about buggy flex(Bruce)
-DG/UX, Ultrix, IRIX, AIX portability fixes
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-0">
-<title>Release 6.0</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1997-01-29</para>
- </formalpara>
-
-<para>
-A dump/restore is required for those wishing to migrate data from
-previous releases of <productname>PostgreSQL</productname>.
-</para>
-
-<sect2>
-<title>Migration from version 1.09 to version 6.0</title>
-
-<para>
-This migration requires a complete dump of the 1.09 database and a
-restore of the database in 6.0.
-</para>
-</sect2>
-
-<sect2>
-<title>Migration from pre-1.09 to version 6.0</title>
-
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
-<programlisting>
-Bug Fixes
----------
-ALTER TABLE bug - running postgres process needs to re-read table definition
-Allow vacuum to be run on one table or entire database(Bruce)
-Array fixes
-Fix array over-runs of memory writes(Kurt)
-Fix elusive btree range/non-range bug(Dan)
-Fix for hash indexes on some types like time and date
-Fix for pg_log size explosion
-Fix permissions on lo_export()(Bruce)
-Fix uninitialized reads of memory(Kurt)
-Fixed ALTER TABLE ... char(3) bug(Bruce)
-Fixed a few small memory leaks
-Fixed EXPLAIN handling of options and changed full_path option name
-Fixed output of group acl privileges
-Memory leaks (hunt and destroy with tools like Purify(Kurt)
-Minor improvements to rules system
-NOTIFY fixes
-New asserts for run-checking
-Overhauled parser/analyze code to properly report errors and increase speed
-Pg_dump -d now handles NULL's properly(Bruce)
-Prevent SELECT NULL from crashing server (Bruce)
-Properly report errors when INSERT ... SELECT columns did not match
-Properly report errors when insert column names were not correct
-psql \g filename now works(Bruce)
-psql fixed problem with multiple statements on one line with multiple outputs
-Removed duplicate system OIDs
-SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
-Several fixes for queries that crashed the backend
-Starting quote in insert string errors(Bruce)
-Submitting an empty query now returns empty status, not just " " query(Bruce)
-
-Enhancements
-------------
-Add EXPLAIN manual page(Bruce)
-Add UNIQUE index capability(Dan)
-Add hostname/user level access control rather than just hostname and user
-Add synonym of != for &lt;&gt;(Bruce)
-Allow "select oid,* from table"
-Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
-Allow COPY from the frontend(Bryan)
-Allow GROUP BY to use alias column name(Bruce)
-Allow actual compression, not just reuse on the same page(Vadim)
-Allow installation-configuration option to auto-add all local users(Bryan)
-Allow libpq to distinguish between text value '' and null(Bruce)
-Allow non-postgres users with createdb privs to destroydb's
-Allow restriction on who can create C functions(Bryan)
-Allow restriction on who can do backend COPY(Bryan)
-Can shrink tables, pg_time and pg_log(Vadim &amp; Erich)
-Change debug level 2 to print queries only, changed debug heading layout(Bruce)
-Change default decimal constant representation from float4 to float8(Bruce)
-European date format now set when postmaster is started
-Execute lowercase function names if not found with exact case
-Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
-Gist now included in the distribution(Marc)
-Ident authentication of local users(Bryan)
-Implement BETWEEN qualifier(Bruce)
-Implement IN qualifier(Bruce)
-libpq has PQgetisnull()(Bruce)
-libpq++ improvements
-New options to initdb(Bryan)
-Pg_dump allow dump of OIDs(Bruce)
-Pg_dump create indexes after tables are loaded for speed(Bruce)
-Pg_dumpall dumps all databases, and the user table
-Pginterface additions for NULL values(Bruce)
-Prevent postmaster from being run as root
-psql \h and \? is now readable(Bruce)
-psql allow backslashed, semicolons anywhere on the line(Bruce)
-psql changed command prompt for lines in query or in quotes(Bruce)
-psql char(3) now displays as (bp)char in \d output(Bruce)
-psql return code now more accurate(Bryan?)
-psql updated help syntax(Bruce)
-Re-visit and fix vacuum(Vadim)
-Reduce size of regression diffs, remove timezone name difference(Bruce)
-Remove compile-time parameters to enable binary distributions(Bryan)
-Reverse meaning of HBA masks(Bryan)
-Secure Authentication of local users(Bryan)
-Speed up vacuum(Vadim)
-Vacuum now had VERBOSE option(Bruce)
-
-Source tree changes
--------------------
-All functions now have prototypes that are compared against the calls
-Allow asserts to be disabled easily from Makefile.global(Bruce)
-Change oid constants used in code to #define names
-Decoupled sparc and solaris defines(Kurt)
-Gcc -Wall compiles cleanly with warnings only from unfixable constructs
-Major include file reorganization/reduction(Marc)
-Make now stops on compile failure(Bryan)
-Makefile restructuring(Bryan, Marc)
-Merge bsdi_2_1 to bsdi(Bruce)
-Monitor program removed
-Name change from Postgres95 to PostgreSQL
-New config.h file(Marc, Bryan)
-PG_VERSION now set to 6.0 and used by postmaster
-Portability additions, including Ultrix, DG/UX, AIX, and Solaris
-Reduced the number of #define's, centralized #define's
-Remove duplicate OIDS in system tables(Dan)
-Remove duplicate system catalog info or report mismatches(Dan)
-Removed many os-specific #define's
-Restructured object file generation/location(Bryan, Marc)
-Restructured port-specific file locations(Bryan, Marc)
-Unused/uninitialized variables corrected
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-1-09">
-<title>Release 1.09</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1996-11-04</para>
- </formalpara>
-
-<para>
-Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
-the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
-releases.
-</para>
-</sect1>
-
-<sect1 id="release-1-02">
-<title>Release 1.02</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1996-08-01</para>
- </formalpara>
-
-<sect2>
-<title>Migration from version 1.02 to version 1.02.1</title>
-
-<para>
-Here is a new migration file for 1.02.1. It includes the 'copy' change
-and a script to convert old <acronym>ASCII</acronym> files.
-</para>
-<note>
-<para>
-The following notes are for the benefit of users who want to migrate
-databases from <productname>Postgres95</productname> 1.01 and 1.02 to <productname>Postgres95</productname> 1.02.1.
-</para>
-<para>
-If you are starting afresh with <productname>Postgres95</productname> 1.02.1 and do not need
-to migrate old databases, you do not need to read any further.
-</para>
-</note>
-
-<para>
-In order to upgrade older <productname>Postgres95</productname> version 1.01 or 1.02 databases to
-version 1.02.1, the following steps are required:
-</para>
-<procedure>
-<step>
-<para>
-Start up a new 1.02.1 postmaster
-</para>
-</step>
-<step>
-<para>
-Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
- databases. This is done by running the new 1.02.1 server against
- your own 1.01 or 1.02 database and applying the queries attached at
- the end of the file. This can be done easily through <command>psql</command>. If your
- 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
- from the end of this file and saved them in <filename>addfunc.sql</filename>:
-<programlisting>
-% psql testdb -f addfunc.sql
-</programlisting>
-
-Those upgrading 1.02 databases will get a warning when executing the
-last two statements in the file because they are already present in 1.02. This is
-not a cause for concern.
-</para>
-</step>
-</procedure>
-</sect2>
-
-<sect2>
-<title>Dump/Reload Procedure</title>
-
-<para>
-If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
-stdout</literal> generated with a previous version, you will need to run the
-attached <command>sed</command> script on the ASCII file before loading it into the
-database. The old format used '.' as end-of-data, while '\.' is now the
-end-of-data marker. Also, empty strings are now loaded in as '' rather
-than NULL. See the copy manual page for full details.
-
-<programlisting>
-sed 's/^\.$/\\./g' &lt;in_file &gt;out_file
-</programlisting>
-</para>
-<para>
-If you are loading an older binary copy or non-<systemitem>stdout</systemitem> copy, there is no
-end-of-data character, and hence no conversion necessary.
-
-<programlisting>
--- following lines added by agc to reflect the case-insensitive
--- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
-create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
-create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
-</programlisting>
-</para>
-</sect2>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Source code maintenance and development
- * worldwide team of volunteers
- * the source tree now in CVS at ftp.ki.net
-
-Enhancements
- * psql (and underlying libpq library) now has many more options for
- formatting output, including HTML
- * pg_dump now output the schema and/or the data, with many fixes to
- enhance completeness.
- * psql used in place of monitor in administration shell scripts.
- monitor to be deprecated in next release.
- * date/time functions enhanced
- * NULL insert/update/comparison fixed/enhanced
- * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
-
-Bug Fixes (almost too numerous to mention)
- * indexes
- * storage management
- * check for NULL pointer before dereferencing
- * Makefile fixes
-
-New Ports
- * added SolarisX86 port
- * added BSD/OS 2.1 port
- * added DG/UX port
-</programlisting>
-</para>
-<!--
-Contributors (apologies to any missed)
- * Kurt J. Lidl &lt;lidl@va.pubnix.com&gt;
- (missed in first run, but no less important)
- * Erich Stamberger &lt;eberger@gewi.kfunigraz.ac.at&gt;
- * Jason Wright &lt;jason@shiloh.vnet.net&gt;
- * Cees de Groot &lt;C.deGroot@inter.NL.net&gt;
- * ernst.molitor@uni-bonn.de
- * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
- * Brian E. Gallew &lt;geek+@cmu.edu&gt;
- * Vadim B. Mikheev &lt;vadim@sable.krasnoyarsk.su&gt;
- * Adam Sussman &lt;myddryn@vidya.com&gt;
- * Chris Dunlop &lt;chris@onthe.net.au&gt;
- * Marc G. Fournier &lt;scrappy@ki.net&gt;
- * Dan McGuirk &lt;mcguirk@indirect.com&gt;
- * Dr_George_D_Detlefsen &lt;drgeorge@ilt.com&gt;
- * Erich Stamberger &lt;eberger@gewi.kfunigraz.ac.at&gt;
- * Massimo Dal Zotto &lt;dz@cs.unitn.it&gt;
- * Randy Kunkee &lt;kunkee@Starbase.NeoSoft.COM&gt;
- * Rick Weldon &lt;rick@wisetech.com&gt;
- * Thomas van Reimersdahl &lt;reimersd@dali.techinfo.rwth-aachen.de&gt;
- * david bennett &lt;dave@bensoft.com&gt;
- * ernst.molitor@uni-bonn.de
- * Julian Assange &lt;proff@suburbia.net&gt;
- * Bruce Momjian &lt;pgman@candle.pha.pa.us&gt;
- * Paul "Shag" Walmsley &lt;ccshag@cclabs.missouri.edu&gt;
- * "Alistair G. Crooks" &lt;azcb0@sde.uts.amdahl.com&gt;
--->
-</sect2>
-</sect1>
-
-<sect1 id="release-1-01">
-<title>Release 1.01</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1996-02-23</para>
- </formalpara>
-
-
-<sect2>
-<title>Migration from version 1.0 to version 1.01</title>
-
-<para>
-The following notes are for the benefit of users who want to migrate
-databases from <productname>Postgres95</productname> 1.0 to <productname>Postgres95</productname> 1.01.
-</para>
-<para>
-If you are starting afresh with <productname>Postgres95</productname> 1.01 and do not need
-to migrate old databases, you do not need to read any further.
-</para>
-<para>
-In order to <productname>Postgres95</productname> version 1.01 with databases created with
-<productname>Postgres95</productname> version 1.0, the following steps are required:
-</para>
-<procedure>
-<step>
-<para>
-Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
- and <symbol>OIDNAMELEN</symbol> to 20.
-</para>
-</step>
-<step>
-<para>
-Decide whether you want to use Host based authentication.
-</para>
-<substeps>
-<step>
-<para>
-If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
- directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
- shows an example syntax.
-</para>
-</step>
-<step>
-<para>
-If you do not want host-based authentication, you can comment out
- the line:
-<programlisting>
-HBA = 1
-</programlisting>
- in <filename>src/Makefile.global</filename>
-</para>
-<para>
- Note that host-based authentication is turned on by default, and if
- you do not take steps A or B above, the out-of-the-box 1.01 will
- not allow you to connect to 1.0 databases.
-</para>
-</step>
-</substeps>
-</step>
-
-<step>
-<para>
-Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
-</para>
-</step>
-<step>
-<para>
-Before doing anything else, terminate your 1.0 postmaster, and
- backup your existing <envar>$PGDATA</envar> directory.
-</para>
-</step>
-<step>
-<para>
-Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
- path up so that 1.01 binaries are being used.
-</para>
-</step>
-<step>
-<para>
-Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
-</para>
-</step>
-<step>
-<para>
-Start up a new 1.01 postmaster
-</para>
-</step>
-<step>
-<para>
-Add the new built-in functions and operators of 1.01 to 1.0
- databases. This is done by running the new 1.01 server against
- your own 1.0 database and applying the queries attached and saving
- in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
- If your 1.0 database is name <literal>testdb</literal>:
-
-<programlisting>
-% psql testdb -f 1.0_to_1.01.sql
-</programlisting>
-
-and then execute the following commands (cut and paste from here):
-
-<programlisting>
--- add builtin functions that are new to 1.01
-
-create function int4eqoid (int4, oid) returns bool as 'foo'
-language 'internal';
-create function oideqint4 (oid, int4) returns bool as 'foo'
-language 'internal';
-create function char2icregexeq (char2, text) returns bool as 'foo'
-language 'internal';
-create function char2icregexne (char2, text) returns bool as 'foo'
-language 'internal';
-create function char4icregexeq (char4, text) returns bool as 'foo'
-language 'internal';
-create function char4icregexne (char4, text) returns bool as 'foo'
-language 'internal';
-create function char8icregexeq (char8, text) returns bool as 'foo'
-language 'internal';
-create function char8icregexne (char8, text) returns bool as 'foo'
-language 'internal';
-create function char16icregexeq (char16, text) returns bool as 'foo'
-language 'internal';
-create function char16icregexne (char16, text) returns bool as 'foo'
-language 'internal';
-create function texticregexeq (text, text) returns bool as 'foo'
-language 'internal';
-create function texticregexne (text, text) returns bool as 'foo'
-language 'internal';
-
--- add builtin functions that are new to 1.01
-
-create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
-create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
-create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
-create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
-create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
-create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
-create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
-create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
-create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
-create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
-create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
-</programlisting>
-</para>
-</step>
-</procedure>
-</sect2>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Incompatibilities:
- * 1.01 is backwards compatible with 1.0 database provided the user
- follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
- If those steps are not taken, 1.01 is not compatible with 1.0 database.
-
-Enhancements:
- * added PQdisplayTuples() to libpq and changed monitor and psql to use it
- * added NeXT port (requires SysVIPC implementation)
- * added CAST .. AS ... syntax
- * added ASC and DESC key words
- * added 'internal' as a possible language for CREATE FUNCTION
- internal functions are C functions which have been statically linked
- into the postgres backend.
- * a new type "name" has been added for system identifiers (table names,
- attribute names, etc.) This replaces the old char16 type. The
- of name is set by the NAMEDATALEN #define in src/Makefile.global
- * a readable reference manual that describes the query language.
- * added host-based access control. A configuration file ($PGDATA/pg_hba)
- is used to hold the configuration data. If host-based access control
- is not desired, comment out HBA=1 in src/Makefile.global.
- * changed regex handling to be uniform use of Henry Spencer's regex code
- regardless of platform. The regex code is included in the distribution
- * added functions and operators for case-insensitive regular expressions.
- The operators are ~* and !~*.
- * pg_dump uses COPY instead of SELECT loop for better performance
-
-Bug fixes:
- * fixed an optimizer bug that was causing core dumps when
- functions calls were used in comparisons in the WHERE clause
- * changed all uses of getuid to geteuid so that effective uids are used
- * psql now returns non-zero status on errors when using -c
- * applied public patches 1-14
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-1-0">
-<title>Release 1.0</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1995-09-05</para>
- </formalpara>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Copyright change:
- * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
- and modifiable for any purpose. Please read the COPYRIGHT file.
- Thanks to Professor Michael Stonebraker for making this possible.
-
-Incompatibilities:
- * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
- EUROPEAN STYLE). This follows SQL-92 specs.
- * "delimiters" is now a key word
-
-Enhancements:
- * sql LIKE syntax has been added
- * copy command now takes an optional USING DELIMITER specification.
- delimiters can be any single-character string.
- * IRIX 5.3 port has been added.
- Thanks to Paul Walmsley and others.
- * updated pg_dump to work with new libpq
- * \d has been added psql
- Thanks to Keith Parks
- * regexp performance for architectures that use POSIX regex has been
- improved due to caching of precompiled patterns.
- Thanks to Alistair Crooks
- * a new version of libpq++
- Thanks to William Wanders
-
-Bug fixes:
- * arbitrary userids can be specified in the createuser script
- * \c to connect to other databases in psql now works.
- * bad pg_proc entry for float4inc() is fixed
- * users with usecreatedb field set can now create databases without
- having to be usesuper
- * remove access control entries when the entry no longer has any
- privileges
- * fixed non-portable datetimes implementation
- * added kerberos flags to the src/backend/Makefile
- * libpq now works with kerberos
- * typographic errors in the user manual have been corrected.
- * btrees with multiple index never worked, now we tell you they don't
- work when you try to use them
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-03">
-<title><productname>Postgres95</productname> Release 0.03</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1995-07-21</para>
- </formalpara>
-
-<sect2>
-<title>Changes</title>
-<para>
-<programlisting>
-Incompatible changes:
- * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
- (due to system catalog changes and indexing structure changes).
- * double-quote (") is deprecated as a quoting character for string literals;
- you need to convert them to single quotes ('). <!-- " -->
- * name of aggregates (eg. int4sum) are renamed in accordance with the
- SQL standard (eg. sum).
- * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
- * float literals (eg. 3.14) are now of type float4 (instead of float8 in
- previous releases); you might have to do typecasting if you depend on it
- being of type float8. If you neglect to do the typecasting and you assign
- a float literal to a field of type float8, you might get incorrect values
- stored!
- * LIBPQ has been totally revamped so that frontend applications
- can connect to multiple backends
- * the usesysid field in pg_user has been changed from int2 to int4 to
- allow wider range of Unix user ids.
- * the netbsd/freebsd/bsd o/s ports have been consolidated into a
- single BSD44_derived port. (thanks to Alistair Crooks)
-
-SQL standard-compliance (the following details changes that makes postgres95
-more compliant to the SQL-92 standard):
- * the following SQL types are now built-in: smallint, int(eger), float, real,
- char(N), varchar(N), date and time.
-
- The following are aliases to existing postgres types:
- smallint -&gt; int2
- integer, int -&gt; int4
- float, real -&gt; float4
- char(N) and varchar(N) are implemented as truncated text types. In
- addition, char(N) does blank-padding.
- * single-quote (') is used for quoting string literals; '' (in addition to
- \') is supported as means of inserting a single quote in a string
- * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
- (Also, aggregates can now be overloaded, i.e. you can define your
- own MAX aggregate to take in a user-defined type.)
- * CHANGE ACL removed. GRANT/REVOKE syntax added.
- - Privileges can be given to a group using the "GROUP" key word.
- For example:
- GRANT SELECT ON foobar TO GROUP my_group;
- The key word 'PUBLIC' is also supported to mean all users.
-
- Privileges can only be granted or revoked to one user or group
- at a time.
-
- "WITH GRANT OPTION" is not supported. Only class owners can change
- access control
- - The default access control is to grant users readonly access.
- You must explicitly grant insert/update access to users. To change
- this, modify the line in
- src/backend/utils/acl.h
- that defines ACL_WORLD_DEFAULT
-
-Bug fixes:
- * the bug where aggregates of empty tables were not run has been fixed. Now,
- aggregates run on empty tables will return the initial conditions of the
- aggregates. Thus, COUNT of an empty table will now properly return 0.
- MAX/MIN of an empty table will return a row of value NULL.
- * allow the use of \; inside the monitor
- * the LISTEN/NOTIFY asynchronous notification mechanism now work
- * NOTIFY in rule action bodies now work
- * hash indexes work, and access methods in general should perform better.
- creation of large btree indexes should be much faster. (thanks to Paul
- Aoki)
-
-Other changes and enhancements:
- * addition of an EXPLAIN statement used for explaining the query execution
- plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
- the query).
- * WARN and NOTICE messages no longer have timestamps on them. To turn on
- timestamps of error messages, uncomment the line in
- src/backend/utils/elog.h:
- /* define ELOG_TIMESTAMPS */
- * On an access control violation, the message
- "Either no such class or insufficient privilege"
- will be given. This is the same message that is returned when
- a class is not found. This dissuades non-privileged users from
- guessing the existence of privileged classes.
- * some additional system catalog changes have been made that are not
- visible to the user.
-
-libpgtcl changes:
- * The -oid option has been added to the "pg_result" tcl command.
- pg_result -oid returns oid of the last row inserted. If the
- last command was not an INSERT, then pg_result -oid returns "".
- * the large object interface is available as pg_lo* tcl commands:
- pg_lo_open, pg_lo_close, pg_lo_creat, etc.
-
-Portability enhancements and New Ports:
- * flex/lex problems have been cleared up. Now, you should be able to use
- flex instead of lex on any platforms. We no longer make assumptions of
- what lexer you use based on the platform you use.
- * The Linux-ELF port is now supported. Various configuration have been
- tested: The following configuration is known to work:
- kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
- with everything in ELF format,
-
-New utilities:
- * ipcclean added to the distribution
- ipcclean usually does not need to be run, but if your backend crashes
- and leaves shared memory segments hanging around, ipcclean will
- clean them up for you.
-
-New documentation:
- * the user manual has been revised and libpq documentation added.
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-02">
-<title><productname>Postgres95</productname> Release 0.02</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1995-05-25</para>
- </formalpara>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Incompatible changes:
- * The SQL statement for creating a database is 'CREATE DATABASE' instead
- of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
- of 'DESTROYDB'. However, the names of the executables 'createdb' and
- 'destroydb' remain the same.
-
-New tools:
- * pgperl - a Perl (4.036) interface to Postgres95
- * pg_dump - a utility for dumping out a postgres database into a
- script file containing query commands. The script files are in an ASCII
- format and can be used to reconstruct the database, even on other
- machines and other architectures. (Also good for converting
- a Postgres 4.2 database to Postgres95 database.)
-
-The following ports have been incorporated into postgres95-beta-0.02:
- * the NetBSD port by Alistair Crooks
- * the AIX port by Mike Tung
- * the Windows NT port by Jon Forrest (more stuff but not done yet)
- * the Linux ELF port by Brian Gallew
-
-The following bugs have been fixed in postgres95-beta-0.02:
- * new lines not escaped in COPY OUT and problem with COPY OUT when first
- attribute is a '.'
- * cannot type return to use the default user id in createuser
- * SELECT DISTINCT on big tables crashes
- * Linux installation problems
- * monitor doesn't allow use of 'localhost' as PGHOST
- * psql core dumps when doing \c or \l
- * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
- * libpgtcl has a hard-wired default port number
- * SELECT DISTINCT INTO TABLE hangs
- * CREATE TYPE doesn't accept 'variable' as the internallength
- * wrong result using more than 1 aggregate in a SELECT
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-01">
-<title><productname>Postgres95</productname> Release 0.01</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>1995-05-01</para>
- </formalpara>
-
-<para>
-Initial release.
-</para>
-</sect1>
diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml
index 4055adf88f2..1637b787638 100644
--- a/doc/src/sgml/release.sgml
+++ b/doc/src/sgml/release.sgml
@@ -70,27 +70,81 @@ For new features, add links to the documentation sections.
</para>
<!--
- To add a new major-release series, add an entry here and in filelist.sgml.
-
- The reason for splitting the release notes this way is so that appropriate
- subsets can easily be copied into back branches.
+ When beginning a new major-release series, create a new release-NN.sgml
+ file, removing the previous one, and change the &-reference here.
+ Don't forget to update filelist.sgml. Also, add a link to the on-line
+ documentation for the newly forked-off branch in the list below.
+
+ The reason for keeping each branch's release notes in a differently-named
+ file is to reduce confusion when preparing minor-release updates.
+ All the active branches have to be edited concurrently when doing that.
-->
+
&release-12;
-&release-11;
-&release-10;
-&release-9.6;
-&release-9.5;
-&release-9.4;
-&release-9.3;
-&release-9.2;
-&release-9.1;
-&release-9.0;
-&release-8.4;
-&release-8.3;
-&release-8.2;
-&release-8.1;
-&release-8.0;
-&release-7.4;
-&release-old;
+
+ <sect1 id="release-prior">
+ <title>Prior Releases</title>
+
+ <para>
+ Release notes for prior release branches can be found on the
+ <ulink url="https://www.postgresql.org/"><productname>PostgreSQL</productname></ulink>
+ web site. At the time of release of version 12,
+ these were the supported prior release branches:
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> 11:
+ <ulink url="https://www.postgresql.org/docs/11/release.html">
+ <literal>https://www.postgresql.org/docs/11/release.html</literal>
+ </ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> 10:
+ <ulink url="https://www.postgresql.org/docs/10/release.html">
+ <literal>https://www.postgresql.org/docs/10/release.html</literal>
+ </ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> 9.6:
+ <ulink url="https://www.postgresql.org/docs/9.6/release.html">
+ <literal>https://www.postgresql.org/docs/9.6/release.html</literal>
+ </ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> 9.5:
+ <ulink url="https://www.postgresql.org/docs/9.5/release.html">
+ <literal>https://www.postgresql.org/docs/9.5/release.html</literal>
+ </ulink>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> 9.4:
+ <ulink url="https://www.postgresql.org/docs/9.4/release.html">
+ <literal>https://www.postgresql.org/docs/9.4/release.html</literal>
+ </ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ Release notes for older release branches can be found at
+ <ulink url="https://www.postgresql.org/docs/manuals/archive/">
+ <literal>https://www.postgresql.org/docs/manuals/archive/</literal>
+ </ulink>
+ </para>
+ </sect1>
</appendix>
diff --git a/src/tools/RELEASE_CHANGES b/src/tools/RELEASE_CHANGES
index 65a1ffc83d5..aa1a3e1ee4f 100644
--- a/src/tools/RELEASE_CHANGES
+++ b/src/tools/RELEASE_CHANGES
@@ -7,7 +7,7 @@ For All Releases (major, minor, beta, RC)
* Release notes
o run git log and, if useful, src/tools/git_changelog
- o update doc/src/sgml/release.sgml
+ o update doc/src/sgml/release-NN.sgml in relevant branches
o run spellchecker on result
o add SGML markup
@@ -30,6 +30,11 @@ For Major Releases
==================
(in addition to the above)
+Note that once the release branch has been forked off in git,
+release-note editing happens in that branch, not in HEAD.
+Updates to the rest of the documentation usually need to happen
+in both HEAD and the branch.
+
* Release notes
o use src/tools/git_changelog
o retain the relevant commits
@@ -51,10 +56,6 @@ For Major Releases
o document all new features
o update help output from inside the programs
o doc/src/sgml/ref manual pages
- o update the sizes specified for installation requirements
- (doc/src/sgml/installation.sgml, section "install-requirements")
- o update the shared memory size requirement table
- (doc/src/sgml/runtime.sgml, section "shared-memory-parameters")
* Ports
o update config.guess and config.sub at the start of beta
@@ -85,9 +86,14 @@ Starting a New Development Cycle
* Run "src/tools/version_stamp.pl devel", then run autoconf
+* Create a new doc/src/sgml/release-NN.sgml file (initially just a
+ placeholder), "git rm" the previous one, and update release.sgml and
+ filelist.sgml to match.
+
* Get the buildfarm's 'branches_of_interest.txt' file updated with the new
branch.
+
Creating Back-Branch Release Notes
==================================
@@ -96,21 +102,32 @@ Creating Back-Branch Release Notes
branch tag and not the release date, as commits could have been done
between branch stamping and the release date.
-* On the git master branch, edit and create SGML markup for the most recent
- branch in that branch's release-N.N.sgml file. Minor release notes
- should include more small change details because testing is limited.
+* Remember to include any older branch commits not in the newest branch.
+ This can be accomplished by diff'ing the newest and older branch commit
+ logs and looking for lines that only appear in the older branch, e.g.:
+
+ diff commit-N.N.log commit-O.O.log | grep '^>'
+
+* On the most recent release branch (*not* in HEAD), edit and create SGML
+ markup for relevant changes in that branch's release-NN.sgml file.
+ Minor release notes should include more small change details because
+ testing is limited.
-* Copy this into older branches' release-N.N.sgml files, then remove
+* Copy this text into older branches' release-NN.sgml files, then remove
items that do not apply based on commit logs for that branch.
-* Add any older branch commits not in the newest branch. This can be
- accomplished by diff'ing the newest and older branch commit logs and
- looking for lines that only appear in the older branch, e.g.:
+* The minor release notes for the oldest active branch should always
+ include a warning about its impending EOL. Use the same boilerplate
+ text used in previous branches.
- diff commit-N.N.log commit-O.O.log | grep '^>'
-* Copy the appropriate release-N.N.sgml files into each back branch SGML
- directory.
+Retiring a Branch
+=================
+
+After support is dropped for an old branch, remove the link for it
+in HEAD's doc/src/sgml/release.sgml. If the newest back branch hasn't
+yet reached GA release, do the same there. (Given our current development
+calendar, the latter should seldom be necessary.)