<!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">
+++ /dev/null
-<!-- 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, Á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 (Á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, Á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,
- Á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, Á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, Á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,
- Á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
- (Á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
- (Á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 (Á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, Á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>
- (Á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ö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 & 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 — for example, user-provided functions in index
- expressions — 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>~></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
- (Á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, Á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 (Á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>~></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 (Á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 (Á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>@></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 & 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 (Á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 (Á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í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å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,
- Á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, Á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, Á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å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 (Á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érité, 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å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>Álvaro Hernández Tortosa</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 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å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érité</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örklund</member>
- <member>Devrim Gündü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ö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ízio de Royes Mello</member>
- <member>Feike Steenbergen</member>
- <member>Felix Gerzaguet</member>
- <member>Filip Jirsá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ín Marqué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á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ínek</member>
- <member>Philippe Beaudoin</member>
- <member>Pierre-Emmanuel André</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>
+++ /dev/null
-<!-- 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 (Á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 (Á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 (Á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 (Á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 < from <= and > from >=.
--->
-
- <para>
- Improve selectivity estimates for <literal>>=</literal>
- and <literal><=</literal> (Tom Lane)
- </para>
-
- <para>
- Previously, such cases used the same selectivity estimates
- as <literal>></literal> and <literal><</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úl Marín Rodrí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 < and & 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ü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 ~> (cube, int) operator
--->
-
- <para>
- Allow retrieval of negative cube coordinates using
- the <literal>~></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>
<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>
+++ /dev/null
-<!-- 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 — 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 > 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öjthe Zoltá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 >= 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öjthe Zoltán)</para></listitem>
- <listitem><para>Fix dbase <option>-s</option> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
- <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
- </itemizedlist>
- </sect3>
- </sect2>
-</sect1>
+++ /dev/null
-<!-- 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 — 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> — 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) > 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ö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ö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ö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>
+++ /dev/null
-<!-- 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> — does this release
- treat backslashes literally in ordinary strings?
- </para>
- </listitem>
-
- <listitem>
- <para>
- <varname>escape_string_warning</varname> — 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>&<</literal> and <literal>&></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ö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><<</literal>, <literal>>></literal>,
- <literal>&<</literal>, and <literal>&></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 < 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>
+++ /dev/null
-<!-- 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>... & !(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>=></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 <> comparisons followed the
- standard but < <= > >= 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š)
- </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 <, <=, >, >= 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 — 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>@></literal>,
- <literal><@</literal>, <literal>&&</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>&</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ø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 >
- and < 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>@></literal>,
- <literal><@</literal>, <literal>&&</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>
+++ /dev/null
-<!-- 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 (Á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
- (Á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[] &
- 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>... & !(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>=></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
- — 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 < 2017-11-17
-</programlisting>
-
- This is actually comparing a date to an integer, which should be
- (and now is) rejected — 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 < text</literal> operator was able
- to match the expression when no other <literal><</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> — 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> — 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> — 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
- >= 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>
+++ /dev/null
-<!-- 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
- (Á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&"..."</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() < 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án Böszörmé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 (Á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
- (Á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[] &
- 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>... & !(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>=></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
- — 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>~<>~</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&'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ászló)
- </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>
+++ /dev/null
-<!-- 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 (Á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, Á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
- (Á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 (Á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 (Á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, Á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>@></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 (Á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 & 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
- (Á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&"..."</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() < 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án Böszörmé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 (Á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
- (Á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[] &
- 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>... & !(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>=></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><></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&</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><@</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>&&</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>@></literal> and
- <literal><@</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