diff options
Diffstat (limited to 'doc/src/sgml/release-8.2.sgml')
-rw-r--r-- | doc/src/sgml/release-8.2.sgml | 7077 |
1 files changed, 0 insertions, 7077 deletions
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml deleted file mode 100644 index 8a67cf22ccf..00000000000 --- a/doc/src/sgml/release-8.2.sgml +++ /dev/null @@ -1,7077 +0,0 @@ -<!-- doc/src/sgml/release-8.2.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-2-23"> - <title>Release 8.2.23</title> - - <formalpara> - <title>Release date:</title> - <para>2011-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.22. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> 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</> 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</> 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</>, - 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</> schema then re-create it by sourcing - <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>. - (Run <literal>pg_config --sharedir</> if you're uncertain where - <replaceable>SHAREDIR</> 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</> or <literal>INSERT INTO dest SELECT * FROM src</> - (Tom Lane) - </para> - - <para> - If a table has been modified by <command>ALTER TABLE ADD COLUMN</>, - 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</>, where the cited - toast table would always belong to a system catalog. - </para> - </listitem> - - <listitem> - <para> - Improve locale support in <type>money</> type's input and output - (Tom Lane) - </para> - - <para> - Aside from not supporting all standard - <link linkend="guc-lc-monetary"><varname>lc_monetary</></link> - formatting options, the input and output functions were inconsistent, - meaning there were locales in which dumped <type>money</> values could - not be re-read. - </para> - </listitem> - - <listitem> - <para> - Don't let <link - linkend="guc-transform-null-equals"><varname>transform_null_equals</></link> - affect <literal>CASE foo WHEN NULL ...</> constructs - (Heikki Linnakangas) - </para> - - <para> - <varname>transform_null_equals</> is only supposed to affect - <literal>foo = NULL</> expressions written directly by the user, not - equality checks generated internally by this form of <literal>CASE</>. - </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</> trigger and the - <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</> - trigger must execute first, else the <literal>CHECK</> 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</>. 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</>'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</> 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()</> - (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</> to <literal>CST6</>, not - <literal>CST6CDT</>, because DST is generally not observed anywhere in - Central America. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> 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</> - (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 ...</> 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</> in a view (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow <literal>SELECT FOR UPDATE/SHARE</> 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</> authentication (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix typo in <function>pg_srand48</> 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</>), - 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</> and - <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Add overflow checks to <type>int4</> and <type>int8</> versions of - <function>generate_series()</> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp) - </para> - - <para> - In a format with <literal>FM</> 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()</> to avoid overflow for inputs close to - 2^63 (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s counting of script file line numbers during - <literal>COPY</> from a different file (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - <varname>standard_conforming_strings</> (Tom Lane) - </para> - - <para> - <application>pg_restore</> could emit incorrect commands when restoring - directly to a database server from an archive file that had been made - with <varname>standard_conforming_strings</> set to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Fix write-past-buffer-end and memory leak in <application>libpq</>'s - LDAP service lookup code (Albe Laurenz) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</>, 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()</> - failure during SSL connection startup is now saner. - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</> write <type>double</> 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</>'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</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgstatindex()</> 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</> 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</> 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</> failures while trying to - do <literal>UPDATE RETURNING ctid</>. 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</> when there are pending deferred trigger - events for the table (Tom Lane) - </para> - - <para> - Formerly the <command>DROP</> would go through, leading to - <quote>could not open relation with OID nnn</> 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</> 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</> on Cygwin - (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> tries to display a simple-form - <literal>CASE</> expression (Tom Lane) - </para> - - <para> - If the <literal>CASE</>'s test expression was a constant, the planner - could simplify the <literal>CASE</> into a form that confused the - expression-display code, resulting in <quote>unexpected CASE WHEN - clause</> 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 supports a wider range of dates than can be - represented by the <type>timestamp</> types, but the planner assumed it - could always convert a date to timestamp with impunity. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s text output for large objects (BLOBs) - when <varname>standard_conforming_strings</> is on (Tom Lane) - </para> - - <para> - Although restoring directly to a database worked correctly, string - escaping was incorrect if <application>pg_restore</> was asked for - SQL text output and <varname>standard_conforming_strings</> had been - enabled in the source database. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous parsing of <type>tsquery</> 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</>'s - <type>query_int</> type and <filename>contrib/ltree</>'s - <type>ltxtquery</> type. - </para> - </listitem> - - <listitem> - <para> - Fix buffer overrun in <filename>contrib/intarray</>'s input function - for the <type>query_int</> 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</>'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</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. (This is identical to the bug that was fixed in - <filename>contrib/cube</> 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</></link> - to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</> for many - years, but recent kernel changes caused <productname>PostgreSQL</> to - choose <literal>open_datasync</> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</> with the - <literal>data=journal</> 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</> 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</> - (Tom Lane) - </para> - - <para> - The <literal>IA64</> 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()</> (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</> 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</>'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.*))</> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</> a SQL function with multiple <literal>OUT</> - 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>LIMIT</>, - <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the - <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</> 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</> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</> 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</>'s handling of <quote>simple</> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/Python</>'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</>'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</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</> notices in - <filename>contrib/dblink</> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> 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()</> 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</>) 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</> 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</> 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</>'s <literal>%i</> 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</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'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</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>hstore(text, text)</> - function to <filename>contrib/hstore</> (Robert Haas) - </para> - - <para> - This function is the recommended substitute for the now-deprecated - <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</> is installed or - reinstalled in a particular database. Users might prefer to execute - the <command>CREATE FUNCTION</> 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</> 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</> 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</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> 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</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - 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</> (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</> 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</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - 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</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> 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</> 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</> 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</> 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</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>\copy</> to not add spaces around - a dot within <literal>\copy (select ...)</> (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</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - 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</> 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</> (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</> 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()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (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</> 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</> constraint (Tom) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <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"</> 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</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible infinite loop if <function>SSL_read</> or - <function>SSL_write</> fails without setting <varname>errno</> (Tom) - </para> - - <para> - This is reportedly possible with some Windows versions of - <application>openssl</>. - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>numericlocale</> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> return the correct exit status (3) when - <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are - both specified and an error occurs during the implied <command>COMMIT</> - (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</> 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</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Make building of <filename>contrib/xml2</> 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</> - could be dropped under heavy load. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> 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>cidr</> 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</> 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</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug with calling <literal>plperl</> from <literal>plperlu</> 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</> 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</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> 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</> and <literal>SGT</> to the default - timezone abbreviation set. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> columns, - you must <command>REINDEX</> 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()</> - (Heikki) - </para> - - <para> - This avoids corner cases that could render a base backup unusable. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Make <command>LOAD</> of an already-loaded loadable module - into a no-op (Tom) - </para> - - <para> - Formerly, <command>LOAD</> 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</> (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</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> 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</> 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</> (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</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/hstore</> 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</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (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</> 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</> 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</> 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()</> 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</> when C locale is - used with a multi-byte encoding (Teodor) - </para> - - <para> - Crashes were possible on platforms where <type>wchar_t</> is narrower - than <type>int</>; Windows in particular. - </para> - </listitem> - - <listitem> - <para> - Fix extreme inefficiency in <filename>contrib/tsearch2</> parser's - handling of an email-like string containing multiple <literal>@</> - characters (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix decompilation of <literal>CASE WHEN</> 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</> 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</> or a rewriting variant of <command>ALTER TABLE</> - were executed by someone other than the table owner, the - <structname>pg_type</> 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</> - warnings from <application>pg_dump</> after having done so (in 8.3). - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for <command>INSERT INTO</> within - <command>CREATE RULE</> (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()</> 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>NOTIFY</> as well as other - operations. - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (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 (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - 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</> is rewritten into an <command>UPDATE</> (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</> - 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</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix a problem that made <literal>UPDATE RETURNING tableoid</> - 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 ...</> - </para> - </listitem> - - <listitem> - <para> - Improve optimizer's handling of long <literal>IN</> 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</>'s - <function>dblink_get_result(text,bool)</> function (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix possible garbage output from <filename>contrib/sslinfo</> functions - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>configure</> 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</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> 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</> 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</>. - </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</> 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</> <literal>IN</> - (<replaceable>expression-list</>) 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</> appears - in a function call in <literal>FROM</>, a multi-row <literal>VALUES</> - list, or a <literal>RETURNING</> list (Tom) - </para> - - <para> - The usual symptom of this problem is an <quote>unrecognized node type</> - 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</> numbers - when moving a table to another tablespace with <command>ALTER SET - TABLESPACE</> (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</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - 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</>'s parsing of <command>CREATE ROLE</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <filename>pg_control</> is opened in binary mode - (Itagaki Takahiro) - </para> - - <para> - <application>pg_controldata</> and <application>pg_resetxlog</> - did this incorrectly, and so could fail on Windows. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</> (Alvaro) - </para> - - <para> - This error may explain some recent reports of failure to remove old - <structname>pg_clog</> 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</> 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</> 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</> or <command>UPDATE</> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</>, 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</> (Tom) - </para> - - <para> - This would typically result in strange errors such as <quote>cache - lookup failed for relation NNN</>. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>AT TIME ZONE</> 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</> 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</> accepted - <emphasis>only</> 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</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> 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</> 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</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not fail when a <literal>FOR</> 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</> from trying to send more than 64kB per system call - (Magnus) - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to properly preserve postmaster - command-line arguments across a <literal>restart</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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()</> 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</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> 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</> update - <structname>pg_shdepend</> (Tom) - </para> - - <para> - This oversight could lead to problems if the aggregate was later - involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</> - 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</> 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</> failure when inheriting the - <quote>same</> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_get_ruledef()</> to show the alias, if any, attached - to the target table of an <command>UPDATE</> or <command>DELETE</> - (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</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix several datatype input functions, notably <function>array_in()</>, - 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</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</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)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix broken GiST comparison function for <filename>contrib/tsearch2</>'s - <type>tsquery</> type (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes in <filename>contrib/cube</> functions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</>'s - <function>xpath_table()</> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s makefile to not override - <literal>CFLAGS</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</> (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</> 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</> to fix existing indexes on textual columns. - </para> - </listitem> - - <listitem> - <para> - Repair potential deadlock between concurrent <command>VACUUM FULL</> - operations on different system catalogs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> 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 will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - 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</> and <command>UNLISTEN</> 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</> 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</> error in some variants of - <command>ALTER OWNER</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <structname>pg_stat_activity</>.<structfield>waiting</> 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</> release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</> to defend against possible misoptimization - in recent <application>gcc</> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</> - with <application>gcc</> 4.3 or later. - </para> - </listitem> - - - <listitem> - <para> - Correctly enforce <varname>statement_timeout</> values longer - than <literal>INT_MAX</> microseconds (about 35 minutes) (Tom) - </para> - - <para> - This bug affects only builds with <option>--enable-integer-datetimes</>. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unexpected PARAM_SUBLINK ID</> 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</> and <literal>NOT</> 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</> - 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</> - and <literal>GROUP BY</> (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</> 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>ANALYZE</>, 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</>, 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>ANALYZE</>, <command>REINDEX</>, - and <command>CLUSTER</>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a - <literal>SECURITY DEFINER</> 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</> 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</> 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</> is 4GB or more (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> 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 ...)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE TABLE ... SERIAL</> and - <command>ALTER SEQUENCE ... OWNED BY</> not change the - <function>currval()</> 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</> (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</> not use all of <varname>maintenance_work_mem</> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>corr()</> return the correct result for negative - correlation values (Neil) - </para> - </listitem> - - <listitem> - <para> - Fix overflow in <literal>extract(epoch from interval)</> 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</> - as <literal>int</> rather than <literal>char</> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>Mac OS X</> 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</> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers - to a file that is not a plain file (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pgcrypto</> defend against - <application>OpenSSL</> 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</>'s <function>crosstab()</> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</> and <type>tsquery</> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</> to be used - when re-generating the <command>configure</> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</> and <productname>PostgreSQL</> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - <listitem> - <para> - Update <function>gettimeofday</> configuration check so that - <productname>PostgreSQL</> can be built on newer versions of - <productname>MinGW</> (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</> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving - domains over domains (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</> 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</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow the <type>interval</> 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</> input (Tom) - </para> - </listitem> - - <listitem> - <para> - Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Speed up rtree index insertion (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</> 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</> 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)</> and <function>var_pop(numeric)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>REINDEX</> and <command>CLUSTER</> 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</> work properly in Windows service mode (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - <listitem> - <para> - Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom) - </para> - </listitem> - - <listitem> - <para> - Do not let <filename>/contrib/intarray</> 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</>, 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</>. 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</> for more information. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>shared_preload_libraries</> for Windows - by forcing reload in each backend (Korry Douglas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char()</> so it properly upper/lower cases localized day or month - names (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require <command>COMMIT PREPARED</> to be executed in the same - database as the transaction was prepared in (Heikki) - </para> - </listitem> - - <listitem> - <para> - Allow <command>pg_dump</> to do binary backups larger than two gigabytes - on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - New traditional (Taiwan) Chinese <acronym>FAQ</> (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</> handles - <command>UPDATE</> 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</> so it can dump a serial column's sequence - using <option>-t</> 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</> from within an <literal>EXCEPTION</> 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')</> for years ending in - <literal>00</> (Tom) - </para> - - <para> - Year 2000 is in the twentieth century, not the twenty-first. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect permission check in - <literal>information_schema.key_column_usage</> view (Tom) - </para> - - <para> - The symptom is <quote>relation with OID nnnnn does not exist</> errors. - To get this fix without using <command>initdb</>, use <command>CREATE OR - REPLACE VIEW</> to install the corrected definition found in - <filename>share/information_schema.sql</>. Note you will need to do - this in each database. - </para> - </listitem> - - <listitem> - <para> - Improve <command>VACUUM</> performance for databases with many tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potentially incorrect results from index searches using - <literal>ROW</> 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</> 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>LIMIT ALL</> (also - <literal>LIMIT NULL</>) (Tom) - </para> - </listitem> - - <listitem> - <para> - <filename>Several /contrib/tsearch2</> fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - On Windows, make log messages coming from the operating system use - <acronym>ASCII</> 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</> using - <filename>win32.mak</> - (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</> documentation (Peter) - </para> - </listitem> - - <listitem> - <para> - Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization decisions related to index scans (Tom) - </para> - </listitem> - - <listitem> - <para> - Have <application>psql</> print multi-byte combining characters as - before, rather than output as <literal>\u</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</> <literal>\d</> performance also. - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_dumpall</> assume that databases have public - <literal>CONNECT</> 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</>. - </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>DELETE</command> - </para> - </listitem> - - <listitem> - <para> - Index creation without blocking concurrent - <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> - 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</></link> - to <literal>on</> 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''</>) - strings</link>. - </para> - </listitem> - - <listitem> - <para> - Change the <link linkend="sql-syntax-row-constructors">row - constructor syntax</link> (<literal>ROW(...)</>) so that - list elements <literal>foo.*</> 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.*)</>. - The old behavior is still available by omitting <literal>.*</>. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="row-wise-comparison">row comparisons</link> - follow <acronym>SQL</> 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</> NULL</literal></link> - tests follow <acronym>SQL</> standard semantics (Tom) - </para> - - <para> - The former behavior conformed to the standard for simple cases - with <literal>IS NULL</>, but <literal>IS NOT NULL</> 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</></link> affect only one constraint (Kris Jurka) - </para> - - <para> - In previous releases, <command>SET CONSTRAINT</> 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</> 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>REVOKE RULE</> 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</> - and <link linkend="app-postgres"><application>postgres</></link> - identical (Peter) - </para> - - <para> - This allows the postmaster to pass arguments to each backend - without using <literal>-o</>. 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</> symbolic link (Peter) - </para> - - <para> - <application>postmaster</> and <application>postgres</> - commands now act identically, with the behavior determined - by command-line options. The <application>postmaster</> symbolic link is - kept for compatibility, but is not really needed. - </para> - </listitem> - - <listitem> - <para> - Change <link - linkend="guc-log-duration"><varname>log_duration</></link> - to output even if the query is not output (Tom) - </para> - - <para> - In prior releases, <varname>log_duration</> only printed if - the query appeared earlier in the log. - </para> - </listitem> - - <listitem> - <para> - Make <link - linkend="functions-formatting"><function>to_char(time)</></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</></link> - treat <literal>HH</> and <literal>HH12</> as 12-hour - intervals - </para> - - <para> - Most applications should use <literal>HH24</> unless they - want a 12-hour display. - </para> - </listitem> - - <listitem> - <para> - Zero unmasked bits in conversion from <link - linkend="datatype-inet"><type>INET</></link> to <link - linkend="datatype-inet"><type>CIDR</></link> (Tom) - </para> - - <para> - This ensures that the converted value is actually valid for - <type>CIDR</>. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>australian_timezones</> 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</></link>. - If you have been using a very small <varname>random_page_cost</>, - please recheck your test cases. - </para> - </listitem> - - <listitem> - <para> - Change behavior of <command>pg_dump</> <literal>-n</> and - <literal>-t</> options. (Greg Sabino Mullane) - </para> - <para> - See the <command>pg_dump</> manual page for details. - </para> - </listitem> - - <listitem> - <para> - Change <link linkend="libpq"><application>libpq</></link> - <function>PQdsplen()</> to return a useful value (Martijn - van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Declare <link linkend="libpq"><application>libpq</></link> - <function>PQgetssl()</> as returning <literal>void *</>, - rather than <literal>SSL *</> (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</></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/</>, rename <function>xml_valid()</> to - <function>xml_is_well_formed()</> (Tom) - </para> - - <para> - <function>xml_valid()</> 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/</>, 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>dbase</>, <filename>dbmirror</>, - <filename>fulltextindex</>, <filename>mac</>, <filename>userlock</> - </para> - </listitem> - - <listitem> - <para> - Remove abandoned contrib modules: - <filename>mSQL-interface</>, <filename>tips</> - </para> - </listitem> - - <listitem> - <para> - Remove <acronym>QNX</> and <acronym>BEOS</> 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</> - (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</> 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</></link> - and <varname>max_fsm_pages</> - (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</></link>, <link - linkend="functions-like"><literal>ILIKE</></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</></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</> and - <command>DELETE</> queries (Tom) - </para> - - <para> - <command>SELECT</> already honored constraint exclusion. - </para> - </listitem> - - <listitem> - <para> - Improve planning of constant <literal>WHERE</> 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</> 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</></link> (Greg Stark) - </para> - </listitem> - - <listitem> - <para> - Improve multicolumn <link linkend="GiST"><acronym>GiST</></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()</></link>. - This ensures that all - transaction log files needed for recovery can be archived immediately. - </para> - </listitem> - - <listitem> - <para> - Add <acronym>WAL</> informational functions (Simon) - </para> - - <para> - Add functions for interrogating the current transaction log insertion - point and determining <acronym>WAL</> filenames from the - hex <acronym>WAL</> locations displayed by <link - linkend="functions-admin"><function>pg_stop_backup()</></link> - and related functions. - </para> - </listitem> - - <listitem> - <para> - Improve recovery from a crash during <acronym>WAL</> replay (Simon) - </para> - - <para> - The server now does periodic checkpoints during <acronym>WAL</> - recovery, so if there is a crash, future <acronym>WAL</> - 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</> 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</></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</></link> - authentication (Magnus Hagander) - </para> - - <para> - This is particularly useful for platforms that do not - support <acronym>PAM</>, such as Windows. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-grant-description-objects"><literal>GRANT - CONNECT ON DATABASE</></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</></link> - controls. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="ssl-tcp"><acronym>SSL</> - Certificate Revocation List</link> (<acronym>CRL</>) files - (Libor Hohoš) - </para> - - <para> - The server and <application>libpq</> both recognize <acronym>CRL</> - files now. - </para> - </listitem> - - <listitem> - <para> - <link linkend="GiST"><acronym>GiST</></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</></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</></link> - system views. - </para> - </listitem> - - <listitem> - <para> - Improve performance of statistics monitoring, especially - <varname>stats_command_string</> - (Tom, Bruce) - </para> - - <para> - This release enables <varname>stats_command_string</> by - default, now that its overhead is minimal. This means - <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link> - will now show all active queries by default. - </para> - </listitem> - - <listitem> - <para> - Add a <literal>waiting</> column to <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link> - (Tom) - </para> - - <para> - This allows <structname>pg_stat_activity</> to show all the - information included in the <application>ps</> display. - </para> - </listitem> - - <listitem> - <para> - Add configuration parameter <link - linkend="guc-update-process-title"><varname>update_process_title</></link> - to control whether the <application>ps</> display is updated - for every command (Bruce) - </para> - - <para> - On platforms where it is expensive to update the <application>ps</> - display, it might be worthwhile to turn this off and rely solely on - <structname>pg_stat_activity</> 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</></link> - to <literal>32MB</> rather than mentally converting sizes. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="config-setting">include - directives</link> in <filename>postgresql.conf</> (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</>. - </para> - </listitem> - - <listitem> - <para> - Prevent <link - linkend="guc-max-stack-depth"><varname>max_stack_depth</></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</> 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</> errors in - <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean out <filename>pg_internal.init</> 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</> (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</></link>/<link - linkend="SQL-UPDATE"><command>UPDATE</></link>/<link - linkend="SQL-DELETE"><command>DELETE</></link> - <literal>RETURNING</> (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</> - 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</></link> clauses, - per SQL standard (Joe, Tom) - </para> - - <para> - This allows <command>INSERT</> to insert multiple rows of - constants, or queries to generate result sets using constants. - For example, <literal>INSERT ... VALUES (...), (...), - ....</>, and <literal>SELECT * FROM (VALUES (...), (...), - ....) AS alias(f1, ...)</>. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link> - and <link linkend="SQL-DELETE"><command>DELETE</></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</></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>val</>, ...)</>. - </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</></link> - option to <command>TRUNCATE</> (Joachim Wieland) - </para> - - <para> - This causes <command>TRUNCATE</> 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</> and <literal>FOR SHARE</> - in the same <link linkend="SQL-INSERT"><literal>SELECT</></link> - command (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="functions-comparisons"><literal>IS NOT - DISTINCT FROM</></link> (Pavel Stehule) - </para> - - <para> - This operator is similar to equality (<literal>=</>), but - evaluates to true when both left and right operands are - <literal>NULL</>, and to false when just one is, rather than - yielding <literal>NULL</> in these cases. - </para> - </listitem> - - <listitem> - <para> - Improve the length output used by <link - linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</> - (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</></link> - to work for multi-byte encodings (Tom) - </para> - - <para> - Internally, <literal>ILIKE</> now calls <function>lower()</> - and then uses <literal>LIKE</>. 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</></link> - to be turned <literal>on</> (Kevin Grittner) - </para> - - <para> - This allows backslash escaping in strings to be disabled, - making <productname>PostgreSQL</> more - standards-compliant. The default is <literal>off</> for backwards - compatibility, but future releases will default this to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Do not flatten subqueries that contain <literal>volatile</> - functions in their target lists (Jaime Casanova) - </para> - - <para> - This prevents surprising behavior due to multiple evaluation - of a <literal>volatile</> function (such as <function>random()</> - or <function>nextval()</>). It might cause performance - degradation in the presence of functions that are unnecessarily - marked as <literal>volatile</>. - </para> - </listitem> - - <listitem> - <para> - Add system views <link - linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link> - and <link - linkend="view-pg-cursors"><literal>pg_cursors</></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</></link> and <link - linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom) - </para> - - <para> - This allows, for example, <acronym>JDBC</> <literal>?</> parameters to - work in these commands. - </para> - </listitem> - - <listitem> - <para> - If <acronym>SQL</>-level <link - linkend="SQL-PREPARE"><command>PREPARE</></link> parameters - are unspecified, infer their types from the content of the - query (Neil) - </para> - - <para> - Protocol-level <command>PREPARE</> already did this. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed - two billion (Dhanaraj M) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>TABLESPACE</> clause to <link - linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link> - (Neil) - </para> - - <para> - This allows a tablespace to be specified for the new table. - </para> - </listitem> - - <listitem> - <para> - Add <literal>ON COMMIT</> clause to <link - linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></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</> to <link - linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link> - (Greg Stark) - </para> - - <para> - This allows easy copying of <literal>CHECK</> 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</>. The syntax is <command>CREATE TYPE <replaceable - class="parameter">typename</replaceable></>. - </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>input_type</>) - (<replaceable>parameter_list</>)</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</></link> - to remove a previously set role password (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <command>DROP</> object <literal>IF EXISTS</> for many - object types (Andrew) - </para> - - <para> - This allows <command>DROP</> operations on non-existent - objects without generating an error. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link> - to drop all objects owned by a role (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN - OWNED</></link> to reassign ownership of all objects owned - by a role (Alvaro) - </para> - - <para> - This, and <literal>DROP OWNED</> above, facilitate dropping - roles. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link> - syntax (Bruce) - </para> - - <para> - This was added for setting sequence-specific permissions. - <literal>GRANT ON TABLE</> for sequences is still supported - for backward compatibility. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-GRANT"><literal>USAGE</></link> - permission for sequences that allows only <function>currval()</> - and <function>nextval()</>, not <function>setval()</> - (Bruce) - </para> - - <para> - <literal>USAGE</> permission allows more fine-grained - control over sequence access. Granting <literal>USAGE</> - allows users to increment - a sequence, but prevents them from setting the sequence to - an arbitrary value using <function>setval()</>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE - [ NO ] INHERIT</></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</></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</></link> to - dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel - Zak) - </para> - - <para> - This allows <command>COPY</> to dump arbitrary <acronym>SQL</> - queries. The syntax is <literal>COPY (SELECT ...) TO</>. - </para> - </listitem> - - <listitem> - <para> - Make the <link linkend="SQL-COPY"><command>COPY</></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</></link> - to expire rows without being affected by other concurrent - <command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom) - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="APP-INITDB"><application>initdb</></link> - detect the operating system locale and set the default - <varname>DateStyle</> accordingly (Peter) - </para> - - <para> - This makes it more likely that the installed - <filename>postgresql.conf</> <varname>DateStyle</> value will - be as desired. - </para> - </listitem> - - <listitem> - <para> - Reduce number of progress messages displayed by <application>initdb</> (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</></link> input values - (Joachim Wieland) - </para> - - <para> - For example, <literal>'2006-05-24 21:11 - America/New_York'::timestamptz</>. - </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</></link>. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link> - and <link - linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link> - views to show supported timezones (Magnus Hagander) - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="functions-datetime-table"><function>clock_timestamp()</></link>, - <link - linkend="functions-datetime-table"><function>statement_timestamp()</></link>, - and <link - linkend="functions-datetime-table"><function>transaction_timestamp()</></link> - (Bruce) - </para> - - <para> - <function>clock_timestamp()</> is the current wall-clock time, - <function>statement_timestamp()</> is the time the current - statement arrived at the server, and - <function>transaction_timestamp()</> is an alias for - <function>now()</>. - </para> - </listitem> - - <listitem> - <para> - Allow <link - linkend="functions-formatting"><function>to_char()</></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)</></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</></link> - to output <acronym>AM</>/<acronym>PM</> specifications - (Bruce) - </para> - - <para> - Intervals and times are treated as 24-hour periods, e.g. - <literal>25 hours</> is considered <acronym>AM</>. - </para> - </listitem> - - <listitem> - <para> - Add new function <link - linkend="functions-datetime-table"><function>justify_interval()</></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</> 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>&&</>) (Teodor, Tom) - </para> - - <para> - These operators can be indexed for many data types using - <acronym>GiST</> or <acronym>GIN</> indexes. - </para> - </listitem> - - <listitem> - <para> - Add convenient arithmetic <link - linkend="cidr-inet-operators-table">operations</link> on - <type>INET</>/<type>CIDR</> values (Stephen R. van den - Berg) - </para> - - <para> - The new operators are <literal>&</> (and), <literal>|</> - (or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>, - <type>inet</> <literal>-</> <type>int8</>, and - <type>inet</> <literal>-</> <type>inet</>. - </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>var_samp()</>, <function>stddev_pop()</>, and - <function>stddev_samp()</>. <function>var_samp()</> and - <function>stddev_samp()</> are merely renamings of the - existing aggregates <function>variance()</> and - <function>stddev()</>. 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>regr_slope()</>, <function>regr_r2()</>, - <function>corr()</>, <function>covar_samp()</>, - <function>covar_pop()</>, <function>regr_avgx()</>, - <function>regr_avgy()</>, <function>regr_sxy()</>, - <function>regr_sxx()</>, <function>regr_syy()</>, - <function>regr_count()</>. - </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</></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</></link> columns - (Tom) - </para> - - <para> - The fix is to dump a <type>SERIAL</> column by explicitly - specifying its <literal>DEFAULT</> and sequence elements, - and reconstructing the <type>SERIAL</> column on reload - using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER - SEQUENCE OWNED BY</></link> command. This also allows - dropping a <type>SERIAL</> column specification. - </para> - </listitem> - - <listitem> - <para> - Add a server-side sleep function <link - linkend="functions-datetime-delay"><function>pg_sleep()</></link> - (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add all comparison operators for the <link - linkend="datatype-oid"><type>tid</></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</> and <literal>TG_table_schema</> to - trigger parameters (Andrew) - </para> - - <para> - <literal>TG_relname</> 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</> statements to return values to scalars - as well as records and row types (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - Add a <literal>BY</> clause to the <literal>FOR</> loop, - to control the iteration increment (Jaime Casanova) - </para> - </listitem> - - <listitem> - <para> - Add <literal>STRICT</> to <link - linkend="plpgsql-statements-sql-onerow"><command>SELECT - INTO</></link> (Matt Miller) - </para> - - <para> - <literal>STRICT</> mode throws an exception if more or less - than one row is returned by the <command>SELECT</>, for - <productname>Oracle PL/SQL</> compatibility. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/Perl Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>table_name</> and <literal>table_schema</> to - trigger parameters (Adam Sjøgren) - </para> - </listitem> - - <listitem> - <para> - Add prepared queries (Dmitry Karasik) - </para> - </listitem> - - <listitem> - <para> - Make <literal>$_TD</> 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[]</> array (Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Add <literal>table_name</> and <literal>table_schema</> 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>iterator</>, - or <literal>generator </>(Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Allow functions to return <literal>void</> (Neil) - </para> - </listitem> - - <listitem> - <para> - Python 2.5 is now supported (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add new command <literal>\password</> for changing role - password with client-side password encryption (Peter) - </para> - </listitem> - - <listitem> - <para> - Allow <literal>\c</> to connect to a new host and port - number (David, Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Add tablespace display to <literal>\l+</> (Philip Yarra) - </para> - </listitem> - - <listitem> - <para> - Improve <literal>\df</> slash command to include the argument - names and modes (<literal>OUT</> or <literal>INOUT</>) of - the function (David Fetter) - </para> - </listitem> - - <listitem> - <para> - Support binary <command>COPY</> (Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Add option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</> or <literal>--single-transaction</>. - </para> - </listitem> - - <listitem> - <para> - Support for automatically retrieving <command>SELECT</> - results in batches using a cursor (Chris Mair) - </para> - - <para> - This is enabled using <command>\set FETCH_COUNT - <replaceable>n</></command>. This - feature allows large result sets to be retrieved in - <application>psql</> 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>UPDATE</>/<command>DELETE - RETURNING</> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow complex selection of objects to be included or excluded - by <application>pg_dump</> (Greg Sabino Mullane) - </para> - - <para> - <application>pg_dump</> now supports multiple <literal>-n</> - (schema) and <literal>-t</> (table) options, and adds - <literal>-N</> and <literal>-T</> 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*'</>, and a schema can be part of - a <literal>-t</> or <literal>-T</> switch, for example - <literal>-t schema1.table1</>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link> - <literal>--no-data-for-failed-tables</> 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</></link> - option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</> or <literal>--single-transaction</>. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="libpq"><application>libpq</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link - linkend="libpq-misc"><function>PQencryptPassword()</></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</></link>. - </para> - </listitem> - - <listitem> - <para> - Add function <link - linkend="libpq-threading"><function>PQisthreadsafe()</></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()</></link>, - <link - linkend="libpq-exec-main"><function>PQdescribePortal()</></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</></link> lookups - from <link - linkend="libpq-pgservice"><filename>pg_service.conf</></link> - (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Allow a hostname in <link - linkend="libpq-pgpass"><filename>~/.pgpass</></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</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to - put its result into a variable (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></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</> Port</title> - <itemizedlist> - - <listitem> - <para> - Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</> - server (Magnus, Hiroshi Saito) - </para> - </listitem> - - <listitem> - <para> - Add <acronym>MSVC</> support for utility commands and <link - linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi - Saito) - </para> - </listitem> - - <listitem> - <para> - Add support for Windows code pages <literal>1253</>, - <literal>1254</>, <literal>1255</>, and <literal>1257</> - (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</></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</></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</> readline (Bruce) - </para> - - <para> - Use configure <link - linkend="configure"><literal>--with-libedit-preferred</></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</> using the - <productname>Solaris</> compiler (Pierre Girard, Theo - Schlossnagle, Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <application>DTrace</> support (Robert Lor) - </para> - </listitem> - - <listitem> - <para> - Add <literal>PG_VERSION_NUM</> 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</> as independent from <literal>BLCKSZ</> - (Mark Wong) - </para> - </listitem> - - <listitem> - <para> - Add <literal>LWLOCK_STATS</> define to report locking - activity (Tom) - </para> - </listitem> - - <listitem> - <para> - Emit warnings for unknown <application>configure</> options - (Martijn van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Add server support for <quote>plugin</> 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</> that allows separately-loaded shared libraries to - communicate, and a new configuration parameter <link - linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></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</> to <link - linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link> - (Tom) - </para> - - <para> - This was done for clarity in comparison to - <varname>local_preload_libraries</>. - </para> - </listitem> - - <listitem> - <para> - Add new configuration parameter <link - linkend="guc-server-version-num"><varname>server_version_num</></link> - (Greg Sabino Mullane) - </para> - - <para> - This is like <varname>server_version</varname>, but is an - integer, e.g. <literal>80200</>. 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</></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()</> and <function>_PG_fini()</> are - called if the library defines such symbols. Hence we no - longer need to specify an initialization function in - <varname>shared_preload_libraries</>; we can assume that - the library used the <function>_PG_init()</> convention - instead. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></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</></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</> - </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</> - format, used by <application>OpenOffice</> - </para> - </listitem> - <listitem> - <para> - <acronym>GIN</> support - </para> - </listitem> - - </itemizedlist> - - </listitem> - - <listitem> - <para> - Add adminpack module containing <application>Pgadmin</> administration - functions (Dave) - </para> - - <para> - These functions provide additional file system access - routines not present in the default <productname>PostgreSQL</> - server. - </para> - </listitem> - - <listitem> - <para> - Add sslinfo module (Victor Wagner) - </para> - - <para> - Reports information about the current connection's <acronym>SSL</> - 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>UPC</>, - <acronym>ISBN</> (books), <acronym>ISMN</> (music), and - <acronym>ISSN</> (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>cube(float[], float[])</>, and - <function>cube_subset(cube, int4[])</>. - </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>&&</>) (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> |