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 d87c5bbd467..00000000000 --- a/doc/src/sgml/release-8.2.sgml +++ /dev/null @@ -1,7077 +0,0 @@ -<!-- doc/src/sgml/release-8.2.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-2-23"> - <title>Release 8.2.23</title> - - <formalpara> - <title>Release date:</title> - <para>2011-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.22. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</productname> release - in the 8.2.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.2.23</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - <para> - However, a longstanding error was discovered in the definition of the - <literal>information_schema.referential_constraints</literal> view. If you - rely on correct results from that view, you should replace its - definition as explained in the first changelog item below. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in <literal>information_schema.referential_constraints</literal> view - (Tom Lane) - </para> - - <para> - This view was being insufficiently careful about matching the - foreign-key constraint to the depended-on primary or unique key - constraint. That could result in failure to show a foreign key - constraint at all, or showing it multiple times, or claiming that it - depends on a different constraint than the one it really does. - </para> - - <para> - Since the view definition is installed by <application>initdb</application>, - merely upgrading will not fix the problem. If you need to fix this - in an existing installation, you can (as a superuser) drop the - <literal>information_schema</literal> schema then re-create it by sourcing - <filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>. - (Run <literal>pg_config --sharedir</literal> if you're uncertain where - <replaceable>SHAREDIR</replaceable> is.) This must be repeated in each database - to be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS - SELECT * FROM src</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal> - (Tom Lane) - </para> - - <para> - If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>, - attempts to copy its data verbatim to another table could produce - corrupt results in certain corner cases. - The problem can only manifest in this precise form in 8.4 and later, - but we patched earlier versions as well in case there are other code - paths that could trigger the same bug. - </para> - </listitem> - - <listitem> - <para> - Fix race condition during toast table access from stale syscache entries - (Tom Lane) - </para> - - <para> - The typical symptom was transient errors like <quote>missing chunk - number 0 for toast value NNNNN in pg_toast_2619</quote>, where the cited - toast table would always belong to a system catalog. - </para> - </listitem> - - <listitem> - <para> - Improve locale support in <type>money</type> type's input and output - (Tom Lane) - </para> - - <para> - Aside from not supporting all standard - <link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link> - formatting options, the input and output functions were inconsistent, - meaning there were locales in which dumped <type>money</type> values could - not be re-read. - </para> - </listitem> - - <listitem> - <para> - Don't let <link - linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link> - affect <literal>CASE foo WHEN NULL ...</literal> constructs - (Heikki Linnakangas) - </para> - - <para> - <varname>transform_null_equals</varname> is only supposed to affect - <literal>foo = NULL</literal> expressions written directly by the user, not - equality checks generated internally by this form of <literal>CASE</literal>. - </para> - </listitem> - - <listitem> - <para> - Change foreign-key trigger creation order to better support - self-referential foreign keys (Tom Lane) - </para> - - <para> - For a cascading foreign key that references its own table, a row update - will fire both the <literal>ON UPDATE</literal> trigger and the - <literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal> - trigger must execute first, else the <literal>CHECK</literal> will check a - non-final state of the row and possibly throw an inappropriate error. - However, the firing order of these triggers is determined by their - names, which generally sort in creation order since the triggers have - auto-generated names following the convention - <quote>RI_ConstraintTrigger_NNNN</quote>. A proper fix would require - modifying that convention, which we will do in 9.2, but it seems risky - to change it in existing releases. So this patch just changes the - creation order of the triggers. Users encountering this type of error - should drop and re-create the foreign key constraint to get its - triggers into the right order. - </para> - </listitem> - - <listitem> - <para> - Preserve blank lines within commands in <application>psql</application>'s command - history (Robert Haas) - </para> - - <para> - The former behavior could cause problems if an empty line was removed - from within a string literal, for example. - </para> - </listitem> - - <listitem> - <para> - Use the preferred version of <application>xsubpp</application> to build PL/Perl, - not necessarily the operating system's main copy - (David Wheeler and Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Honor query cancel interrupts promptly in <function>pgstatindex()</function> - (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Ensure VPATH builds properly install all server header files - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Shorten file names reported in verbose error messages (Peter Eisentraut) - </para> - - <para> - Regular builds have always reported just the name of the C file - containing the error message call, but VPATH builds formerly - reported an absolute path name. - </para> - </listitem> - - <listitem> - <para> - Fix interpretation of Windows timezone names for Central America - (Tom Lane) - </para> - - <para> - Map <quote>Central America Standard Time</quote> to <literal>CST6</literal>, not - <literal>CST6CDT</literal>, because DST is generally not observed anywhere in - Central America. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2011n - for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; - also historical corrections for Alaska and British East Africa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-22"> - <title>Release 8.2.22</title> - - <formalpara> - <title>Release date:</title> - <para>2011-09-26</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.21. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <para> - The <productname>PostgreSQL</productname> community will stop releasing updates - for the 8.2.X release series in December 2011. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.2.22</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix multiple bugs in GiST index page split processing (Heikki - Linnakangas) - </para> - - <para> - The probability of occurrence was low, but these could lead to index - corruption. - </para> - </listitem> - - <listitem> - <para> - Avoid possibly accessing off the end of memory in <command>ANALYZE</command> - (Noah Misch) - </para> - - <para> - This fixes a very-low-probability server crash scenario. - </para> - </listitem> - - <listitem> - <para> - Fix race condition in relcache init file invalidation (Tom Lane) - </para> - - <para> - There was a window wherein a new backend process could read a stale init - file but miss the inval messages that would tell it the data is stale. - The result would be bizarre failures in catalog accesses, typically - <quote>could not read block 0 in file ...</quote> later during startup. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak at end of a GiST index scan (Tom Lane) - </para> - - <para> - Commands that perform many separate GiST index scans, such as - verification of a new GiST-based exclusion constraint on a table - already containing many rows, could transiently require large amounts of - memory due to this leak. - </para> - </listitem> - - <listitem> - <para> - Fix performance problem when constructing a large, lossy bitmap - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix array- and path-creating functions to ensure padding bytes are - zeroes (Tom Lane) - </para> - - <para> - This avoids some situations where the planner will think that - semantically-equal constants are not equal, resulting in poor - optimization. - </para> - </listitem> - - <listitem> - <para> - Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) - </para> - - <para> - This could lead to loss of committed transactions after a server crash. - </para> - </listitem> - - <listitem> - <para> - Fix dump bug for <literal>VALUES</literal> in a view (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow <literal>SELECT FOR UPDATE/SHARE</literal> on sequences (Tom Lane) - </para> - - <para> - This operation doesn't work as expected and can lead to failures. - </para> - </listitem> - - <listitem> - <para> - Defend against integer overflow when computing size of a hash table (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix portability bugs in use of credentials control messages for - <quote>peer</quote> authentication (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix typo in <function>pg_srand48</function> seed initialization (Andres Freund) - </para> - - <para> - This led to failure to use all bits of the provided seed. This function - is not used on most platforms (only those without <function>srandom</function>), - and the potential security exposure from a less-random-than-expected - seed seems minimal in any case. - </para> - </listitem> - - <listitem> - <para> - Avoid integer overflow when the sum of <literal>LIMIT</literal> and - <literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Add overflow checks to <type>int4</type> and <type>int8</type> versions of - <function>generate_series()</function> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp) - </para> - - <para> - In a format with <literal>FM</literal> and no digit positions - after the decimal point, zeroes to the left of the decimal point could - be removed incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_size_pretty()</function> to avoid overflow for inputs close to - 2^63 (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</application>'s counting of script file line numbers during - <literal>COPY</literal> from a different file (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</application>'s direct-to-database mode for - <varname>standard_conforming_strings</varname> (Tom Lane) - </para> - - <para> - <application>pg_restore</application> could emit incorrect commands when restoring - directly to a database server from an archive file that had been made - with <varname>standard_conforming_strings</varname> set to <literal>on</literal>. - </para> - </listitem> - - <listitem> - <para> - Fix write-past-buffer-end and memory leak in <application>libpq</application>'s - LDAP service lookup code (Albe Laurenz) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</application>, avoid failures when using nonblocking I/O - and an SSL connection (Martin Pihlak, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve libpq's handling of failures during connection startup - (Tom Lane) - </para> - - <para> - In particular, the response to a server report of <function>fork()</function> - failure during SSL connection startup is now saner. - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</application> write <type>double</type> values with 15 digits - precision (Akira Kurosawa) - </para> - </listitem> - - <listitem> - <para> - Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) - (Tom Lane) - </para> - - <para> - <filename>contrib/pg_crypto</filename>'s blowfish encryption code could give - wrong results on platforms where char is signed (which is most), - leading to encrypted passwords being weaker than they should be. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/seg</filename> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgstatindex()</function> to give consistent results for empty - indexes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Allow building with perl 5.14 (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Update configure script's method for probing existence of system - functions (Tom Lane) - </para> - - <para> - The version of autoconf we used in 8.3 and 8.2 could be fooled by - compilers that perform link-time optimization. - </para> - </listitem> - - <listitem> - <para> - Fix assorted issues with build and install file paths containing spaces - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2011i - for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-21"> - <title>Release 8.2.21</title> - - <formalpara> - <title>Release date:</title> - <para>2011-04-18</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.20. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.21</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid potential deadlock during catalog cache initialization - (Nikhil Sontakke) - </para> - - <para> - In some cases the cache loading code would acquire share lock on a - system index before locking the index's catalog. This could deadlock - against processes trying to acquire exclusive locks in the other, - more standard order. - </para> - </listitem> - - <listitem> - <para> - Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</literal> trigger - handling when there was a concurrent update to the target tuple - (Tom Lane) - </para> - - <para> - This bug has been observed to result in intermittent <quote>cannot - extract system attribute from virtual tuple</quote> failures while trying to - do <literal>UPDATE RETURNING ctid</literal>. There is a very small probability - of more serious errors, such as generating incorrect index entries for - the updated tuple. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>DROP TABLE</command> when there are pending deferred trigger - events for the table (Tom Lane) - </para> - - <para> - Formerly the <command>DROP</command> would go through, leading to - <quote>could not open relation with OID nnn</quote> errors when the - triggers were eventually fired. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python memory leak involving array slices (Daniel Popowich) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</application> to cope with long lines (over 1KB) in - TOC files (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Put in more safeguards against crashing due to division-by-zero - with overly enthusiastic compiler optimization (Aurelien Jarno) - </para> - </listitem> - - <listitem> - <para> - Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) - </para> - - <para> - There was a hard-wired assumption that this system function was not - available on MIPS hardware on these systems. Use a compile-time test - instead, since more recent versions have it. - </para> - </listitem> - - <listitem> - <para> - Fix compilation failures on HP-UX (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix path separator used by <application>pg_regress</application> on Cygwin - (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2011f - for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, - and Turkey; also historical corrections for South Australia, Alaska, - and Hawaii. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-20"> - <title>Release 8.2.20</title> - - <formalpara> - <title>Release date:</title> - <para>2011-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.19. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.20</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid failures when <command>EXPLAIN</command> tries to display a simple-form - <literal>CASE</literal> expression (Tom Lane) - </para> - - <para> - If the <literal>CASE</literal>'s test expression was a constant, the planner - could simplify the <literal>CASE</literal> into a form that confused the - expression-display code, resulting in <quote>unexpected CASE WHEN - clause</quote> errors. - </para> - </listitem> - - <listitem> - <para> - Fix assignment to an array slice that is before the existing range - of subscripts (Tom Lane) - </para> - - <para> - If there was a gap between the newly added subscripts and the first - pre-existing subscript, the code miscalculated how many entries needed - to be copied from the old array's null bitmap, potentially leading to - data corruption or crash. - </para> - </listitem> - - <listitem> - <para> - Avoid unexpected conversion overflow in planner for very distant date - values (Tom Lane) - </para> - - <para> - The <type>date</type> type supports a wider range of dates than can be - represented by the <type>timestamp</type> types, but the planner assumed it - could always convert a date to timestamp with impunity. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</application>'s text output for large objects (BLOBs) - when <varname>standard_conforming_strings</varname> is on (Tom Lane) - </para> - - <para> - Although restoring directly to a database worked correctly, string - escaping was incorrect if <application>pg_restore</application> was asked for - SQL text output and <varname>standard_conforming_strings</varname> had been - enabled in the source database. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous parsing of <type>tsquery</type> values containing - <literal>... & !(subexpression) | ...</literal> (Tom Lane) - </para> - - <para> - Queries containing this combination of operators were not executed - correctly. The same error existed in <filename>contrib/intarray</filename>'s - <type>query_int</type> type and <filename>contrib/ltree</filename>'s - <type>ltxtquery</type> type. - </para> - </listitem> - - <listitem> - <para> - Fix buffer overrun in <filename>contrib/intarray</filename>'s input function - for the <type>query_int</type> type (Apple) - </para> - - <para> - This bug is a security risk since the function's return address could - be overwritten. Thanks to Apple Inc's security team for reporting this - issue and supplying the fix. (CVE-2010-4015) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/seg</filename>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>seg</type> column. - If you have such an index, consider <command>REINDEX</command>ing it after - installing this update. (This is identical to the bug that was fixed in - <filename>contrib/cube</filename> in the previous update.) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-19"> - <title>Release 8.2.19</title> - - <formalpara> - <title>Release date:</title> - <para>2010-12-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.18. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.19</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force the default - <link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link> - to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</literal> for many - years, but recent kernel changes caused <productname>PostgreSQL</productname> to - choose <literal>open_datasync</literal> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</literal> with the - <literal>data=journal</literal> mount option. - </para> - </listitem> - - <listitem> - <para> - Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane) - </para> - - <para> - This could result in <quote>bad buffer id: 0</quote> failures or - corruption of index contents during replication. - </para> - </listitem> - - <listitem> - <para> - Fix recovery from base backup when the starting checkpoint WAL record - is not in the same WAL segment as its redo point (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Add support for detecting register-stack overrun on <literal>IA64</literal> - (Tom Lane) - </para> - - <para> - The <literal>IA64</literal> architecture has two hardware stacks. Full - prevention of stack-overrun failures requires checking both. - </para> - </listitem> - - <listitem> - <para> - Add a check for stack overflow in <function>copyObject()</function> (Tom Lane) - </para> - - <para> - Certain code paths could crash due to stack overflow given a - sufficiently complex query. - </para> - </listitem> - - <listitem> - <para> - Fix detection of page splits in temporary GiST indexes (Heikki - Linnakangas) - </para> - - <para> - It is possible to have a <quote>concurrent</quote> page split in a - temporary index, if for example there is an open cursor scanning the - index when an insertion is done. GiST failed to detect this case and - hence could deliver wrong results when execution of the cursor - continued. - </para> - </listitem> - - <listitem> - <para> - Avoid memory leakage while <command>ANALYZE</command>'ing complex index - expressions (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure an index that uses a whole-row Var still depends on its table - (Tom Lane) - </para> - - <para> - An index declared like <literal>create index i on t (foo(t.*))</literal> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal> - parameters (Tom Lane) - </para> - - <para> - This avoids a possible crash due to loss of information about the - expected result rowtype. - </para> - </listitem> - - <listitem> - <para> - Behave correctly if <literal>ORDER BY</literal>, <literal>LIMIT</literal>, - <literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the - <literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</literal> expressions (Tom Lane) - </para> - - <para> - The planner would sometimes attempt to evaluate sub-expressions that - in fact could never be reached, possibly leading to unexpected errors. - </para> - </listitem> - - <listitem> - <para> - Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</varname> is enabled - and certain types of query are executed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of distance from a point to a horizontal - line segment (Tom Lane) - </para> - - <para> - This bug affected several different geometric distance-measurement - operators. - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/pgSQL</application>'s handling of <quote>simple</quote> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/Python</application>'s handling of set-returning functions - (Jan Urbanski) - </para> - - <para> - Attempts to call SPI functions within the iterator generating a set - result would fail. - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/cube</filename>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>cube</type> column. - If you have such an index, consider <command>REINDEX</command>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</quote> notices in - <filename>contrib/dblink</filename> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</filename> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010o - for DST law changes in Fiji and Samoa; - also historical corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-18"> - <title>Release 8.2.18</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.17. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.18</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</literal> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</function> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix Windows shared-memory allocation code - (Tsutomu Yamada, Magnus Hagander) - </para> - - <para> - This bug led to the often-reported <quote>could not reattach to shared - memory</quote> error message. This is a back-patch of a fix that was - applied to newer branches some time ago. - </para> - </listitem> - - <listitem> - <para> - Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</literal>) as non-fatal on - Windows (Magnus Hagander) - </para> - - <para> - Under high load, Windows processes will sometimes fail at startup with - this error code. Formerly the postmaster treated this as a panic - condition and restarted the whole database, but that seems to be - an overreaction. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate scans of <literal>UNION ALL</literal> member relations - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Reduce PANIC to ERROR in some occasionally-reported btree failure cases, - and provide additional detail in the resulting error messages - (Tom Lane) - </para> - - <para> - This should improve the system's robustness with corrupted indexes. - </para> - </listitem> - - <listitem> - <para> - Prevent show_session_authorization() from crashing within autovacuum - processes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when hashing a pass-by-reference function result - (Tao Ma, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</filename> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</command> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET - TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</filename>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</filename> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</filename> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>hstore(text, text)</function> - function to <filename>contrib/hstore</filename> (Robert Haas) - </para> - - <para> - This function is the recommended substitute for the now-deprecated - <literal>=></literal> operator. It was back-patched so that future-proofed - code can be used with older server versions. Note that the patch will - be effective only after <filename>contrib/hstore</filename> is installed or - reinstalled in a particular database. Users might prefer to execute - the <command>CREATE FUNCTION</command> command by hand, instead. - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - <listitem> - <para> - Make Windows' <quote>N. Central Asia Standard Time</quote> timezone map to - Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander) - </para> - - <para> - Microsoft changed the DST behavior of this zone in the timezone update - from KB976098. Asia/Novosibirsk is a better match to its new behavior. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-17"> - <title>Release 8.2.17</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.16. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.17</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</literal> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</filename> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</filename> is too - insecure to rely on for making <literal>plperl</literal> trustable. This - change removes use of <filename>Safe.pm</filename> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</literal> pragma in a natural way in - <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</structname> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</structname> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</quote> Tcl - interpreter unless we are really going to execute a <literal>pltclu</literal> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash if a cache reset message is received during - rebuild of a relcache entry (Heikki) - </para> - - <para> - This error was introduced in 8.2.16 while fixing a related failure. - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</command> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</literal> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in PL/Python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</application> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</application>'s <literal>\copy</literal> to not add spaces around - a dot within <literal>\copy (select ...)</literal> (Tom) - </para> - - <para> - Addition of spaces around the decimal point in a numeric literal would - result in a syntax error. - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</function> returns <literal>EINVAL</literal> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including macOS. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crashes in syslogger process on Windows (Heikki) - </para> - </listitem> - - <listitem> - <para> - Deal more robustly with incomplete time zone information in the - Windows registry (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update the set of known Windows time zone names (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - - <para> - Also, add <literal>PKST</literal> (Pakistan Summer Time) to the default set of - timezone abbreviations. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-16"> - <title>Release 8.2.16</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.15. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.16</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock during backend startup (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes due to not handling errors during relcache reload - cleanly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST - index page split (Yoichi Hirai) - </para> - - <para> - This would result in index corruption, or even more likely an error - during WAL replay, if we were unlucky enough to crash during - end-of-recovery cleanup after having completed an incomplete GIST - insertion. - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</function> for <type>bit</type> types treat any negative - length as meaning <quote>all the rest of the string</quote> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix some more cases of temporary-file leakage (Heikki) - </para> - - <para> - This corrects a problem introduced in the previous minor release. - One case that failed is when a plpgsql function returning set is - called within another function's exception handler. - </para> - </listitem> - - <listitem> - <para> - Improve constraint exclusion processing of boolean-variable cases, - in particular make it possible to exclude a partition that has a - <quote>bool_column = false</quote> constraint (Tom) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</filename> and related files, do not treat - <literal>@something</literal> as a file inclusion request if the <literal>@</literal> - appears inside quote marks; also, never treat <literal>@</literal> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</literal>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</literal> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</filename> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible infinite loop if <function>SSL_read</function> or - <function>SSL_write</function> fails without setting <varname>errno</varname> (Tom) - </para> - - <para> - This is reportedly possible with some Windows versions of - <application>OpenSSL</application>. - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</application>'s <literal>numericlocale</literal> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</application> return the correct exit status (3) when - <literal>ON_ERROR_STOP</literal> and <literal>--single-transaction</literal> are - both specified and an error occurs during the implied <command>COMMIT</command> - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when calling PL/Perl functions from PL/PerlU - or vice versa (Tim Bunce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</literal> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</literal> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</filename> when too many key - columns are specified to a <function>dblink_build_sql_*</function> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Make building of <filename>contrib/xml2</filename> more robust on Windows - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix race condition in Windows signal handling (Radu Ilie) - </para> - - <para> - One known symptom of this bug is that rows in <structname>pg_listener</structname> - could be dropped under heavy load. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-15"> - <title>Release 8.2.15</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.14. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.15</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</literal> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Ensure that shared tuple-level locks held by prepared transactions are - not ignored (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect logic for GiST index page splits, when the split depends - on a non-first column of the index (Paul Ramsey) - </para> - </listitem> - - <listitem> - <para> - Don't error out if recycling or removing an old WAL file fails at the - end of checkpoint (Heikki) - </para> - - <para> - It's better to treat the problem as non-fatal and allow the checkpoint - to complete. Future checkpoints will retry the removal. Such problems - are not expected in normal operation, but have been seen to be - caused by misdesigned Windows anti-virus and backup software. - </para> - </listitem> - - <listitem> - <para> - Ensure WAL files aren't repeatedly archived on Windows (Heikki) - </para> - - <para> - This is another symptom that could happen if some other process - interfered with deletion of a no-longer-needed file. - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Fix processing of ownership dependencies during <literal>CREATE OR - REPLACE FUNCTION</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug with calling <literal>plperl</literal> from <literal>plperlu</literal> or vice - versa (Tom) - </para> - - <para> - An error exit from the inner function could result in crashes due to - failure to re-select the correct Perl interpreter for the outer function. - </para> - </listitem> - - <listitem> - <para> - Fix session-lifespan memory leak when a PL/Perl function is redefined - (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that Perl arrays are properly converted to - <productname>PostgreSQL</productname> arrays when returned by a set-returning - PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen) - </para> - - <para> - This worked correctly already for non-set-returning functions. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</application>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</literal> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</literal> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update the timezone abbreviation files to match current reality (Joachim - Wieland) - </para> - - <para> - This includes adding <literal>IDT</literal> and <literal>SGT</literal> to the default - timezone abbreviation set. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-14"> - <title>Release 8.2.14</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.13. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.14</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you have any hash indexes on <type>interval</type> columns, - you must <command>REINDEX</command> them after updating to 8.2.14. - Also, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force WAL segment switch during <function>pg_start_backup()</function> - (Heikki) - </para> - - <para> - This avoids corner cases that could render a base backup unusable. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>RESET ROLE</command> and <command>RESET SESSION - AUTHORIZATION</command> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</command> and <command>SET SESSION - AUTHORIZATION</command> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Make <command>LOAD</command> of an already-loaded loadable module - into a no-op (Tom) - </para> - - <para> - Formerly, <command>LOAD</command> would attempt to unload and re-load the - module, but this is unsafe and not all that useful. - </para> - </listitem> - - <listitem> - <para> - Disallow empty passwords during LDAP authentication (Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs associated with fetching a whole-row value from the - output of a Sort or Materialize plan node (Tom) - </para> - </listitem> - - <listitem> - <para> - Revert planner change that disabled partial-index and constraint - exclusion optimizations when there were more than 100 clauses in - an AND or OR list (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</type> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</command> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal - suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</literal> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal> - when <replaceable>x</replaceable> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</type> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Avoid performance degradation in bulk inserts into GIN indexes - when the input values are (nearly) in sorted order (Tom) - </para> - </listitem> - - <listitem> - <para> - Correctly enforce NOT NULL domain constraints in some contexts in - PL/pgSQL (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to not go into an infinite loop if - <filename>postgresql.conf</filename> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/hstore</filename> throw an error when a key or - value is too long to fit in its data structure, rather than - silently truncating it (Andrew Gierth) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</application>'s code to recover - from errors during <command>COPY FROM STDIN</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-13"> - <title>Release 8.2.13</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.12. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.13</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</emphasis> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</command> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</function> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure in <filename>contrib/tsearch2</filename> when C locale is - used with a multi-byte encoding (Teodor) - </para> - - <para> - Crashes were possible on platforms where <type>wchar_t</type> is narrower - than <type>int</type>; Windows in particular. - </para> - </listitem> - - <listitem> - <para> - Fix extreme inefficiency in <filename>contrib/tsearch2</filename> parser's - handling of an email-like string containing multiple <literal>@</literal> - characters (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix decompilation of <literal>CASE WHEN</literal> with an implicit coercion - (Tom) - </para> - - <para> - This mistake could lead to Assert failures in an Assert-enabled build, - or an <quote>unexpected CASE WHEN clause</quote> error message in other - cases, when trying to examine or dump a view. - </para> - </listitem> - - <listitem> - <para> - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - </para> - - <para> - If <command>CLUSTER</command> or a rewriting variant of <command>ALTER TABLE</command> - were executed by someone other than the table owner, the - <structname>pg_type</structname> entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</quote> - warnings from <application>pg_dump</application> after having done so (in 8.3). - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not treat <literal>INTO</literal> after <command>INSERT</command> as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for <command>INSERT INTO</command> within - <command>CREATE RULE</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - </para> - - <para> - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - </para> - </listitem> - - <listitem> - <para> - Retry failed calls to <function>CallNamedPipe()</function> on Windows - (Steve Marshall, Magnus) - </para> - - <para> - It appears that this function can sometimes fail transiently; - we previously treated any failure as a hard error, which could - confuse <command>LISTEN</command>/<command>NOTIFY</command> as well as other - operations. - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-12"> - <title>Release 8.2.12</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.11. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.12</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</function> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</function> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix possible Assert failure if a statement executed in PL/pgSQL is - rewritten into another kind of statement, for example if an - <command>INSERT</command> is rewritten into an <command>UPDATE</command> (Heikki) - </para> - </listitem> - - <listitem> - <para> - Ensure that a snapshot is available to datatype input functions (Tom) - </para> - - <para> - This primarily affects domains that are declared with <literal>CHECK</literal> - constraints involving user-defined stable or immutable functions. Such - functions typically fail if no snapshot has been set. - </para> - </listitem> - - <listitem> - <para> - Make it safer for SPI-using functions to be used within datatype I/O; - in particular, to be used in domain check constraints (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</command> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix a problem that made <literal>UPDATE RETURNING tableoid</literal> - return zero instead of the correct OID (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner misestimation of selectivity when transitive equality - is applied to an outer-join clause (Tom) - </para> - - <para> - This could result in bad plans for queries like - <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</literal> - </para> - </listitem> - - <listitem> - <para> - Improve optimizer's handling of long <literal>IN</literal> lists (Tom) - </para> - - <para> - This change avoids wasting large amounts of time on such lists - when constraint exclusion is enabled. - </para> - </listitem> - - <listitem> - <para> - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - </para> - - <para> - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak when a set-returning function is terminated without - reading its whole result (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</filename>'s - <function>dblink_get_result(text,bool)</function> function (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix possible garbage output from <filename>contrib/sslinfo</filename> functions - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>configure</application> script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</literal> and/or - <literal>pgsql-hackers</literal> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-11"> - <title>Release 8.2.11</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.10. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.11</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7"/>. Also, if you were running a previous - 8.2.X release, it is recommended to <command>REINDEX</command> all GiST - indexes after the upgrade. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix GiST index corruption due to marking the wrong index entry - <quote>dead</quote> after a deletion (Teodor) - </para> - - <para> - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - <command>REINDEX</command>. - </para> - </listitem> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</quote> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization of <replaceable>expression</replaceable> <literal>IN</literal> - (<replaceable>expression-list</replaceable>) queries (Tom, per an idea from Robert - Haas) - </para> - - <para> - Cases in which there are query variables on the right-hand side had been - handled less efficiently in 8.2.x and 8.3.x than in prior versions. - The fix restores 8.1 behavior for such cases. - </para> - </listitem> - - <listitem> - <para> - Fix mis-expansion of rule queries when a sub-<literal>SELECT</literal> appears - in a function call in <literal>FROM</literal>, a multi-row <literal>VALUES</literal> - list, or a <literal>RETURNING</literal> list (Tom) - </para> - - <para> - The usual symptom of this problem is an <quote>unrecognized node type</quote> - error. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak during rescan of a hashed aggregation plan (Neil) - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent possible collision of <structfield>relfilenode</structfield> numbers - when moving a table to another tablespace with <command>ALTER SET - TABLESPACE</command> (Heikki) - </para> - - <para> - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</option> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</application>'s parsing of <command>CREATE ROLE</command> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <filename>pg_control</filename> is opened in binary mode - (Itagaki Takahiro) - </para> - - <para> - <application>pg_controldata</application> and <application>pg_resetxlog</application> - did this incorrectly, and so could fail on Windows. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-10"> - <title>Release 8.2.10</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.9. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.10</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bug in btree WAL recovery code (Heikki) - </para> - - <para> - Recovery failed if the WAL ended partway through a page split operation. - </para> - </listitem> - - <listitem> - <para> - Fix potential miscalculation of <structfield>datfrozenxid</structfield> (Alvaro) - </para> - - <para> - This error may explain some recent reports of failure to remove old - <structname>pg_clog</structname> data. - </para> - </listitem> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</quote> errors. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix missed permissions checks when a view contains a simple - <literal>UNION ALL</literal> construct (Heikki) - </para> - - <para> - Permissions for the referenced tables were checked properly, but not - permissions for the view itself. - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</command> or <command>UPDATE</command> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</command>, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - </para> - </listitem> - - <listitem> - <para> - Fix possible repeated drops during <command>DROP OWNED</command> (Tom) - </para> - - <para> - This would typically result in strange errors such as <quote>cache - lookup failed for relation NNN</quote>. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>AT TIME ZONE</literal> to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - </para> - - <para> - The timestamp input functions have always resolved ambiguous zone names - in this order. Making <literal>AT TIME ZONE</literal> do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions <literal>AT TIME ZONE</literal> accepted - <emphasis>only</emphasis> abbreviations. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent integer overflows during units conversion when displaying a - configuration parameter that has units (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow spaces in the suffix part of an LDAP URL in - <filename>pg_hba.conf</filename> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</literal> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner bug with nested sub-select expressions (Tom) - </para> - - <para> - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable> - <literal>IS NULL</literal>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not fail when a <literal>FOR</literal> loop's target variable - is a record containing composite-type fields (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - On Windows, work around a Microsoft bug by preventing - <application>libpq</application> from trying to send more than 64kB per system call - (Magnus) - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</application> and <application>pg_restore</application>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to properly preserve postmaster - command-line arguments across a <literal>restart</literal> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-9"> - <title>Release 8.2.9</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious and one minor bug fix over 8.2.8. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.9</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should - be <literal>(-42)::integer</literal> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</productname> to reject what had been a valid - <command>SELECT DISTINCT</command> view query. Since this could result in - <application>pg_dump</application> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER AGGREGATE ... OWNER TO</command> update - <structname>pg_shdepend</structname> (Tom) - </para> - - <para> - This oversight could lead to problems if the aggregate was later - involved in a <command>DROP OWNED</command> or <command>REASSIGN OWNED</command> - operation. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-8"> - <title>Release 8.2.8</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.7. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.8</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that - occurred on Windows when using UTF-8 database encoding and a different - client encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</command> failure when inheriting the - <quote>same</quote> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_get_ruledef()</function> to show the alias, if any, attached - to the target table of an <command>UPDATE</command> or <command>DELETE</command> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix GIN bug that could result in a <literal>too many LWLocks - taken</literal> failure (Teodor) - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash when decompressing corrupted data - (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Repair two places where SIGTERM exit of a backend could leave corrupted - state in shared memory (Tom) - </para> - - <para> - Neither case is very important if SIGTERM is used to shut down the - whole database cluster together, but there was a problem if someone - tried to SIGTERM individual backends. - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix several datatype input functions, notably <function>array_in()</function>, - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</replaceable> from - <replaceable>pattern</replaceable>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</literal>. - This should return NULL, since <literal>(bar)</literal> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</literal>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and - Argentina/San_Luis) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</application>'s - <function>PGTYPEStimestamp_sub()</function> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix broken GiST comparison function for <filename>contrib/tsearch2</filename>'s - <type>tsquery</type> type (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes in <filename>contrib/cube</filename> functions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</filename>'s - <function>xpath_table()</function> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</filename>'s makefile to not override - <literal>CFLAGS</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</quote> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-7"> - <title>Release 8.2.7</title> - - <formalpara> - <title>Release date:</title> - <para>2008-03-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.6. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.7</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, you might need to <command>REINDEX</command> indexes on textual - columns after updating, if you are affected by the Windows locale - issue described below. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix character string comparison for Windows locales that consider - different character combinations as equal (Tom) - </para> - - <para> - This fix applies only on Windows and only when using UTF-8 - database encoding. The same fix was made for all other cases - over two years ago, but Windows with UTF-8 uses a separate code - path that was not updated. If you are using a locale that - considers some non-identical strings as equal, you may need to - <command>REINDEX</command> to fix existing indexes on textual columns. - </para> - </listitem> - - <listitem> - <para> - Repair potential deadlock between concurrent <command>VACUUM FULL</command> - operations on different system catalogs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</command> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</command> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</command> command will not see any - row in <structname>pg_listener</structname> for the <command>LISTEN</command>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>LISTEN</command> and <command>UNLISTEN</command> within a - prepared transaction (Tom) - </para> - - <para> - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an <command>UNLISTEN</command> remained uncommitted. - </para> - </listitem> - - <listitem> - <para> - Disallow dropping a temporary table within a - prepared transaction (Heikki) - </para> - - <para> - This was correctly disallowed by 8.1, but the check was inadvertently - broken in 8.2. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks in certain usages of set-returning functions (Neil) - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</quote> error in some variants of - <command>ALTER OWNER</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <structname>pg_stat_activity</structname>.<structfield>waiting</structfield> flag - is cleared when a lock wait is aborted (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix handling of process permissions on Windows Vista (Dave, Magnus) - </para> - - <para> - In particular, this fix allows starting the server as the Administrator - user. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - <literal>VET</literal> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</literal> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</option> to defend against possible misoptimization - in recent <application>gcc</application> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</productname> - with <application>gcc</application> 4.3 or later. - </para> - </listitem> - - - <listitem> - <para> - Correctly enforce <varname>statement_timeout</varname> values longer - than <literal>INT_MAX</literal> microseconds (about 35 minutes) (Tom) - </para> - - <para> - This bug affects only builds with <option>--enable-integer-datetimes</option>. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unexpected PARAM_SUBLINK ID</quote> planner error when - constant-folding simplifies a sub-select (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logical errors in constraint-exclusion handling of <literal>IS - NULL</literal> and <literal>NOT</literal> expressions (Tom) - </para> - - <para> - The planner would sometimes exclude partitions that should not - have been excluded because of the possibility of NULL results. - </para> - </listitem> - - <listitem> - <para> - Fix another cause of <quote>failed to build any N-way joins</quote> - planner errors (Tom) - </para> - - <para> - This could happen in cases where a clauseless join needed to be - forced before a join clause could be exploited. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect constant propagation in outer-join planning (Tom) - </para> - - <para> - The planner could sometimes incorrectly conclude that a variable - could be constrained to be equal to a constant, leading - to wrong query results. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</literal> - and <literal>GROUP BY</literal> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</application> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-6"> - <title>Release 8.2.6</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.5, - including fixes for significant security issues. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.6</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</command>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>, - and <command>CLUSTER</command>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a - <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</filename> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 8.2.5 was incomplete, as it plugged - the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Fix bugs in WAL replay for GIN indexes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix GIN index build to work properly when - <varname>maintenance_work_mem</varname> is 4GB or more (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2007k - (in particular, recent Argentina changes) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve planner's handling of LIKE/regex estimation in non-C locales - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planning-speed problem for deep outer-join nests, as well as - possible poor choice of join order (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE TABLE ... SERIAL</command> and - <command>ALTER SEQUENCE ... OWNED BY</command> not change the - <function>currval()</function> state of the sequence (Tom) - </para> - </listitem> - - <listitem> - <para> - Preserve the tablespace and storage parameters of indexes that are - rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - </para> - - <para> - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - </para> - </listitem> - - <listitem> - <para> - Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</function> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>corr()</function> return the correct result for negative - correlation values (Neil) - </para> - </listitem> - - <listitem> - <para> - Fix overflow in <literal>extract(epoch from interval)</literal> for intervals - exceeding 68 years (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to not fail when a UTF-8 regular expression is used - in a trusted function (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal> - as <literal>int</literal> rather than <literal>char</literal> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>macOS</productname> 10.5. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to work correctly with Python 2.5 on 64-bit machines - (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</application> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</application> crash when <varname>PGPASSFILE</varname> refers - to a file that is not a plain file (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</application> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pgcrypto</filename> defend against - <application>OpenSSL</application> libraries that fail on keys longer than 128 - bits; which is the case at least on some Solaris versions (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</type> and <type>tsquery</type> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</productname> to be used - when re-generating the <command>configure</command> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</productname> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - <listitem> - <para> - Update <function>gettimeofday</function> configuration check so that - <productname>PostgreSQL</productname> can be built on newer versions of - <productname>MinGW</productname> (Magnus) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-5"> - <title>Release 8.2.5</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.4. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.5</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</command> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>ALTER DOMAIN ADD CONSTRAINT</literal> for cases involving - domains over domains (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some planner problems with outer joins, notably poor - size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</literal> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow the <type>interval</type> data type to accept input consisting only of - milliseconds or microseconds (Neil) - </para> - </listitem> - - <listitem> - <para> - Allow timezone name to appear before the year in <type>timestamp</type> input (Tom) - </para> - </listitem> - - <listitem> - <para> - Fixes for <acronym>GIN</acronym> indexes used by <filename>/contrib/tsearch2</filename> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Speed up rtree index insertion (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</acronym> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</varname> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of some foreign-key corner cases (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>stddev_pop(numeric)</function> and <function>var_pop(numeric)</function> (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>REINDEX</command> and <command>CLUSTER</command> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - </para> - </listitem> - - <listitem> - <para> - Windows socket and semaphore improvements (Magnus) - </para> - </listitem> - - <listitem> - <para> - Make <command>pg_ctl -w</command> work properly in Windows service mode (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Fix memory allocation bug when using <application>MIT Kerberos</application> on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</filename> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - <listitem> - <para> - Restrict <filename>/contrib/pgstattuple</filename> functions to superusers, for security reasons (Tom) - </para> - </listitem> - - <listitem> - <para> - Do not let <filename>/contrib/intarray</filename> try to make its GIN opclass - the default (this caused problems at dump/restore) (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-4"> - <title>Release 8.2.4</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.3, - including a security fix. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.4</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</varname>, and disable searching it for functions - and operators (Tom) - </para> - - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</varname>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</command> for more information. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>shared_preload_libraries</varname> for Windows - by forcing reload in each backend (Korry Douglas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char()</function> so it properly upper/lower cases localized day or month - names (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</filename> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require <command>COMMIT PREPARED</command> to be executed in the same - database as the transaction was prepared in (Heikki) - </para> - </listitem> - - <listitem> - <para> - Allow <command>pg_dump</command> to do binary backups larger than two gigabytes - on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - New traditional (Taiwan) Chinese <acronym>FAQ</acronym> (Zhou Daojing) - </para> - </listitem> - - <listitem> - <para> - Prevent the statistics collector from writing to disk too frequently (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles - <command>UPDATE</command> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix bug in domains that use array types (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <command>pg_dump</command> so it can dump a serial column's sequence - using <option>-t</option> when not also dumping the owning table - (Tom) - </para> - </listitem> - - <listitem> - <para> - Planner fixes, including improving outer join and bitmap scan - selection logic (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible wrong answers or crash when a PL/pgSQL function tries - to <literal>RETURN</literal> from within an <literal>EXCEPTION</literal> block - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-3"> - <title>Release 8.2.3</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-07</para> - </formalpara> - - <para> - This release contains two fixes from 8.2.2. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.3</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - </para> - </listitem> - - <listitem> - <para> - Fix optimization so MIN/MAX in subqueries can again use indexes (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-2"> - <title>Release 8.2.2</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.1, including - a security fix. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.2</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - </para> - - <para> - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix not-so-rare-anymore bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix Borland C compile scripts (L Bayuk) - </para> - </listitem> - - <listitem> - <para> - Properly handle <function>to_char('CC')</function> for years ending in - <literal>00</literal> (Tom) - </para> - - <para> - Year 2000 is in the twentieth century, not the twenty-first. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</filename> localization improvements (Tatsuo, Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect permission check in - <literal>information_schema.key_column_usage</literal> view (Tom) - </para> - - <para> - The symptom is <quote>relation with OID nnnnn does not exist</quote> errors. - To get this fix without using <command>initdb</command>, use <command>CREATE OR - REPLACE VIEW</command> to install the corrected definition found in - <filename>share/information_schema.sql</filename>. Note you will need to do - this in each database. - </para> - </listitem> - - <listitem> - <para> - Improve <command>VACUUM</command> performance for databases with many tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potentially incorrect results from index searches using - <literal>ROW</literal> inequality conditions (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bogus <quote>permission denied</quote> failures occurring on Windows - due to attempts to fsync already-deleted files (Magnus, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug that could cause the statistics collector - to hang on Windows (Magnus) - </para> - - <para> - This would in turn lead to autovacuum not working. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when an already-in-use PL/pgSQL function is - updated (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible errors in processing PL/pgSQL exception blocks (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-1"> - <title>Release 8.2.1</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2"/>. - </para> - - <sect2> - <title>Migration to Version 8.2.1</title> - - <para> - A dump/restore is not required for those running 8.2. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix crash with <literal>SELECT</literal> ... <literal>LIMIT ALL</literal> (also - <literal>LIMIT NULL</literal>) (Tom) - </para> - </listitem> - - <listitem> - <para> - <filename>Several /contrib/tsearch2</filename> fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - On Windows, make log messages coming from the operating system use - <acronym>ASCII</acronym> encoding (Hiroshi Saito) - </para> - - <para> - This fixes a conversion problem when there is a mismatch between - the encoding of the operating system and database server. - </para> - </listitem> - - <listitem> - <para> - Fix Windows linking of <application>pg_dump</application> using - <filename>win32.mak</filename> - (Hiroshi Saito) - </para> - </listitem> - - <listitem> - <para> - Fix planner mistakes for outer join queries (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix several problems in queries involving sub-SELECTs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in SPI during subtransaction abort (Tom) - </para> - - <para> - This affects all PL functions since they all use SPI. - </para> - </listitem> - - <listitem> - <para> - Improve build speed of <acronym>PDF</acronym> documentation (Peter) - </para> - </listitem> - - <listitem> - <para> - Re-add <acronym>JST</acronym> (Japan) timezone abbreviation (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization decisions related to index scans (Tom) - </para> - </listitem> - - <listitem> - <para> - Have <application>psql</application> print multi-byte combining characters as - before, rather than output as <literal>\u</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</application> <literal>\d</literal> performance also. - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_dumpall</application> assume that databases have public - <literal>CONNECT</literal> privilege, when dumping from a pre-8.2 server (Tom) - </para> - - <para> - This preserves the previous behavior that anyone can connect to a - database if allowed by <filename>pg_hba.conf</filename>. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2"> - <title>Release 8.2</title> - - <formalpara> - <title>Release date:</title> - <para>2006-12-05</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - This release adds many functionality and performance improvements that - were requested by users, including: - - <itemizedlist> - - <listitem> - <para> - Query language enhancements including <command>INSERT/UPDATE/DELETE - RETURNING</command>, multirow <literal>VALUES</literal> lists, and - optional target-table alias in - <command>UPDATE</command>/<command>DELETE</command> - </para> - </listitem> - - <listitem> - <para> - Index creation without blocking concurrent - <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command> - operations - </para> - </listitem> - - <listitem> - <para> - Many query optimization improvements, including support for - reordering outer joins - </para> - </listitem> - - <listitem> - <para> - Improved sorting performance with lower memory usage - </para> - </listitem> - - <listitem> - <para> - More efficient locking with better concurrency - </para> - </listitem> - - <listitem> - <para> - More efficient vacuuming - </para> - </listitem> - - <listitem> - <para> - Easier administration of warm standby servers - </para> - </listitem> - - <listitem> - <para> - New <literal>FILLFACTOR</literal> support for tables and indexes - </para> - </listitem> - - <listitem> - <para> - Monitoring, logging, and performance tuning additions - </para> - </listitem> - - <listitem> - <para> - More control over creating and dropping objects - </para> - </listitem> - - <listitem> - <para> - Table inheritance relationships can be defined - for and removed from pre-existing tables - </para> - </listitem> - - <listitem> - <para> - <command>COPY TO</command> can copy the output of an arbitrary - <command>SELECT</command> statement - </para> - </listitem> - - <listitem> - <para> - Array improvements, including nulls in arrays - </para> - </listitem> - - <listitem> - <para> - Aggregate-function improvements, including multiple-input - aggregates and SQL:2003 statistical functions - </para> - </listitem> - - <listitem> - <para> - Many <filename>contrib/</filename> improvements - </para> - </listitem> - - </itemizedlist> - - </para> - - </sect2> - - <sect2> - <title>Migration to Version 8.2</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - - <listitem> - <para> - Set <link - linkend="guc-escape-string-warning"><varname>escape_string_warning</varname></link> - to <literal>on</literal> by default (Bruce) - </para> - - <para> - This issues a warning if backslash escapes are used in - <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</literal>) - strings</link>. - </para> - </listitem> - - <listitem> - <para> - Change the <link linkend="sql-syntax-row-constructors">row - constructor syntax</link> (<literal>ROW(...)</literal>) so that - list elements <literal>foo.*</literal> will be expanded to a list - of their member fields, rather than creating a nested - row type field as formerly (Tom) - </para> - - <para> - The new behavior is substantially more useful since it - allows, for example, triggers to check for data changes - with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</literal>. - The old behavior is still available by omitting <literal>.*</literal>. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="row-wise-comparison">row comparisons</link> - follow <acronym>SQL</acronym> standard semantics and allow them - to be used in index scans (Tom) - </para> - - <para> - Previously, row = and <> comparisons followed the - standard but < <= > >= did not. A row comparison - can now be used as an index constraint for a multicolumn - index matching the row value. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</optional> NULL</literal></link> - tests follow <acronym>SQL</acronym> standard semantics (Tom) - </para> - - <para> - The former behavior conformed to the standard for simple cases - with <literal>IS NULL</literal>, but <literal>IS NOT NULL</literal> would return - true if any row field was non-null, whereas the standard says it - should return true only when all fields are non-null. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="sql-set-constraints"><command>SET - CONSTRAINT</command></link> affect only one constraint (Kris Jurka) - </para> - - <para> - In previous releases, <command>SET CONSTRAINT</command> modified - all constraints with a matching name. In this release, - the schema search path is used to modify only the first - matching constraint. A schema specification is also - supported. This more nearly conforms to the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Remove <literal>RULE</literal> permission for tables, for security reasons - (Tom) - </para> - - <para> - As of this release, only a table's owner can create or modify - rules for the table. For backwards compatibility, - <command>GRANT</command>/<command>REVOKE RULE</command> is still accepted, - but it does nothing. - </para> - </listitem> - - <listitem> - <para> - Array comparison improvements (Tom) - </para> - - <para> - Now array dimensions are also compared. - </para> - </listitem> - - <listitem> - <para> - Change <link linkend="functions-array">array concatenation</link> - to match documented behavior (Tom) - </para> - - <para> - This changes the previous behavior where concatenation - would modify the array lower bound. - </para> - </listitem> - - <listitem> - <para> - Make command-line options of <application>postmaster</application> - and <link linkend="app-postgres"><application>postgres</application></link> - identical (Peter) - </para> - - <para> - This allows the postmaster to pass arguments to each backend - without using <literal>-o</literal>. Note that some options are now - only available as long-form options, because there were conflicting - single-letter options. - </para> - </listitem> - - <listitem> - <para> - Deprecate use of <application>postmaster</application> symbolic link (Peter) - </para> - - <para> - <application>postmaster</application> and <application>postgres</application> - commands now act identically, with the behavior determined - by command-line options. The <application>postmaster</application> symbolic link is - kept for compatibility, but is not really needed. - </para> - </listitem> - - <listitem> - <para> - Change <link - linkend="guc-log-duration"><varname>log_duration</varname></link> - to output even if the query is not output (Tom) - </para> - - <para> - In prior releases, <varname>log_duration</varname> only printed if - the query appeared earlier in the log. - </para> - </listitem> - - <listitem> - <para> - Make <link - linkend="functions-formatting"><function>to_char(time)</function></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</function></link> - treat <literal>HH</literal> and <literal>HH12</literal> as 12-hour - intervals - </para> - - <para> - Most applications should use <literal>HH24</literal> unless they - want a 12-hour display. - </para> - </listitem> - - <listitem> - <para> - Zero unmasked bits in conversion from <link - linkend="datatype-inet"><type>INET</type></link> to <link - linkend="datatype-inet"><type>CIDR</type></link> (Tom) - </para> - - <para> - This ensures that the converted value is actually valid for - <type>CIDR</type>. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>australian_timezones</varname> configuration variable - (Joachim Wieland) - </para> - - <para> - This variable has been superseded by a more general facility - for configuring timezone abbreviations. - </para> - </listitem> - - <listitem> - <para> - Improve cost estimation for nested-loop index scans (Tom) - </para> - - <para> - This might eliminate the need to set unrealistically small - values of <link - linkend="guc-random-page-cost"><varname>random_page_cost</varname></link>. - If you have been using a very small <varname>random_page_cost</varname>, - please recheck your test cases. - </para> - </listitem> - - <listitem> - <para> - Change behavior of <command>pg_dump</command> <literal>-n</literal> and - <literal>-t</literal> options. (Greg Sabino Mullane) - </para> - <para> - See the <command>pg_dump</command> manual page for details. - </para> - </listitem> - - <listitem> - <para> - Change <link linkend="libpq"><application>libpq</application></link> - <function>PQdsplen()</function> to return a useful value (Martijn - van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Declare <link linkend="libpq"><application>libpq</application></link> - <function>PQgetssl()</function> as returning <literal>void *</literal>, - rather than <literal>SSL *</literal> (Martijn van Oosterhout) - </para> - - <para> - This allows applications to use the function without including - the OpenSSL headers. - </para> - </listitem> - - <listitem> - <para> - C-language loadable modules must now include a - <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link> - macro call for version compatibility checking - (Martijn van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - For security's sake, modules used by a PL/PerlU function are no - longer available to PL/Perl functions (Andrew) - </para> - <note> - <para> - This also implies that data can no longer be shared between a PL/Perl - function and a PL/PerlU function. - Some Perl installations have not been compiled with the correct flags - to allow multiple interpreters to exist within a single process. - In this situation PL/Perl and PL/PerlU cannot both be used in a - single backend. The solution is to get a Perl installation which - supports multiple interpreters. - </para> - </note> - </listitem> - - <listitem> - <para> - In <filename>contrib/xml2/</filename>, rename <function>xml_valid()</function> to - <function>xml_is_well_formed()</function> (Tom) - </para> - - <para> - <function>xml_valid()</function> will remain for backward compatibility, - but its behavior will change to do schema checking in a future - release. - </para> - </listitem> - - <listitem> - <para> - Remove <filename>contrib/ora2pg/</filename>, now at <ulink - url="http://www.samse.fr/GPL/ora2pg"></ulink> - </para> - </listitem> - - <listitem> - <para> - Remove contrib modules that have been migrated to PgFoundry: - <filename>adddepend</filename>, <filename>dbase</filename>, <filename>dbmirror</filename>, - <filename>fulltextindex</filename>, <filename>mac</filename>, <filename>userlock</filename> - </para> - </listitem> - - <listitem> - <para> - Remove abandoned contrib modules: - <filename>mSQL-interface</filename>, <filename>tips</filename> - </para> - </listitem> - - <listitem> - <para> - Remove <acronym>QNX</acronym> and <acronym>BEOS</acronym> ports (Bruce) - </para> - - <para> - These ports no longer had active maintainers. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the - changes between <productname>PostgreSQL</productname> 8.2 and - the previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - - <listitem> - <para> - Allow the planner to reorder <link linkend="queries-join">outer - joins</link> in some circumstances (Tom) - </para> - - <para> - In previous releases, outer joins would always be evaluated in - the order written in the query. This change allows the - query optimizer to consider reordering outer joins, in cases where - it can determine that the join order can be changed without - altering the meaning of the query. This can make a - considerable performance difference for queries involving - multiple outer joins or mixed inner and outer joins. - </para> - </listitem> - - <listitem> - <para> - Improve efficiency of <link - linkend="functions-comparisons"><literal>IN</literal> - (list-of-expressions)</link> clauses (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve sorting speed and reduce memory usage (Simon, Tom) - </para> - </listitem> - - <listitem> - <para> - Improve subtransaction performance (Alvaro, Itagaki Takahiro, - Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>FILLFACTOR</literal> to <link - linkend="sql-createtable">table</link> and <link - linkend="sql-createindex">index</link> creation (ITAGAKI - Takahiro) - </para> - - <para> - This leaves extra free space in each table or index page, - allowing improved performance as the database grows. This - is particularly valuable to maintain clustering. - </para> - </listitem> - - <listitem> - <para> - Increase default values for <link - linkend="guc-shared-buffers"><varname>shared_buffers</varname></link> - and <varname>max_fsm_pages</varname> - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Improve locking performance by breaking the lock manager tables into - sections - (Tom) - </para> - - <para> - This allows locking to be more fine-grained, reducing - contention. - </para> - </listitem> - - <listitem> - <para> - Reduce locking requirements of sequential scans (Qingqing - Zhou) - </para> - </listitem> - - <listitem> - <para> - Reduce locking required for database creation and destruction - (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve the optimizer's selectivity estimates for <link - linkend="functions-like"><literal>LIKE</literal></link>, <link - linkend="functions-like"><literal>ILIKE</literal></link>, and - <link linkend="functions-posix-regexp">regular expression</link> - operations (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve planning of joins to <link linkend="ddl-inherit">inherited - tables</link> and <link linkend="queries-union"><literal>UNION - ALL</literal></link> views (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="guc-constraint-exclusion">constraint - exclusion</link> to be applied to <link - linkend="ddl-inherit">inherited</link> <command>UPDATE</command> and - <command>DELETE</command> queries (Tom) - </para> - - <para> - <command>SELECT</command> already honored constraint exclusion. - </para> - </listitem> - - <listitem> - <para> - Improve planning of constant <literal>WHERE</literal> clauses, such as - a condition that depends only on variables inherited from an - outer query level (Tom) - </para> - </listitem> - - <listitem> - <para> - Protocol-level unnamed prepared statements are re-planned - for each set of <literal>BIND</literal> values (Tom) - </para> - - <para> - This improves performance because the exact parameter values - can be used in the plan. - </para> - </listitem> - - <listitem> - <para> - Speed up vacuuming of B-Tree indexes (Heikki Linnakangas, - Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid extra scan of tables without indexes during <link - linkend="sql-vacuum"><command>VACUUM</command></link> (Greg Stark) - </para> - </listitem> - - <listitem> - <para> - Improve multicolumn <link linkend="gist"><acronym>GiST</acronym></link> - indexing (Oleg, Teodor) - </para> - </listitem> - - <listitem> - <para> - Remove dead index entries before B-Tree page split (Junji - Teramoto) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow a forced switch to a new transaction log file (Simon, Tom) - </para> - - <para> - This is valuable for keeping warm standby slave servers - in sync with the master. Transaction log file switching now also happens - automatically during <link - linkend="functions-admin"><function>pg_stop_backup()</function></link>. - This ensures that all - transaction log files needed for recovery can be archived immediately. - </para> - </listitem> - - <listitem> - <para> - Add <acronym>WAL</acronym> informational functions (Simon) - </para> - - <para> - Add functions for interrogating the current transaction log insertion - point and determining <acronym>WAL</acronym> filenames from the - hex <acronym>WAL</acronym> locations displayed by <link - linkend="functions-admin"><function>pg_stop_backup()</function></link> - and related functions. - </para> - </listitem> - - <listitem> - <para> - Improve recovery from a crash during <acronym>WAL</acronym> replay (Simon) - </para> - - <para> - The server now does periodic checkpoints during <acronym>WAL</acronym> - recovery, so if there is a crash, future <acronym>WAL</acronym> - recovery is shortened. This also eliminates the need for - warm standby servers to replay the entire log since the - base backup if they crash. - </para> - </listitem> - - <listitem> - <para> - Improve reliability of long-term <acronym>WAL</acronym> replay - (Heikki, Simon, Tom) - </para> - - <para> - Formerly, trying to roll forward through more than 2 billion - transactions would not work due to XID wraparound. This meant - warm standby servers had to be reloaded - from fresh base backups periodically. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="guc-archive-timeout"><varname>archive_timeout</varname></link> - to force transaction log file switches at a given interval (Simon) - </para> - - <para> - This enforces a maximum replication delay for warm standby servers. - </para> - </listitem> - - <listitem> - <para> - Add native <link linkend="auth-ldap"><acronym>LDAP</acronym></link> - authentication (Magnus Hagander) - </para> - - <para> - This is particularly useful for platforms that do not - support <acronym>PAM</acronym>, such as Windows. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-grant-description-objects"><literal>GRANT - CONNECT ON DATABASE</literal></link> (Gevik Babakhani) - </para> - - <para> - This gives SQL-level control over database access. It works as - an additional filter on top of the existing - <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link> - controls. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="ssl-tcp"><acronym>SSL</acronym> - Certificate Revocation List</link> (<acronym>CRL</acronym>) files - (Libor Hohoš) - </para> - - <para> - The server and <application>libpq</application> both recognize <acronym>CRL</acronym> - files now. - </para> - </listitem> - - <listitem> - <para> - <link linkend="gist"><acronym>GiST</acronym></link> indexes are - now clusterable (Teodor) - </para> - </listitem> - - <listitem> - <para> - Remove routine autovacuum server log entries (Bruce) - </para> - - <para> - <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link> - now shows autovacuum activity. - </para> - </listitem> - - <listitem> - <para> - Track maximum XID age within individual tables, instead of whole databases (Alvaro) - </para> - - <para> - This reduces the overhead involved in preventing transaction - ID wraparound, by avoiding unnecessary VACUUMs. - </para> - </listitem> - - <listitem> - <para> - Add last vacuum and analyze timestamp columns to the stats - collector (Larry Rosenman) - </para> - - <para> - These values now appear in the <link - linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</literal></link> - system views. - </para> - </listitem> - - <listitem> - <para> - Improve performance of statistics monitoring, especially - <varname>stats_command_string</varname> - (Tom, Bruce) - </para> - - <para> - This release enables <varname>stats_command_string</varname> by - default, now that its overhead is minimal. This means - <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link> - will now show all active queries by default. - </para> - </listitem> - - <listitem> - <para> - Add a <literal>waiting</literal> column to <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link> - (Tom) - </para> - - <para> - This allows <structname>pg_stat_activity</structname> to show all the - information included in the <application>ps</application> display. - </para> - </listitem> - - <listitem> - <para> - Add configuration parameter <link - linkend="guc-update-process-title"><varname>update_process_title</varname></link> - to control whether the <application>ps</application> display is updated - for every command (Bruce) - </para> - - <para> - On platforms where it is expensive to update the <application>ps</application> - display, it might be worthwhile to turn this off and rely solely on - <structname>pg_stat_activity</structname> for status information. - </para> - </listitem> - - <listitem> - <para> - Allow units to be specified in configuration settings - (Peter) - </para> - - <para> - For example, you can now set <link - linkend="guc-shared-buffers"><varname>shared_buffers</varname></link> - to <literal>32MB</literal> rather than mentally converting sizes. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="config-setting">include - directives</link> in <filename>postgresql.conf</filename> (Joachim - Wieland) - </para> - </listitem> - - <listitem> - <para> - Improve logging of protocol-level prepare/bind/execute - messages (Bruce, Tom) - </para> - - <para> - Such logging now shows statement names, bind parameter - values, and the text of the query being executed. Also, - the query text is properly included in logged error messages - when enabled by <varname>log_min_error_statement</varname>. - </para> - </listitem> - - <listitem> - <para> - Prevent <link - linkend="guc-max-stack-depth"><varname>max_stack_depth</varname></link> - from being set to unsafe values - </para> - - <para> - On platforms where we can determine the actual kernel stack depth - limit (which is most), make sure that the initial default value of - <varname>max_stack_depth</varname> is safe, and reject attempts to set it - to unsafely large values. - </para> - </listitem> - - <listitem> - <para> - Enable highlighting of error location in query in more - cases (Tom) - </para> - - <para> - The server is now able to report a specific error location for - some semantic errors (such as unrecognized column name), rather - than just for basic syntax errors as before. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</quote> errors in - <command>VACUUM</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean out <filename>pg_internal.init</filename> cache files during server - restart (Simon) - </para> - - <para> - This avoids a hazard that the cache files might contain stale - data after PITR recovery. - </para> - </listitem> - - <listitem> - <para> - Fix race condition for truncation of a large relation across a - gigabyte boundary by <command>VACUUM</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug causing needless deadlock errors on row-level locks (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Each backend process is now its own process group leader (Tom) - </para> - - <para> - This allows query cancel to abort subprocesses invoked from a - backend or archive/recovery process. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Query Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link linkend="sql-insert"><command>INSERT</command></link>/<link - linkend="sql-update"><command>UPDATE</command></link>/<link - linkend="sql-delete"><command>DELETE</command></link> - <literal>RETURNING</literal> (Jonah Harris, Tom) - </para> - - <para> - This allows these commands to return values, such as the - computed serial key for a new row. In the <command>UPDATE</command> - case, values from the updated version of the row are returned. - </para> - </listitem> - - <listitem> - <para> - Add support for multiple-row <link - linkend="queries-values"><literal>VALUES</literal></link> clauses, - per SQL standard (Joe, Tom) - </para> - - <para> - This allows <command>INSERT</command> to insert multiple rows of - constants, or queries to generate result sets using constants. - For example, <literal>INSERT ... VALUES (...), (...), - ....</literal>, and <literal>SELECT * FROM (VALUES (...), (...), - ....) AS alias(f1, ...)</literal>. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-update"><command>UPDATE</command></link> - and <link linkend="sql-delete"><command>DELETE</command></link> - to use an alias for the target table (Atsushi Ogawa) - </para> - - <para> - The SQL standard does not permit an alias in these commands, but - many database systems allow one anyway for notational convenience. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-update"><command>UPDATE</command></link> - to set multiple columns with a list of values (Susanne - Ebrecht) - </para> - - <para> - This is basically a short-hand for assigning the columns - and values in pairs. The syntax is <literal>UPDATE tab - SET (<replaceable>column</replaceable>, ...) = (<replaceable>val</replaceable>, ...)</literal>. - </para> - </listitem> - - <listitem> - <para> - Make row comparisons work per standard (Tom) - </para> - - <para> - The forms <, <=, >, >= now compare rows lexicographically, - that is, compare the first elements, if equal compare the second - elements, and so on. Formerly they expanded to an AND condition - across all the elements, which was neither standard nor very useful. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-truncate"><literal>CASCADE</literal></link> - option to <command>TRUNCATE</command> (Joachim Wieland) - </para> - - <para> - This causes <command>TRUNCATE</command> to automatically include all tables - that reference the specified table(s) via foreign keys. While - convenient, this is a dangerous tool — use with caution! - </para> - </listitem> - - <listitem> - <para> - Support <literal>FOR UPDATE</literal> and <literal>FOR SHARE</literal> - in the same <link linkend="sql-insert"><literal>SELECT</literal></link> - command (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="functions-comparisons"><literal>IS NOT - DISTINCT FROM</literal></link> (Pavel Stehule) - </para> - - <para> - This operator is similar to equality (<literal>=</literal>), but - evaluates to true when both left and right operands are - <literal>NULL</literal>, and to false when just one is, rather than - yielding <literal>NULL</literal> in these cases. - </para> - </listitem> - - <listitem> - <para> - Improve the length output used by <link - linkend="queries-union"><literal>UNION</literal></link>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal> - (Tom) - </para> - - <para> - When all corresponding columns are of the same defined length, that - length is used for the result, rather than a generic length. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="functions-like"><literal>ILIKE</literal></link> - to work for multi-byte encodings (Tom) - </para> - - <para> - Internally, <literal>ILIKE</literal> now calls <function>lower()</function> - and then uses <literal>LIKE</literal>. Locale-specific regular - expression patterns still do not work in these encodings. - </para> - </listitem> - - <listitem> - <para> - Enable <link - linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</varname></link> - to be turned <literal>on</literal> (Kevin Grittner) - </para> - - <para> - This allows backslash escaping in strings to be disabled, - making <productname>PostgreSQL</productname> more - standards-compliant. The default is <literal>off</literal> for backwards - compatibility, but future releases will default this to <literal>on</literal>. - </para> - </listitem> - - <listitem> - <para> - Do not flatten subqueries that contain <literal>volatile</literal> - functions in their target lists (Jaime Casanova) - </para> - - <para> - This prevents surprising behavior due to multiple evaluation - of a <literal>volatile</literal> function (such as <function>random()</function> - or <function>nextval()</function>). It might cause performance - degradation in the presence of functions that are unnecessarily - marked as <literal>volatile</literal>. - </para> - </listitem> - - <listitem> - <para> - Add system views <link - linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</literal></link> - and <link - linkend="view-pg-cursors"><literal>pg_cursors</literal></link> - to show prepared statements and open cursors (Joachim Wieland, Neil) - </para> - - <para> - These are very useful in pooled connection setups. - </para> - </listitem> - - <listitem> - <para> - Support portal parameters in <link - linkend="sql-explain"><command>EXPLAIN</command></link> and <link - linkend="sql-execute"><command>EXECUTE</command></link> (Tom) - </para> - - <para> - This allows, for example, <acronym>JDBC</acronym> <literal>?</literal> parameters to - work in these commands. - </para> - </listitem> - - <listitem> - <para> - If <acronym>SQL</acronym>-level <link - linkend="sql-prepare"><command>PREPARE</command></link> parameters - are unspecified, infer their types from the content of the - query (Neil) - </para> - - <para> - Protocol-level <command>PREPARE</command> already did this. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>LIMIT</literal> and <literal>OFFSET</literal> to exceed - two billion (Dhanaraj M) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>TABLESPACE</literal> clause to <link - linkend="sql-createtableas"><command>CREATE TABLE AS</command></link> - (Neil) - </para> - - <para> - This allows a tablespace to be specified for the new table. - </para> - </listitem> - - <listitem> - <para> - Add <literal>ON COMMIT</literal> clause to <link - linkend="sql-createtableas"><command>CREATE TABLE AS</command></link> - (Neil) - </para> - - <para> - This allows temporary tables to be truncated or dropped on - transaction commit. The default behavior is for the table - to remain until the session ends. - </para> - </listitem> - - <listitem> - <para> - Add <literal>INCLUDING CONSTRAINTS</literal> to <link - linkend="sql-createtable"><command>CREATE TABLE LIKE</command></link> - (Greg Stark) - </para> - - <para> - This allows easy copying of <literal>CHECK</literal> constraints to a new - table. - </para> - </listitem> - - <listitem> - <para> - Allow the creation of placeholder (shell) <link - linkend="sql-createtype">types</link> (Martijn van Oosterhout) - </para> - - <para> - A shell type declaration creates a type name, without specifying - any of the details of the type. Making a shell type is useful - because it allows cleaner declaration of the type's input/output - functions, which must exist before the type can be defined <quote>for - real</quote>. The syntax is <command>CREATE TYPE <replaceable - class="parameter">typename</replaceable></command>. - </para> - </listitem> - - <listitem> - <para> - <link linkend="sql-createaggregate">Aggregate functions</link> - now support multiple input parameters (Sergey Koposov, Tom) - </para> - </listitem> - - <listitem> - <para> - Add new aggregate creation <link - linkend="sql-createaggregate">syntax</link> (Tom) - </para> - - <para> - The new syntax is <command>CREATE AGGREGATE - <replaceable>aggname</replaceable> (<replaceable>input_type</replaceable>) - (<replaceable>parameter_list</replaceable>)</command>. This more - naturally supports the new multi-parameter aggregate - functionality. The previous syntax is still supported. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="sql-alterrole"><command>ALTER ROLE PASSWORD NULL</command></link> - to remove a previously set role password (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <command>DROP</command> object <literal>IF EXISTS</literal> for many - object types (Andrew) - </para> - - <para> - This allows <command>DROP</command> operations on non-existent - objects without generating an error. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-drop-owned"><literal>DROP OWNED</literal></link> - to drop all objects owned by a role (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-reassign-owned"><literal>REASSIGN - OWNED</literal></link> to reassign ownership of all objects owned - by a role (Alvaro) - </para> - - <para> - This, and <literal>DROP OWNED</literal> above, facilitate dropping - roles. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-grant"><command>GRANT ON SEQUENCE</command></link> - syntax (Bruce) - </para> - - <para> - This was added for setting sequence-specific permissions. - <literal>GRANT ON TABLE</literal> for sequences is still supported - for backward compatibility. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-grant"><literal>USAGE</literal></link> - permission for sequences that allows only <function>currval()</function> - and <function>nextval()</function>, not <function>setval()</function> - (Bruce) - </para> - - <para> - <literal>USAGE</literal> permission allows more fine-grained - control over sequence access. Granting <literal>USAGE</literal> - allows users to increment - a sequence, but prevents them from setting the sequence to - an arbitrary value using <function>setval()</function>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-altertable"><literal>ALTER TABLE - [ NO ] INHERIT</literal></link> (Greg Stark) - </para> - - <para> - This allows inheritance to be adjusted dynamically, rather than - just at table creation and destruction. This is very valuable - when using inheritance to implement table partitioning. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-comment">comments</link> on global - objects to be stored globally (Kris Jurka) - </para> - - <para> - Previously, comments attached to databases were stored in individual - databases, making them ineffective, and there was no provision - at all for comments on roles or tablespaces. This change adds a new - shared catalog <link - linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link> - and stores comments on databases, roles, and tablespaces therein. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> - - <listitem> - <para> - Add option to allow indexes to be created without blocking - concurrent writes to the table (Greg Stark, Tom) - </para> - - <para> - The new syntax is <link linkend="sql-createindex"><command>CREATE - INDEX CONCURRENTLY</command></link>. The default behavior is - still to block table modification while an index is being - created. - </para> - </listitem> - - <listitem> - <para> - Provide <link linkend="functions-advisory-locks">advisory - locking</link> functionality (Abhijit Menon-Sen, Tom) - </para> - - <para> - This is a new locking API designed to replace what used to be - in /contrib/userlock. The userlock code is now on pgfoundry. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-copy"><command>COPY</command></link> to - dump a <command>SELECT</command> query (Zoltan Boszormenyi, Karel - Zak) - </para> - - <para> - This allows <command>COPY</command> to dump arbitrary <acronym>SQL</acronym> - queries. The syntax is <literal>COPY (SELECT ...) TO</literal>. - </para> - </listitem> - - <listitem> - <para> - Make the <link linkend="sql-copy"><command>COPY</command></link> - command return a command tag that includes the number of - rows copied (Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-vacuum"><command>VACUUM</command></link> - to expire rows without being affected by other concurrent - <command>VACUUM</command> operations (Hannu Krossing, Alvaro, Tom) - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="app-initdb"><application>initdb</application></link> - detect the operating system locale and set the default - <varname>DateStyle</varname> accordingly (Peter) - </para> - - <para> - This makes it more likely that the installed - <filename>postgresql.conf</filename> <varname>DateStyle</varname> value will - be as desired. - </para> - </listitem> - - <listitem> - <para> - Reduce number of progress messages displayed by <application>initdb</application> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Date/Time Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow full timezone names in <link - linkend="datatype-datetime"><type>timestamp</type></link> input values - (Joachim Wieland) - </para> - - <para> - For example, <literal>'2006-05-24 21:11 - America/New_York'::timestamptz</literal>. - </para> - </listitem> - - <listitem> - <para> - Support configurable timezone abbreviations (Joachim Wieland) - </para> - - <para> - A desired set of timezone abbreviations can be chosen via the - configuration parameter <link - linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</varname></link>. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</varname></link> - and <link - linkend="view-pg-timezone-names"><varname>pg_timezone_names</varname></link> - views to show supported timezones (Magnus Hagander) - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="functions-datetime-table"><function>clock_timestamp()</function></link>, - <link - linkend="functions-datetime-table"><function>statement_timestamp()</function></link>, - and <link - linkend="functions-datetime-table"><function>transaction_timestamp()</function></link> - (Bruce) - </para> - - <para> - <function>clock_timestamp()</function> is the current wall-clock time, - <function>statement_timestamp()</function> is the time the current - statement arrived at the server, and - <function>transaction_timestamp()</function> is an alias for - <function>now()</function>. - </para> - </listitem> - - <listitem> - <para> - Allow <link - linkend="functions-formatting"><function>to_char()</function></link> - to print localized month and day names (Euler Taveira de - Oliveira) - </para> - </listitem> - - <listitem> - <para> - Allow <link - linkend="functions-formatting"><function>to_char(time)</function></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</function></link> - to output <acronym>AM</acronym>/<acronym>PM</acronym> specifications - (Bruce) - </para> - - <para> - Intervals and times are treated as 24-hour periods, e.g. - <literal>25 hours</literal> is considered <acronym>AM</acronym>. - </para> - </listitem> - - <listitem> - <para> - Add new function <link - linkend="functions-datetime-table"><function>justify_interval()</function></link> - to adjust interval units (Mark Dilger) - </para> - </listitem> - - <listitem> - <para> - Allow timezone offsets up to 14:59 away from GMT - </para> - - <para> - Kiribati uses GMT+14, so we'd better accept that. - </para> - </listitem> - - <listitem> - <para> - Interval computation improvements (Michael Glaesemann, Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Other Data Type and Function Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow arrays to contain <literal>NULL</literal> elements (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow assignment to array elements not contiguous with the existing - entries (Tom) - </para> - - <para> - The intervening array positions will be filled with nulls. - This is per SQL standard. - </para> - </listitem> - - <listitem> - <para> - New built-in <link linkend="functions-array">operators</link> - for array-subset comparisons (<literal>@></literal>, - <literal><@</literal>, <literal>&&</literal>) (Teodor, Tom) - </para> - - <para> - These operators can be indexed for many data types using - <acronym>GiST</acronym> or <acronym>GIN</acronym> indexes. - </para> - </listitem> - - <listitem> - <para> - Add convenient arithmetic <link - linkend="cidr-inet-operators-table">operations</link> on - <type>INET</type>/<type>CIDR</type> values (Stephen R. van den - Berg) - </para> - - <para> - The new operators are <literal>&</literal> (and), <literal>|</literal> - (or), <literal>~</literal> (not), <type>inet</type> <literal>+</literal> <type>int8</type>, - <type>inet</type> <literal>-</literal> <type>int8</type>, and - <type>inet</type> <literal>-</literal> <type>inet</type>. - </para> - </listitem> - - <listitem> - <para> - Add new <link - linkend="functions-aggregate-statistics-table">aggregate functions</link> - from SQL:2003 (Neil) - </para> - - <para> - The new functions are <function>var_pop()</function>, - <function>var_samp()</function>, <function>stddev_pop()</function>, and - <function>stddev_samp()</function>. <function>var_samp()</function> and - <function>stddev_samp()</function> are merely renamings of the - existing aggregates <function>variance()</function> and - <function>stddev()</function>. The latter names remain available - for backward compatibility. - </para> - </listitem> - - <listitem> - <para> - Add SQL:2003 statistical <link - linkend="functions-aggregate-statistics-table">aggregates</link> - (Sergey Koposov) - </para> - - <para> - New functions: <function>regr_intercept()</function>, - <function>regr_slope()</function>, <function>regr_r2()</function>, - <function>corr()</function>, <function>covar_samp()</function>, - <function>covar_pop()</function>, <function>regr_avgx()</function>, - <function>regr_avgy()</function>, <function>regr_sxy()</function>, - <function>regr_sxx()</function>, <function>regr_syy()</function>, - <function>regr_count()</function>. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="sql-createdomain">domains</link> to be - based on other domains (Tom) - </para> - </listitem> - - <listitem> - <para> - Properly enforce domain <link - linkend="ddl-constraints"><literal>CHECK</literal></link> constraints - everywhere (Neil, Tom) - </para> - - <para> - For example, the result of a user-defined function that is - declared to return a domain type is now checked against the - domain's constraints. This closes a significant hole in the domain - implementation. - </para> - </listitem> - - <listitem> - <para> - Fix problems with dumping renamed <link - linkend="datatype-serial"><type>SERIAL</type></link> columns - (Tom) - </para> - - <para> - The fix is to dump a <type>SERIAL</type> column by explicitly - specifying its <literal>DEFAULT</literal> and sequence elements, - and reconstructing the <type>SERIAL</type> column on reload - using a new <link linkend="sql-altersequence"><command>ALTER - SEQUENCE OWNED BY</command></link> command. This also allows - dropping a <type>SERIAL</type> column specification. - </para> - </listitem> - - <listitem> - <para> - Add a server-side sleep function <link - linkend="functions-datetime-delay"><function>pg_sleep()</function></link> - (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add all comparison operators for the <link - linkend="datatype-oid"><type>tid</type></link> (tuple id) data - type (Mark Kirkwood, Greg Stark, Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/pgSQL Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>TG_table_name</literal> and <literal>TG_table_schema</literal> to - trigger parameters (Andrew) - </para> - - <para> - <literal>TG_relname</literal> is now deprecated. Comparable - changes have been made in the trigger parameters for the other - PLs as well. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>FOR</literal> statements to return values to scalars - as well as records and row types (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - Add a <literal>BY</literal> clause to the <literal>FOR</literal> loop, - to control the iteration increment (Jaime Casanova) - </para> - </listitem> - - <listitem> - <para> - Add <literal>STRICT</literal> to <link - linkend="plpgsql-statements-sql-onerow"><command>SELECT - INTO</command></link> (Matt Miller) - </para> - - <para> - <literal>STRICT</literal> mode throws an exception if more or less - than one row is returned by the <command>SELECT</command>, for - <productname>Oracle PL/SQL</productname> compatibility. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/Perl Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>table_name</literal> and <literal>table_schema</literal> to - trigger parameters (Adam Sjøgren) - </para> - </listitem> - - <listitem> - <para> - Add prepared queries (Dmitry Karasik) - </para> - </listitem> - - <listitem> - <para> - Make <literal>$_TD</literal> trigger data a global variable (Andrew) - </para> - - <para> - Previously, it was lexical, which caused unexpected sharing - violations. - </para> - </listitem> - - <listitem> - <para> - Run PL/Perl and PL/PerlU in separate interpreters, for security - reasons (Andrew) - </para> - <para> - In consequence, they can no longer share data nor loaded modules. - Also, if Perl has not been compiled with the requisite flags to - allow multiple interpreters, only one of these languages can be used - in any given backend process. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/Python Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Named parameters are passed as ordinary variables, as well as in the - <literal>args[]</literal> array (Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Add <literal>table_name</literal> and <literal>table_schema</literal> to - trigger parameters (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow returning of composite types and result sets (Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Return result-set as <literal>list</literal>, <literal>iterator</literal>, - or <literal>generator </literal>(Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Allow functions to return <literal>void</literal> (Neil) - </para> - </listitem> - - <listitem> - <para> - Python 2.5 is now supported (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="app-psql"><application>psql</application></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add new command <literal>\password</literal> for changing role - password with client-side password encryption (Peter) - </para> - </listitem> - - <listitem> - <para> - Allow <literal>\c</literal> to connect to a new host and port - number (David, Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Add tablespace display to <literal>\l+</literal> (Philip Yarra) - </para> - </listitem> - - <listitem> - <para> - Improve <literal>\df</literal> slash command to include the argument - names and modes (<literal>OUT</literal> or <literal>INOUT</literal>) of - the function (David Fetter) - </para> - </listitem> - - <listitem> - <para> - Support binary <command>COPY</command> (Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Add option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</literal> or <literal>--single-transaction</literal>. - </para> - </listitem> - - <listitem> - <para> - Support for automatically retrieving <command>SELECT</command> - results in batches using a cursor (Chris Mair) - </para> - - <para> - This is enabled using <command>\set FETCH_COUNT - <replaceable>n</replaceable></command>. This - feature allows large result sets to be retrieved in - <application>psql</application> without attempting to buffer the entire - result set in memory. - </para> - </listitem> - - <listitem> - <para> - Make multi-line values align in the proper column - (Martijn van Oosterhout) - </para> - - <para> - Field values containing newlines are now displayed in a more - readable fashion. - </para> - </listitem> - - <listitem> - <para> - Save multi-line statements as a single entry, rather than - one line at a time (Sergey E. Koposov) - </para> - - <para> - This makes up-arrow recall of queries easier. (This is - not available on Windows, because that platform uses the native - command-line editing present in the operating system.) - </para> - </listitem> - - <listitem> - <para> - Make the line counter 64-bit so it can handle files with more - than two billion lines (David Fetter) - </para> - </listitem> - - <listitem> - <para> - Report both the returned data and the command status tag - for <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE - RETURNING</command> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="app-pgdump"><application>pg_dump</application></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow complex selection of objects to be included or excluded - by <application>pg_dump</application> (Greg Sabino Mullane) - </para> - - <para> - <application>pg_dump</application> now supports multiple <literal>-n</literal> - (schema) and <literal>-t</literal> (table) options, and adds - <literal>-N</literal> and <literal>-T</literal> options to exclude objects. - Also, the arguments of these switches can now be wild-card expressions - rather than single object names, for example - <literal>-t 'foo*'</literal>, and a schema can be part of - a <literal>-t</literal> or <literal>-T</literal> switch, for example - <literal>-t schema1.table1</literal>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="app-pgrestore"><application>pg_restore</application></link> - <literal>--no-data-for-failed-tables</literal> option to suppress - loading data if table creation failed (i.e., the table already - exists) (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="app-pgrestore"><application>pg_restore</application></link> - option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</literal> or <literal>--single-transaction</literal>. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="libpq"><application>libpq</application></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link - linkend="libpq-misc"><function>PQencryptPassword()</function></link> - to encrypt passwords (Tom) - </para> - - <para> - This allows passwords to be sent pre-encrypted for commands - like <link linkend="sql-alterrole"><command>ALTER ROLE ... - PASSWORD</command></link>. - </para> - </listitem> - - <listitem> - <para> - Add function <link - linkend="libpq-threading"><function>PQisthreadsafe()</function></link> - (Bruce) - </para> - - <para> - This allows applications to query the thread-safety status - of the library. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="libpq-exec-main"><function>PQdescribePrepared()</function></link>, - <link - linkend="libpq-exec-main"><function>PQdescribePortal()</function></link>, - and related functions to return information about previously - prepared statements and open cursors (Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="libpq-ldap"><acronym>LDAP</acronym></link> lookups - from <link - linkend="libpq-pgservice"><filename>pg_service.conf</filename></link> - (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Allow a hostname in <link - linkend="libpq-pgpass"><filename>~/.pgpass</filename></link> - to match the default socket directory (Bruce) - </para> - - <para> - A blank hostname continues to match any Unix-socket connection, - but this addition allows entries that are specific to one of - several postmasters on the machine. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="ecpg"><application>ecpg</application></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <link linkend="sql-show"><command>SHOW</command></link> to - put its result into a variable (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-copy"><command>COPY TO STDOUT</command></link> - (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add regression tests (Joachim Wieland, Michael) - </para> - </listitem> - - <listitem> - <para> - Major source code cleanups (Joachim Wieland, Michael) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><application>Windows</application> Port</title> - <itemizedlist> - - <listitem> - <para> - Allow <acronym>MSVC</acronym> to compile the <productname>PostgreSQL</productname> - server (Magnus, Hiroshi Saito) - </para> - </listitem> - - <listitem> - <para> - Add <acronym>MSVC</acronym> support for utility commands and <link - linkend="app-pgdump"><application>pg_dump</application></link> (Hiroshi - Saito) - </para> - </listitem> - - <listitem> - <para> - Add support for Windows code pages <literal>1253</literal>, - <literal>1254</literal>, <literal>1255</literal>, and <literal>1257</literal> - (Kris Jurka) - </para> - </listitem> - - <listitem> - <para> - Drop privileges on startup, so that the server can be started from - an administrative account (Magnus) - </para> - </listitem> - - <listitem> - <para> - Stability fixes (Qingqing Zhou, Magnus) - </para> - </listitem> - - <listitem> - <para> - Add native semaphore implementation (Qingqing Zhou) - </para> - - <para> - The previous code mimicked SysV semaphores. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Source Code Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link linkend="gin"><acronym>GIN</acronym></link> (Generalized - Inverted iNdex) index access method (Teodor, Oleg) - </para> - </listitem> - - <listitem> - <para> - Remove R-tree indexing (Tom) - </para> - - <para> - Rtree has been re-implemented using <link - linkend="gist"><acronym>GiST</acronym></link>. Among other - differences, this means that rtree indexes now have support - for crash recovery via write-ahead logging (WAL). - </para> - </listitem> - - <listitem> - <para> - Reduce libraries needlessly linked into the backend (Martijn - van Oosterhout, Tom) - </para> - </listitem> - - <listitem> - <para> - Add a configure flag to allow libedit to be preferred over - <acronym>GNU</acronym> readline (Bruce) - </para> - - <para> - Use configure <link - linkend="configure"><literal>--with-libedit-preferred</literal></link>. - </para> - </listitem> - - <listitem> - <para> - Allow installation into directories containing spaces - (Peter) - </para> - </listitem> - - <listitem> - <para> - Improve ability to relocate installation directories (Tom) - </para> - </listitem> - - <listitem> - <para> - Add support for <productname>Solaris x86_64</productname> using the - <productname>Solaris</productname> compiler (Pierre Girard, Theo - Schlossnagle, Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <application>DTrace</application> support (Robert Lor) - </para> - </listitem> - - <listitem> - <para> - Add <literal>PG_VERSION_NUM</literal> for use by third-party - applications wanting to test the backend version in C using > - and < comparisons (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>XLOG_BLCKSZ</literal> as independent from <literal>BLCKSZ</literal> - (Mark Wong) - </para> - </listitem> - - <listitem> - <para> - Add <literal>LWLOCK_STATS</literal> define to report locking - activity (Tom) - </para> - </listitem> - - <listitem> - <para> - Emit warnings for unknown <application>configure</application> options - (Martijn van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Add server support for <quote>plugin</quote> libraries - that can be used for add-on tasks such as debugging and performance - measurement (Korry Douglas) - </para> - - <para> - This consists of two features: a table of <quote>rendezvous - variables</quote> that allows separately-loaded shared libraries to - communicate, and a new configuration parameter <link - linkend="guc-local-preload-libraries"><varname>local_preload_libraries</varname></link> - that allows libraries to be loaded into specific sessions without - explicit cooperation from the client application. This allows - external add-ons to implement features such as a PL/pgSQL debugger. - </para> - </listitem> - - <listitem> - <para> - Rename existing configuration parameter - <varname>preload_libraries</varname> to <link - linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</varname></link> - (Tom) - </para> - - <para> - This was done for clarity in comparison to - <varname>local_preload_libraries</varname>. - </para> - </listitem> - - <listitem> - <para> - Add new configuration parameter <link - linkend="guc-server-version-num"><varname>server_version_num</varname></link> - (Greg Sabino Mullane) - </para> - - <para> - This is like <varname>server_version</varname>, but is an - integer, e.g. <literal>80200</literal>. This allows applications to - make version checks more easily. - </para> - </listitem> - - <listitem> - <para> - Add a configuration parameter <link - linkend="guc-seq-page-cost"><varname>seq_page_cost</varname></link> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Re-implement the <link linkend="regress">regression test</link> script as a C program - (Magnus, Tom) - </para> - </listitem> - - <listitem> - <para> - Allow loadable modules to allocate shared memory and - lightweight locks (Marc Munro) - </para> - </listitem> - - <listitem> - <para> - Add automatic initialization and finalization of dynamically - loaded libraries (Ralf Engelschall, Tom) - </para> - - <para> - New <link linkend="xfunc-c-dynload">functions</link> - <function>_PG_init()</function> and <function>_PG_fini()</function> are - called if the library defines such symbols. Hence we no - longer need to specify an initialization function in - <varname>shared_preload_libraries</varname>; we can assume that - the library used the <function>_PG_init()</function> convention - instead. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link> - header block to all shared object files (Martijn van - Oosterhout) - </para> - - <para> - The magic block prevents version mismatches between loadable object - files and servers. - </para> - </listitem> - - <listitem> - <para> - Add shared library support for AIX (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - New <link linkend="datatype-xml"><acronym>XML</acronym></link> - documentation section (Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Contrib Changes</title> - <itemizedlist> - - <listitem> - <para> - Major tsearch2 improvements (Oleg, Teodor) - </para> - - <itemizedlist> - - <listitem> - <para> - multibyte encoding support, including <acronym>UTF8</acronym> - </para> - </listitem> - <listitem> - <para> - query rewriting support - </para> - </listitem> - <listitem> - <para> - improved ranking functions - </para> - </listitem> - <listitem> - <para> - thesaurus dictionary support - </para> - </listitem> - <listitem> - <para> - Ispell dictionaries now recognize <application>MySpell</application> - format, used by <application>OpenOffice</application> - </para> - </listitem> - <listitem> - <para> - <acronym>GIN</acronym> support - </para> - </listitem> - - </itemizedlist> - - </listitem> - - <listitem> - <para> - Add adminpack module containing <application>Pgadmin</application> administration - functions (Dave) - </para> - - <para> - These functions provide additional file system access - routines not present in the default <productname>PostgreSQL</productname> - server. - </para> - </listitem> - - <listitem> - <para> - Add sslinfo module (Victor Wagner) - </para> - - <para> - Reports information about the current connection's <acronym>SSL</acronym> - certificate. - </para> - </listitem> - - <listitem> - <para> - Add pgrowlocks module (Tatsuo) - </para> - - <para> - This shows row locking information for a specified table. - </para> - </listitem> - - <listitem> - <para> - Add hstore module (Oleg, Teodor) - </para> - </listitem> - - <listitem> - <para> - Add isn module, replacing isbn_issn (Jeremy Kronuz) - </para> - - <para> - This new implementation supports <acronym>EAN13</acronym>, <acronym>UPC</acronym>, - <acronym>ISBN</acronym> (books), <acronym>ISMN</acronym> (music), and - <acronym>ISSN</acronym> (serials). - </para> - </listitem> - - <listitem> - <para> - Add index information functions to pgstattuple (ITAGAKI Takahiro, - Satoshi Nagayasu) - </para> - </listitem> - - <listitem> - <para> - Add pg_freespacemap module to display free space map information - (Mark Kirkwood) - </para> - </listitem> - - <listitem> - <para> - pgcrypto now has all planned functionality (Marko Kreen) - </para> - <itemizedlist> - <listitem> - <para> - Include iMath library in pgcrypto to have the public-key encryption - functions always available. - </para> - </listitem> - <listitem> - <para> - Add SHA224 algorithm that was missing in OpenBSD code. - </para> - </listitem> - <listitem> - <para> - Activate builtin code for SHA224/256/384/512 hashes on older - OpenSSL to have those algorithms always available. - </para> - </listitem> - <listitem> - <para> - New function gen_random_bytes() that returns cryptographically strong - randomness. Useful for generating encryption keys. - </para> - </listitem> - <listitem> - <para> - Remove digest_exists(), hmac_exists() and cipher_exists() functions. - </para> - </listitem> - </itemizedlist> - </listitem> - - <listitem> - <para> - Improvements to cube module (Joshua Reich) - </para> - - <para> - New functions are <function>cube(float[])</function>, - <function>cube(float[], float[])</function>, and - <function>cube_subset(cube, int4[])</function>. - </para> - </listitem> - - <listitem> - <para> - Add async query capability to dblink (Kai Londenberg, - Joe Conway) - </para> - </listitem> - - <listitem> - <para> - New operators for array-subset comparisons (<literal>@></literal>, - <literal><@</literal>, <literal>&&</literal>) (Tom) - </para> - - <para> - Various contrib packages already had these operators for their - datatypes, but the naming wasn't consistent. We have now added - consistently named array-subset comparison operators to the core code - and all the contrib packages that have such functionality. - (The old names remain available, but are deprecated.) - </para> - </listitem> - - <listitem> - <para> - Add uninstall scripts for all contrib packages that have install - scripts (David, Josh Drake) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - </sect2> - </sect1> |